From 8949819396513b864fe2a3e400b4498022af2e9b Mon Sep 17 00:00:00 2001 From: Jackson Roberts Date: Wed, 25 Feb 2026 22:28:07 -0600 Subject: [PATCH] add CatalogItem migration and CI schema drift check --- .github/workflows/build-and-publish.yaml | 23 +++++++ .../migration.sql | 63 +++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 prisma/migrations/20260226042803_add_catalog_item/migration.sql diff --git a/.github/workflows/build-and-publish.yaml b/.github/workflows/build-and-publish.yaml index 52f518d..a67cdb6 100644 --- a/.github/workflows/build-and-publish.yaml +++ b/.github/workflows/build-and-publish.yaml @@ -5,8 +5,31 @@ on: types: [created] jobs: + check-migrations: + name: Check for Missing Migrations + runs-on: ubuntu-latest + steps: + - name: Checkout source code + uses: actions/checkout@v4 + + - name: Setup Bun + uses: oven-sh/setup-bun@v2 + + - name: Install dependencies + run: bun install --frozen-lockfile + + - name: Check for schema drift + run: | + bunx prisma migrate diff \ + --from-migrations prisma/migrations \ + --to-schema-datamodel prisma/schema.prisma \ + --exit-code + env: + DATABASE_URL: "postgresql://dummy:dummy@localhost:5432/dummy" + build: name: Build + needs: [check-migrations] runs-on: ubuntu-latest permissions: contents: read diff --git a/prisma/migrations/20260226042803_add_catalog_item/migration.sql b/prisma/migrations/20260226042803_add_catalog_item/migration.sql new file mode 100644 index 0000000..235c5b9 --- /dev/null +++ b/prisma/migrations/20260226042803_add_catalog_item/migration.sql @@ -0,0 +1,63 @@ +-- CreateTable +CREATE TABLE "UnifiSite" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "siteId" TEXT NOT NULL, + "companyId" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "UnifiSite_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "CatalogItem" ( + "id" TEXT NOT NULL, + "cwCatalogId" INTEGER NOT NULL, + "name" TEXT NOT NULL, + "description" TEXT, + "customerDescription" TEXT, + "internalNotes" TEXT, + "manufacturer" TEXT, + "manufactureCwId" INTEGER, + "partNumber" TEXT, + "vendorName" TEXT, + "vendorSku" TEXT, + "vendorCwId" INTEGER, + "price" DOUBLE PRECISION NOT NULL, + "cost" DOUBLE PRECISION NOT NULL, + "inactive" BOOLEAN NOT NULL DEFAULT false, + "salesTaxable" BOOLEAN NOT NULL DEFAULT true, + "onHand" INTEGER NOT NULL DEFAULT 0, + "cwLastUpdated" TIMESTAMP(3), + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "CatalogItem_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "_LinkedItems" ( + "A" TEXT NOT NULL, + "B" TEXT NOT NULL, + + CONSTRAINT "_LinkedItems_AB_pkey" PRIMARY KEY ("A","B") +); + +-- CreateIndex +CREATE UNIQUE INDEX "UnifiSite_siteId_key" ON "UnifiSite"("siteId"); + +-- CreateIndex +CREATE UNIQUE INDEX "CatalogItem_cwCatalogId_key" ON "CatalogItem"("cwCatalogId"); + +-- CreateIndex +CREATE INDEX "_LinkedItems_B_index" ON "_LinkedItems"("B"); + +-- AddForeignKey +ALTER TABLE "UnifiSite" ADD CONSTRAINT "UnifiSite_companyId_fkey" FOREIGN KEY ("companyId") REFERENCES "Company"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_LinkedItems" ADD CONSTRAINT "_LinkedItems_A_fkey" FOREIGN KEY ("A") REFERENCES "CatalogItem"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_LinkedItems" ADD CONSTRAINT "_LinkedItems_B_fkey" FOREIGN KEY ("B") REFERENCES "CatalogItem"("id") ON DELETE CASCADE ON UPDATE CASCADE;