export function withTranslation<T extends AnyTable, TT extends AnyTable</* How to type this to enforce certain columns, e.g. "locale"? */>>(
event: RequestEvent | ServerLoadEvent,
table: T,
translationsTable: TT,
join: { field: ValueOf<T['_']['columns']>; reference: ValueOf<TT['_']['columns']> }
) {
return dbpool.$with('tt').as((db) =>
db
.select({
...getTableColumns(table),
...getTableColumns(translationsTable),
})
.from(table)
.leftJoin(
translationsTable,
and(
eq(translationsTable.locale, event.locals.locale),
// ^^^^^^Property "locale" does not exist on type TT
eq(join.field, join.reference))
)
);
}
export function withTranslation<T extends AnyTable, TT extends AnyTable</* How to type this to enforce certain columns, e.g. "locale"? */>>(
event: RequestEvent | ServerLoadEvent,
table: T,
translationsTable: TT,
join: { field: ValueOf<T['_']['columns']>; reference: ValueOf<TT['_']['columns']> }
) {
return dbpool.$with('tt').as((db) =>
db
.select({
...getTableColumns(table),
...getTableColumns(translationsTable),
})
.from(table)
.leftJoin(
translationsTable,
and(
eq(translationsTable.locale, event.locals.locale),
// ^^^^^^Property "locale" does not exist on type TT
eq(join.field, join.reference))
)
);
}