apiVersion: v1 kind: ConfigMap metadata: name: {{ .Release.Name }}-add-missing-tables namespace: {{ .Values.global.namespace }} data: add-tables.sql: | -- Create grocery lists table CREATE TABLE IF NOT EXISTS grocery_lists ( id SERIAL PRIMARY KEY, name TEXT NOT NULL, items TEXT[] NOT NULL DEFAULT '{}', owner_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, is_pinned BOOLEAN DEFAULT FALSE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- Create grocery list shares table CREATE TABLE IF NOT EXISTS grocery_list_shares ( id SERIAL PRIMARY KEY, list_id INTEGER NOT NULL REFERENCES grocery_lists(id) ON DELETE CASCADE, shared_with_user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, can_edit BOOLEAN DEFAULT FALSE, shared_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, UNIQUE(list_id, shared_with_user_id) ); CREATE INDEX IF NOT EXISTS idx_grocery_lists_owner_id ON grocery_lists (owner_id); CREATE INDEX IF NOT EXISTS idx_grocery_list_shares_list_id ON grocery_list_shares (list_id); CREATE INDEX IF NOT EXISTS idx_grocery_list_shares_user_id ON grocery_list_shares (shared_with_user_id); -- Create notifications table CREATE TABLE IF NOT EXISTS notifications ( id SERIAL PRIMARY KEY, user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, type TEXT NOT NULL, message TEXT NOT NULL, related_id INTEGER, is_read BOOLEAN DEFAULT FALSE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE INDEX IF NOT EXISTS idx_notifications_user_id ON notifications (user_id); CREATE INDEX IF NOT EXISTS idx_notifications_is_read ON notifications (is_read);