const baseMysqlTable = <TColumnsMap extends Record<string, AnyMySqlColumnBuilder>>(name: string, columns: TColumnsMap) => {
return mysqlTable(name, {
...columns,
id: int('id').primaryKey().autoincrement().notNull(),
updatedAt: timestamp('updated_at').onUpdateNow(),
createdAt: timestamp('created_at').defaultNow(),
deletedAt: timestamp('deleted_at')
});
};
type BaseMysqlTable = InferModel<typeof baseMysqlTable>;
const withPagination = async <S extends AnyMySqlSelect, T extends BaseMysqlTable>(qb: S, table: T, offset = 0, limit = 10) => {
const data = await qb.offset(offset).limit(limit).orderBy(desc(table.id));
// const count = await db.select(sql<number>`count(${table.id})`).from(table);
return {
data,
offset,
limit,
// total: count[0]
}
}
const baseMysqlTable = <TColumnsMap extends Record<string, AnyMySqlColumnBuilder>>(name: string, columns: TColumnsMap) => {
return mysqlTable(name, {
...columns,
id: int('id').primaryKey().autoincrement().notNull(),
updatedAt: timestamp('updated_at').onUpdateNow(),
createdAt: timestamp('created_at').defaultNow(),
deletedAt: timestamp('deleted_at')
});
};
type BaseMysqlTable = InferModel<typeof baseMysqlTable>;
const withPagination = async <S extends AnyMySqlSelect, T extends BaseMysqlTable>(qb: S, table: T, offset = 0, limit = 10) => {
const data = await qb.offset(offset).limit(limit).orderBy(desc(table.id));
// const count = await db.select(sql<number>`count(${table.id})`).from(table);
return {
data,
offset,
limit,
// total: count[0]
}
}