Align prod schema and deploy tooling

This commit is contained in:
jjbrunton committed 2026-01-24 20:16:01 +00:00
1 parent d2db86ec7f
commit 7e2e723880
105 files changed
+19014 -131

No files matched your search

+65
View File
@@ -0,0 +1,65 @@
#!/bin/bash
# Export questions from production and generate SQL for non-prod
# Usage: ./scripts/export-questions-from-prod.sh > apps/supabase/seed-questions.sql
# Production database connection string
# Get this from Supabase Dashboard > Settings > Database > Connection string
PROD_DB_URL="${PROD_DATABASE_URL:-}"
if [ -z "$PROD_DB_URL" ]; then
echo "Error: PROD_DATABASE_URL environment variable is not set" >&2
echo "Get it from: Supabase Dashboard > Settings > Database > Connection string (URI)" >&2
exit 1
fi
echo "-- Questions exported from production"
echo "-- Generated on $(date)"
echo ""
echo "BEGIN;"
echo ""
# Export questions as SQL INSERT statements
psql "$PROD_DB_URL" -t -A -c "
SELECT 'INSERT INTO questions (id, pack_id, text, intensity, partner_text, allowed_couple_genders, target_user_genders, required_props, deleted_at, inverse_of, created_at) VALUES (' ||
quote_literal(id) || ', ' ||
quote_literal(pack_id) || ', ' ||
quote_literal(text) || ', ' ||
COALESCE(intensity::text, 'NULL') || ', ' ||
COALESCE(quote_literal(partner_text), 'NULL') || ', ' ||
COALESCE(quote_literal(allowed_couple_genders::text), 'NULL') || ', ' ||
COALESCE(quote_literal(target_user_genders::text), 'NULL') || ', ' ||
COALESCE(quote_literal(required_props::text), 'NULL') || ', ' ||
COALESCE(quote_literal(deleted_at::text), 'NULL') || ', ' ||
'NULL, ' || -- inverse_of set to NULL initially
quote_literal(created_at::text) ||
') ON CONFLICT (id) DO UPDATE SET text = EXCLUDED.text, intensity = EXCLUDED.intensity, partner_text = EXCLUDED.partner_text, allowed_couple_genders = EXCLUDED.allowed_couple_genders, target_user_genders = EXCLUDED.target_user_genders, required_props = EXCLUDED.required_props;'
FROM questions
ORDER BY pack_id, intensity;
"
echo ""
echo "-- Update inverse_of references"
# Export inverse_of updates
psql "$PROD_DB_URL" -t -A -c "
SELECT 'UPDATE questions SET inverse_of = ' || quote_literal(inverse_of) || ' WHERE id = ' || quote_literal(id) || ';'
FROM questions
WHERE inverse_of IS NOT NULL;
"
echo ""
echo "-- Insert pack_topics"
# Export pack_topics
psql "$PROD_DB_URL" -t -A -c "
SELECT 'INSERT INTO pack_topics (pack_id, topic_id) VALUES (' ||
quote_literal(pack_id) || ', ' ||
quote_literal(topic_id) ||
') ON CONFLICT DO NOTHING;'
FROM pack_topics;
"
echo ""
echo "COMMIT;"
echo ""
echo "-- Done"