fix: add setup route to create tables
This commit is contained in:
parent
e2b9ef6df3
commit
30ac75beda
1 changed files with 102 additions and 0 deletions
102
src/app/api/setup/route.ts
Normal file
102
src/app/api/setup/route.ts
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
import { NextResponse } from "next/server";
|
||||
import { db } from "@/db";
|
||||
import { sql } from "drizzle-orm/postgres";
|
||||
|
||||
export async function GET() {
|
||||
try {
|
||||
// Create types
|
||||
await db.execute(sql`CREATE TYPE IF NOT EXISTS child_sex AS ENUM('male', 'female', 'other')`);
|
||||
await db.execute(sql`CREATE TYPE IF NOT EXISTS child_stage AS ENUM('newborn', 'infant', 'solids_start', 'toddler_early', 'toddler_late', 'preschool')`);
|
||||
await db.execute(sql`CREATE TYPE IF NOT EXISTS member_role AS ENUM('admin', 'caregiver', 'viewer')`);
|
||||
|
||||
// Create tables
|
||||
await db.execute(sql`
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
name text,
|
||||
email text NOT NULL UNIQUE,
|
||||
email_verified timestamp,
|
||||
image text,
|
||||
created_at timestamp DEFAULT now() NOT NULL,
|
||||
updated_at timestamp DEFAULT now() NOT NULL
|
||||
)
|
||||
`);
|
||||
|
||||
await db.execute(sql`
|
||||
CREATE TABLE IF NOT EXISTS accounts (
|
||||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
user_id uuid NOT NULL,
|
||||
type text NOT NULL,
|
||||
provider text NOT NULL,
|
||||
provider_account_id text NOT NULL,
|
||||
refresh_token text,
|
||||
access_token text,
|
||||
expires_at timestamp,
|
||||
token_type text,
|
||||
scope text,
|
||||
id_token text,
|
||||
session_state text
|
||||
)
|
||||
`);
|
||||
|
||||
await db.execute(sql`
|
||||
CREATE TABLE IF NOT EXISTS sessions (
|
||||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
session_token text NOT NULL UNIQUE,
|
||||
user_id uuid NOT NULL,
|
||||
expires timestamp NOT NULL
|
||||
)
|
||||
`);
|
||||
|
||||
await db.execute(sql`
|
||||
CREATE TABLE IF NOT EXISTS verification_tokens (
|
||||
identifier text NOT NULL,
|
||||
token text NOT NULL,
|
||||
expires timestamp NOT NULL,
|
||||
PRIMARY KEY (identifier, token)
|
||||
)
|
||||
`);
|
||||
|
||||
await db.execute(sql`
|
||||
CREATE TABLE IF NOT EXISTS families (
|
||||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
name text DEFAULT 'The Gupta Family' NOT NULL,
|
||||
pediatrician_phone text,
|
||||
created_at timestamp DEFAULT now() NOT NULL,
|
||||
updated_at timestamp DEFAULT now() NOT NULL
|
||||
)
|
||||
`);
|
||||
|
||||
await db.execute(sql`
|
||||
CREATE TABLE IF NOT EXISTS family_members (
|
||||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
family_id uuid NOT NULL,
|
||||
user_id uuid NOT NULL,
|
||||
role member_role DEFAULT 'caregiver' NOT NULL,
|
||||
display_name text NOT NULL,
|
||||
created_at timestamp DEFAULT now() NOT NULL,
|
||||
UNIQUE(family_id, user_id)
|
||||
)
|
||||
`);
|
||||
|
||||
await db.execute(sql`
|
||||
CREATE TABLE IF NOT EXISTS children (
|
||||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
family_id uuid NOT NULL,
|
||||
name text NOT NULL,
|
||||
birth_date timestamp NOT NULL,
|
||||
sex child_sex NOT NULL,
|
||||
current_stage child_stage,
|
||||
stage_overrides jsonb DEFAULT '{}',
|
||||
profile_photo_url text,
|
||||
created_at timestamp DEFAULT now() NOT NULL,
|
||||
updated_at timestamp DEFAULT now() NOT NULL
|
||||
)
|
||||
`);
|
||||
|
||||
return NextResponse.json({ success: true, message: "Tables created" });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return NextResponse.json({ error: String(error) }, { status: 500 });
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue