apiVersion: v1 kind: ConfigMap metadata: name: {{ include "invy.fullname" . }}-db-schema labels: {{- include "invy.labels" . | nindent 4 }} app.kubernetes.io/component: database data: init.sql: | -- Wedding Guest List Database Schema CREATE TABLE IF NOT EXISTS guests ( id SERIAL PRIMARY KEY, first_name VARCHAR(100) NOT NULL, last_name VARCHAR(100) NOT NULL, email VARCHAR(255) UNIQUE, phone_number VARCHAR(50), rsvp_status VARCHAR(20) DEFAULT 'pending' CHECK (rsvp_status IN ('pending', 'accepted', 'declined')), meal_preference VARCHAR(50), has_plus_one BOOLEAN DEFAULT FALSE, plus_one_name VARCHAR(200), owner VARCHAR(50), notes TEXT, table_number INTEGER, created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP WITH TIME ZONE ); -- Create indexes for better query performance CREATE INDEX IF NOT EXISTS idx_guests_email ON guests(email); CREATE INDEX IF NOT EXISTS idx_guests_rsvp_status ON guests(rsvp_status); CREATE INDEX IF NOT EXISTS idx_guests_last_name ON guests(last_name); CREATE INDEX IF NOT EXISTS idx_guests_owner ON guests(owner); -- Create trigger to update updated_at timestamp CREATE OR REPLACE FUNCTION update_updated_at_column() RETURNS TRIGGER AS $$ BEGIN NEW.updated_at = CURRENT_TIMESTAMP; RETURN NEW; END; $$ language 'plpgsql'; CREATE TRIGGER update_guests_updated_at BEFORE UPDATE ON guests FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();