fix: add setup route to create tables

This commit is contained in:
Manohar Gupta 2026-05-10 04:36:17 +05:30
parent e2b9ef6df3
commit 30ac75beda

102
src/app/api/setup/route.ts Normal file
View 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 });
}
}