From 64aa687b8b448cc4f31bea270627695eea02d041 Mon Sep 17 00:00:00 2001 From: Mannu Date: Sun, 10 May 2026 04:37:54 +0530 Subject: [PATCH] fix: simplify setup route --- src/app/api/setup/route.ts | 109 ++++++++++++++++--------------------- 1 file changed, 46 insertions(+), 63 deletions(-) diff --git a/src/app/api/setup/route.ts b/src/app/api/setup/route.ts index a5a2a11..fc88e12 100644 --- a/src/app/api/setup/route.ts +++ b/src/app/api/setup/route.ts @@ -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 });