mirror of
https://github.com/jjbrunton/Sauci.git
synced 2026-10-31 18:19:43 +00:00
Align prod schema and deploy tooling
This commit is contained in:
1 parent
d2db86ec7f
commit
7e2e723880
105 files changed
+19014
-131
No files matched your search
@@ -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"
|
||||
Reference in new issue
Block a user