Setting up db migrations

This commit is contained in:
Dominic Ferrando
2026-07-03 21:01:56 -04:00
parent f5a68f436b
commit 37ffaa282b
8 changed files with 142 additions and 35 deletions
-44
View File
@@ -1,44 +0,0 @@
import { CreateTableBuilder, sql } from "kysely";
import { db } from "./db";
import { log } from "../util";
// =====================
// PRODUCT SYNCS
// =====================
{
log.info({ name: "product_syncs" }, "Creating table");
await db.schema.dropTable("product_syncs").ifExists().execute()
await db.schema.createTable("product_syncs")
.$call(addDefaultColumns)
.addColumn("printful_product_id_filter", sql`integer[]`)
.addColumn("syncing_printful_product_ids", sql`integer[]`, (cb) => cb
.notNull()
.defaultTo(sql`'{}'::integer[]`)
)
.addColumn("started_at", "timestamptz")
.addColumn("ended_at", "timestamptz")
.addColumn("has_failed", "boolean", (cb) => cb.notNull().defaultTo(false))
.execute()
await db.schema.dropIndex("idx_one_active_product_sync").ifExists().execute();
await db.schema.createIndex("idx_one_active_product_sync")
.on("product_syncs")
.unique()
.column("ended_at")
.where(sql.ref("started_at"), "is not", null)
.where("ended_at", "is", null)
.nullsNotDistinct()
.execute();
}
function addDefaultColumns(ctb: CreateTableBuilder<any, any>) {
return ctb
.addColumn("id", "bigint", (cb) => cb
.generatedAlwaysAsIdentity()
.primaryKey()
)
.addColumn("created_at", "timestamptz", (cb) => cb
.notNull()
.defaultTo(sql`now()`)
)
};