- New Express + TypeScript backend (server/) with pg, Better Auth, local file storage - De-Supabased Postgres schema (server/db) and TS reimplementations of DB functions - Frontend data layer rewired to REST (rest-client + backend-client compat shim) - Removed all Supabase references (code, config, deps, docs) - New brand assets: gradient favicon/app icons + dark/white wordmark logos Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
53 lines
1.7 KiB
SQL
53 lines
1.7 KiB
SQL
-- Better Auth core schema (v1.x). Identifiers are camelCase and quoted to
|
|
-- match Better Auth's default field->column mapping.
|
|
|
|
CREATE TABLE IF NOT EXISTS "user" (
|
|
"id" text PRIMARY KEY,
|
|
"name" text NOT NULL DEFAULT '',
|
|
"email" text NOT NULL UNIQUE,
|
|
"emailVerified" boolean NOT NULL DEFAULT false,
|
|
"image" text,
|
|
"createdAt" timestamptz NOT NULL DEFAULT now(),
|
|
"updatedAt" timestamptz NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "session" (
|
|
"id" text PRIMARY KEY,
|
|
"expiresAt" timestamptz NOT NULL,
|
|
"token" text NOT NULL UNIQUE,
|
|
"createdAt" timestamptz NOT NULL DEFAULT now(),
|
|
"updatedAt" timestamptz NOT NULL DEFAULT now(),
|
|
"ipAddress" text,
|
|
"userAgent" text,
|
|
"userId" text NOT NULL REFERENCES "user"("id") ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "account" (
|
|
"id" text PRIMARY KEY,
|
|
"accountId" text NOT NULL,
|
|
"providerId" text NOT NULL,
|
|
"userId" text NOT NULL REFERENCES "user"("id") ON DELETE CASCADE,
|
|
"accessToken" text,
|
|
"refreshToken" text,
|
|
"idToken" text,
|
|
"accessTokenExpiresAt" timestamptz,
|
|
"refreshTokenExpiresAt" timestamptz,
|
|
"scope" text,
|
|
"password" text,
|
|
"createdAt" timestamptz NOT NULL DEFAULT now(),
|
|
"updatedAt" timestamptz NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "verification" (
|
|
"id" text PRIMARY KEY,
|
|
"identifier" text NOT NULL,
|
|
"value" text NOT NULL,
|
|
"expiresAt" timestamptz NOT NULL,
|
|
"createdAt" timestamptz NOT NULL DEFAULT now(),
|
|
"updatedAt" timestamptz NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_session_user ON "session" ("userId");
|
|
CREATE INDEX IF NOT EXISTS idx_account_user ON "account" ("userId");
|
|
CREATE INDEX IF NOT EXISTS idx_verification_identifier ON "verification" ("identifier");
|