- Add Prisma ORM with SQLite for server-side data persistence - Create UserPreferences and UsageEntry models - Add API routes for preferences and usage data CRUD operations - Update storage.ts to use fetch API calls instead of localStorage - Update components to use async data fetching - Data now persists across devices for each user account Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
33 lines
1.1 KiB
SQL
33 lines
1.1 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "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,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
"quitPlanJson" TEXT
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "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
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "UserPreferences_userId_key" ON "UserPreferences"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "UsageEntry_userId_date_substance_key" ON "UsageEntry"("userId", "date", "substance");
|