diff --git a/charts/my-recipes-chart/templates/db-schema-configmap.yaml b/charts/my-recipes-chart/templates/db-schema-configmap.yaml index ad62dec..098bd55 100644 --- a/charts/my-recipes-chart/templates/db-schema-configmap.yaml +++ b/charts/my-recipes-chart/templates/db-schema-configmap.yaml @@ -1,73 +1,50 @@ apiVersion: v1 kind: ConfigMap metadata: - name: {{ .Release.Name }}-db-migration + name: {{ .Release.Name }}-db-schema namespace: {{ .Values.global.namespace }} data: - migrate.sql: | - -- Create users table if it doesn't exist + schema.sql: | + -- Create users table CREATE TABLE IF NOT EXISTS users ( - id SERIAL PRIMARY KEY, - username TEXT UNIQUE NOT NULL, - email TEXT UNIQUE NOT NULL, - password_hash TEXT NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + id SERIAL PRIMARY KEY, + username TEXT UNIQUE NOT NULL, + email TEXT UNIQUE NOT NULL, + password_hash TEXT NOT NULL, + first_name TEXT, + last_name TEXT, + display_name TEXT NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); - -- Create recipes table if it doesn't exist (matching backend schema) - CREATE TABLE IF NOT EXISTS recipes ( - id SERIAL PRIMARY KEY, - name TEXT NOT NULL, - meal_type TEXT NOT NULL, - time_minutes INTEGER NOT NULL, - tags TEXT[] NOT NULL DEFAULT '{}', - ingredients TEXT[] NOT NULL DEFAULT '{}', - steps TEXT[] NOT NULL DEFAULT '{}', - image TEXT, - made_by TEXT, - user_id INTEGER REFERENCES users(id) ON DELETE SET NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP - ); - - -- Add user_id column if it doesn't exist (for existing recipes tables) - DO $$ - BEGIN - IF NOT EXISTS ( - SELECT 1 FROM information_schema.columns - WHERE table_name = 'recipes' AND column_name = 'user_id' - ) THEN - ALTER TABLE recipes ADD COLUMN user_id INTEGER REFERENCES users(id) ON DELETE SET NULL; - END IF; - END $$; - - -- Add created_at column to recipes if it doesn't exist - DO $$ - BEGIN - IF NOT EXISTS ( - SELECT 1 FROM information_schema.columns - WHERE table_name = 'recipes' AND column_name = 'created_at' - ) THEN - ALTER TABLE recipes ADD COLUMN created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP; - END IF; - END $$; - - -- Create indexes - CREATE INDEX IF NOT EXISTS idx_recipes_meal_type ON recipes (meal_type); - CREATE INDEX IF NOT EXISTS idx_recipes_time_minutes ON recipes (time_minutes); - CREATE INDEX IF NOT EXISTS idx_recipes_made_by ON recipes (made_by); - CREATE INDEX IF NOT EXISTS idx_recipes_user_id ON recipes (user_id); CREATE INDEX IF NOT EXISTS idx_users_username ON users (username); CREATE INDEX IF NOT EXISTS idx_users_email ON users (email); - -- Verify schema - SELECT 'Users table:' as info; - SELECT column_name, data_type - FROM information_schema.columns - WHERE table_name = 'users' - ORDER BY ordinal_position; + -- Create recipes table (matching backend schema with TEXT[] arrays) + CREATE TABLE IF NOT EXISTS recipes ( + id SERIAL PRIMARY KEY, + name TEXT NOT NULL, + meal_type TEXT NOT NULL, -- breakfast / lunch / dinner / snack + time_minutes INTEGER NOT NULL, + tags TEXT[] NOT NULL DEFAULT '{}', -- {"מהיר", "בריא"} + ingredients TEXT[] NOT NULL DEFAULT '{}', -- {"ביצה", "עגבניה", "מלח"} + steps TEXT[] NOT NULL DEFAULT '{}', -- {"לחתוך", "לבשל", ...} + image TEXT, -- Base64-encoded image or image URL + made_by TEXT, -- Person who created this recipe version + user_id INTEGER REFERENCES users(id) ON DELETE SET NULL, -- Recipe owner + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ); + + -- Indexes for filters + CREATE INDEX IF NOT EXISTS idx_recipes_meal_type + ON recipes (meal_type); + + CREATE INDEX IF NOT EXISTS idx_recipes_time_minutes + ON recipes (time_minutes); + + CREATE INDEX IF NOT EXISTS idx_recipes_made_by + ON recipes (made_by); + + CREATE INDEX IF NOT EXISTS idx_recipes_user_id + ON recipes (user_id); - SELECT 'Recipes table:' as info; - SELECT column_name, data_type - FROM information_schema.columns - WHERE table_name = 'recipes' - ORDER BY ordinal_position;