alternative enum handling
parent
35c850ddbc
commit
b8b802799e
|
|
@ -723,24 +723,25 @@ type EnumColumn = {
|
||||||
'asset.visibility': AssetVisibility;
|
'asset.visibility': AssetVisibility;
|
||||||
};
|
};
|
||||||
|
|
||||||
function enumPredicates<C extends keyof EnumColumn>(
|
type EnumValue = EnumColumn[keyof EnumColumn];
|
||||||
|
|
||||||
|
function enumPredicates(
|
||||||
eb: AssetExpressionBuilder,
|
eb: AssetExpressionBuilder,
|
||||||
column: C,
|
column: keyof EnumColumn,
|
||||||
filter: { eq?: EnumColumn[C]; ne?: EnumColumn[C]; in?: EnumColumn[C][]; notIn?: EnumColumn[C][] } = {},
|
filter: { eq?: EnumValue; ne?: EnumValue; in?: EnumValue[]; notIn?: EnumValue[] } = {},
|
||||||
) {
|
) {
|
||||||
// casts: kysely's `eb` doesn't distribute its column-value narrowing through the generic
|
|
||||||
const predicates: Expression<SqlBool>[] = [];
|
const predicates: Expression<SqlBool>[] = [];
|
||||||
if (filter.eq !== undefined) {
|
if (filter.eq !== undefined) {
|
||||||
predicates.push(eb(column, '=', filter.eq as never));
|
predicates.push(eb(column, '=', filter.eq));
|
||||||
}
|
}
|
||||||
if (filter.ne !== undefined) {
|
if (filter.ne !== undefined) {
|
||||||
predicates.push(eb(column, '<>', filter.ne as never));
|
predicates.push(eb(column, '<>', filter.ne));
|
||||||
}
|
}
|
||||||
if (filter.in !== undefined) {
|
if (filter.in !== undefined) {
|
||||||
predicates.push(eb(column, 'in', filter.in as never));
|
predicates.push(eb(column, 'in', filter.in));
|
||||||
}
|
}
|
||||||
if (filter.notIn !== undefined) {
|
if (filter.notIn !== undefined) {
|
||||||
predicates.push(eb(column, 'not in', filter.notIn as never));
|
predicates.push(eb(column, 'not in', filter.notIn));
|
||||||
}
|
}
|
||||||
return predicates;
|
return predicates;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue