122 lines
4.4 KiB
SQL
122 lines
4.4 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "Machine" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"name" TEXT NOT NULL,
|
|
"type" TEXT NOT NULL,
|
|
"relayChannel" INTEGER NOT NULL,
|
|
"defaultPriceCents" INTEGER NOT NULL,
|
|
"defaultDurationMinutes" INTEGER NOT NULL,
|
|
"outOfService" BOOLEAN NOT NULL DEFAULT false,
|
|
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Employee" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"name" TEXT NOT NULL,
|
|
"pin" TEXT NOT NULL,
|
|
"isAdmin" BOOLEAN NOT NULL DEFAULT false,
|
|
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Transaction" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"machineId" TEXT NOT NULL,
|
|
"employeeId" TEXT NOT NULL,
|
|
"amountCents" INTEGER NOT NULL,
|
|
"paymentMethod" TEXT NOT NULL,
|
|
"startedAt" DATETIME NOT NULL,
|
|
"expectedEndAt" DATETIME NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'pending_relay',
|
|
"endedAt" DATETIME,
|
|
"relayOnAttemptedAt" DATETIME,
|
|
"relayTurnedOnAt" DATETIME,
|
|
"relayOffAttemptedAt" DATETIME,
|
|
"relayTurnedOffAt" DATETIME,
|
|
"relayFailureReason" TEXT,
|
|
"voidReason" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
CONSTRAINT "Transaction_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "Machine" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
CONSTRAINT "Transaction_employeeId_fkey" FOREIGN KEY ("employeeId") REFERENCES "Employee" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "TransactionExtension" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"transactionId" TEXT NOT NULL,
|
|
"employeeId" TEXT NOT NULL,
|
|
"extraMinutes" INTEGER NOT NULL,
|
|
"extraAmountCents" INTEGER NOT NULL,
|
|
"reason" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
CONSTRAINT "TransactionExtension_transactionId_fkey" FOREIGN KEY ("transactionId") REFERENCES "Transaction" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
CONSTRAINT "TransactionExtension_employeeId_fkey" FOREIGN KEY ("employeeId") REFERENCES "Employee" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Shift" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"employeeId" TEXT NOT NULL,
|
|
"startTime" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"endTime" DATETIME,
|
|
"startingCashCents" INTEGER NOT NULL,
|
|
"expectedCashCents" INTEGER,
|
|
"actualCashCents" INTEGER,
|
|
"differenceCashCents" INTEGER,
|
|
"notes" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
CONSTRAINT "Shift_employeeId_fkey" FOREIGN KEY ("employeeId") REFERENCES "Employee" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "CashMovement" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"shiftId" TEXT NOT NULL,
|
|
"employeeId" TEXT NOT NULL,
|
|
"type" TEXT NOT NULL,
|
|
"amountCents" INTEGER NOT NULL,
|
|
"reason" TEXT NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
CONSTRAINT "CashMovement_shiftId_fkey" FOREIGN KEY ("shiftId") REFERENCES "Shift" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
CONSTRAINT "CashMovement_employeeId_fkey" FOREIGN KEY ("employeeId") REFERENCES "Employee" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "AppConfig" (
|
|
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT DEFAULT 1,
|
|
"businessName" TEXT NOT NULL DEFAULT 'La Burbuja',
|
|
"timezone" TEXT NOT NULL DEFAULT 'America/Monterrey',
|
|
"currency" TEXT NOT NULL DEFAULT 'MXN',
|
|
"serialPortPath" TEXT NOT NULL DEFAULT 'COM3',
|
|
"serialBaudRate" INTEGER NOT NULL DEFAULT 9600,
|
|
"relayMockMode" BOOLEAN NOT NULL DEFAULT true,
|
|
"relayConnected" BOOLEAN NOT NULL DEFAULT false,
|
|
"updatedAt" DATETIME NOT NULL
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Machine_name_key" ON "Machine"("name");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Machine_relayChannel_key" ON "Machine"("relayChannel");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Transaction_expectedEndAt_idx" ON "Transaction"("expectedEndAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Transaction_status_idx" ON "Transaction"("status");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Shift_startTime_idx" ON "Shift"("startTime");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "CashMovement_createdAt_idx" ON "CashMovement"("createdAt");
|
|
|