const baseTableSchema = {
id: [...],
createdAt: [...],
updatedAt: [...],
createdBy: [...],
updatedBy: [...],
}
export const createTableFactory = <
TTableName extends string,
TColumnsMap extends Record<string, PgColumnBuilderBase>,
>(
name: TTableName,
fields: TColumnsMap,
extraConfig?: (
self: BuildExtraConfigColumns<
TTableName,
TColumnsMap & typeof baseTableSchema,
"pg"
>,
) => PgTableExtraConfig,
) => {
const { id, ...baseColumns } = baseTableSchema;
return pgTable<string, TColumnsMap & typeof baseTableSchema>(
name,
{
id,
...fields,
...baseColumns,
},
extraConfig,
);
};
const baseTableSchema = {
id: [...],
createdAt: [...],
updatedAt: [...],
createdBy: [...],
updatedBy: [...],
}
export const createTableFactory = <
TTableName extends string,
TColumnsMap extends Record<string, PgColumnBuilderBase>,
>(
name: TTableName,
fields: TColumnsMap,
extraConfig?: (
self: BuildExtraConfigColumns<
TTableName,
TColumnsMap & typeof baseTableSchema,
"pg"
>,
) => PgTableExtraConfig,
) => {
const { id, ...baseColumns } = baseTableSchema;
return pgTable<string, TColumnsMap & typeof baseTableSchema>(
name,
{
id,
...fields,
...baseColumns,
},
extraConfig,
);
};