46 lines
1.6 KiB
YAML
46 lines
1.6 KiB
YAML
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();
|