82 lines
3.0 KiB
SQL
82 lines
3.0 KiB
SQL
-- CreateTable
|
|
CREATE TABLE IF NOT EXISTS "UserPreferences" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"userId" TEXT NOT NULL,
|
|
"substance" TEXT NOT NULL DEFAULT 'nicotine',
|
|
"trackingStartDate" TEXT,
|
|
"hasCompletedSetup" BOOLEAN NOT NULL DEFAULT false,
|
|
"dailyGoal" INTEGER,
|
|
"userName" TEXT,
|
|
"userAge" INTEGER,
|
|
"religion" TEXT,
|
|
"lastNicotineUsageTime" TEXT,
|
|
"lastWeedUsageTime" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
"quitPlanJson" TEXT
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE IF NOT EXISTS "UsageEntry" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"userId" TEXT NOT NULL,
|
|
"date" TEXT NOT NULL,
|
|
"count" INTEGER NOT NULL,
|
|
"substance" TEXT NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
CONSTRAINT "UsageEntry_userId_fkey" FOREIGN KEY ("userId") REFERENCES "UserPreferences" ("userId") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE IF NOT EXISTS "Achievement" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"userId" TEXT NOT NULL,
|
|
"badgeId" TEXT NOT NULL,
|
|
"unlockedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"substance" TEXT NOT NULL,
|
|
CONSTRAINT "Achievement_userId_fkey" FOREIGN KEY ("userId") REFERENCES "UserPreferences" ("userId") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE IF NOT EXISTS "ReminderSettings" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"userId" TEXT NOT NULL,
|
|
"enabled" BOOLEAN NOT NULL DEFAULT false,
|
|
"reminderTime" TEXT NOT NULL DEFAULT '09:00',
|
|
"lastNotifiedDate" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
CONSTRAINT "ReminderSettings_userId_fkey" FOREIGN KEY ("userId") REFERENCES "UserPreferences" ("userId") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE IF NOT EXISTS "SavingsConfig" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"userId" TEXT NOT NULL,
|
|
"costPerUnit" REAL NOT NULL,
|
|
"unitsPerDay" REAL NOT NULL,
|
|
"savingsGoal" REAL,
|
|
"goalName" TEXT,
|
|
"currency" TEXT NOT NULL DEFAULT 'USD',
|
|
"substance" TEXT NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
CONSTRAINT "SavingsConfig_userId_fkey" FOREIGN KEY ("userId") REFERENCES "UserPreferences" ("userId") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "UserPreferences_userId_key" ON "UserPreferences"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "UsageEntry_userId_date_substance_key" ON "UsageEntry"("userId", "date", "substance");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "Achievement_userId_badgeId_substance_key" ON "Achievement"("userId", "badgeId", "substance");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "ReminderSettings_userId_key" ON "ReminderSettings"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "SavingsConfig_userId_key" ON "SavingsConfig"("userId");
|