fix: simplify setup route

This commit is contained in:
Manohar Gupta 2026-05-10 04:37:54 +05:30
parent 30ac75beda
commit 64aa687b8b

View file

@ -1,100 +1,83 @@
import { NextResponse } from "next/server";
import { db } from "@/db";
import { sql } from "drizzle-orm/postgres";
import postgres from "postgres";
const connectionString = process.env.DATABASE_URL!;
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')`);
const client = postgres(connectionString);
// Create tables
await db.execute(sql`
try {
await client.unsafe(`
CREATE TYPE IF NOT EXISTS child_sex AS ENUM('male', 'female', 'other');
CREATE TYPE IF NOT EXISTS child_stage AS ENUM('newborn', 'infant', 'solids_start', 'toddler_early', 'toddler_late', 'preschool');
CREATE TYPE IF NOT EXISTS member_role AS ENUM('admin', 'caregiver', 'viewer');
`);
await client.unsafe(`
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
name text, email text NOT NULL UNIQUE,
email_verified timestamp, image text,
created_at timestamp DEFAULT now(),
updated_at timestamp DEFAULT now()
)
`);
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`
await client.unsafe(`
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
user_id uuid NOT NULL, expires timestamp NOT NULL
)
`);
await db.execute(sql`
await client.unsafe(`
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 client.unsafe(`
CREATE TABLE IF NOT EXISTS verification_tokens (
identifier text NOT NULL,
token text NOT NULL,
expires timestamp NOT NULL,
PRIMARY KEY (identifier, token)
identifier text NOT NULL, token text NOT NULL,
expires timestamp NOT NULL, PRIMARY KEY (identifier, token)
)
`);
await db.execute(sql`
await client.unsafe(`
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
name text DEFAULT 'The Gupta Family', pediatrician_phone text,
created_at timestamp DEFAULT now(), updated_at timestamp DEFAULT now()
)
`);
await db.execute(sql`
await client.unsafe(`
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)
family_id uuid NOT NULL, user_id uuid NOT NULL,
role member_role DEFAULT 'caregiver', display_name text NOT NULL,
created_at timestamp DEFAULT now()
)
`);
await db.execute(sql`
await client.unsafe(`
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
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(),
updated_at timestamp DEFAULT now()
)
`);
return NextResponse.json({ success: true, message: "Tables created" });
await client.end();
return NextResponse.json({ success: true });
} catch (error) {
console.error(error);
return NextResponse.json({ error: String(error) }, { status: 500 });