Modify Table type object
i have helper function that can create SQL from cross database.
then i want to field
function extractKeys<T extends object>(obj: T) {
return Object.keys(obj) as (keyof T)[];
}
type ReturnCrossTable<T extends Table> = {
[Key in keyof T["_"]["columns"]]: string | SQLWrapper;
} & {
table: SQL;
};
export function crossDBTable<T extends Table>(
dbName: string,
data: T,
): ReturnCrossTable<T> {
const columns = getTableColumns(data);
return extractKeys(columns).reduce(
(acc, key) => {
return Object.assign(acc, {
[key]: sql.join([sql.identifier(dbName), columns[key]], sql`.`),
});
},
{
table: sql.join([sql.identifier(dbName), data], sql`.`),
},
) as ReturnCrossTable<T>;
}function extractKeys<T extends object>(obj: T) {
return Object.keys(obj) as (keyof T)[];
}
type ReturnCrossTable<T extends Table> = {
[Key in keyof T["_"]["columns"]]: string | SQLWrapper;
} & {
table: SQL;
};
export function crossDBTable<T extends Table>(
dbName: string,
data: T,
): ReturnCrossTable<T> {
const columns = getTableColumns(data);
return extractKeys(columns).reduce(
(acc, key) => {
return Object.assign(acc, {
[key]: sql.join([sql.identifier(dbName), columns[key]], sql`.`),
});
},
{
table: sql.join([sql.identifier(dbName), data], sql`.`),
},
) as ReturnCrossTable<T>;
}then i want to field
tabletable can return with type TableTable from drizzle but with table name modified.