11from dotenv import load_dotenv
22import os
3+ from pathlib import Path
4+ import logging
35
6+ logging .basicConfig (level = logging .INFO ,format = '%(asctime)s - %(levelname)s - %(message)s' )
7+
8+
9+ logger = logging .getLogger ('cloudsql_to_supabase' )
410
511load_dotenv ()
612
13+
714CLOUDSQL_USER = os .getenv ("CLOUDSQL_USER" )
815CLOUDSQL_HOST = os .getenv ("CLOUDSQL_HOST" )
916CLOUDSQL_DB = os .getenv ("CLOUDSQL_DB" )
10- SUPABASE_USER = os .getenv ("SUPABASE_USER" )
17+ CLOUDSQL_PORT = int (os .getenv ("CLOUDSQL_PORT" , 5432 ))
18+ CLOUDSQL_SSL_MODE = os .getenv ("CLOUDSQL_SSL_MODE" , "prefer" )
19+
20+ SUPABASE_USER = os .getenv ("SUPABASE_USER" , "postgres" )
1121SUPABASE_HOST = os .getenv ("SUPABASE_HOST" )
1222SUPABASE_DB = os .getenv ("SUPABASE_DB" , "postgres" )
1323SUPABASE_PASSWORD = os .getenv ("SUPABASE_PASSWORD" )
1424SUPABASE_PORT = int (os .getenv ("SUPABASE_PORT" , 5432 ))
15- OUTPUT_DUMP = "backup.sql"
16- CLEANED_DUMP = "cleaned_backup.sql"
25+ SUPABASE_SSL_MODE = os .getenv ("SUPABASE_SSL_MODE" , "require" )
26+
27+ OUTPUT_DIR = Path (os .getenv ('OUTPUT_DIR' , '.' ))
28+ OUTPUT_DUMP = OUTPUT_DIR / os .getenv ("OUTPUT_DUMP" , "backup.sql" )
29+ CLEANED_DUMP = OUTPUT_DIR / os .getenv ("CLEANED_DUMP" , "cleaned_backup.sql" )
1730
1831
1932def validate_config ():
2033 """
2134 Validate the configuration values.
2235 """
23- required_vars = [
24- "CLOUDSQL_USER" ,
25- "CLOUDSQL_HOST" ,
26- "CLOUDSQL_DB" ,
27- "SUPABASE_USER" ,
28- "SUPABASE_HOST" ,
29- "SUPABASE_DB" ,
30- "SUPABASE_PASSWORD" ,
31- "SUPABASE_PORT" ,
32- ]
33- for var in required_vars :
34- if not os .getenv (var ):
35- raise ValueError (f"Environment variable { var } is not set." )
36- if not SUPABASE_PORT or SUPABASE_PORT <= 0 :
37- raise ValueError ("SUPABASE_PORT must be a positive integer." )
38-
36+ required_vars = {
37+ "CLOUDSQL_USER" : CLOUDSQL_USER ,
38+ "CLOUDSQL_HOST" : CLOUDSQL_HOST ,
39+ "CLOUDSQL_DB" : CLOUDSQL_DB ,
40+ "SUPABASE_HOST" : SUPABASE_HOST ,
41+ "SUPABASE_PASSWORD" : SUPABASE_PASSWORD ,
42+ }
43+
44+
45+ missing = [var for var , value in required_vars .items () if not value ]
46+
47+ if missing :
48+ raise ValueError (f"Missing required environment variables: { ', ' .join (missing )} " )
49+
50+ OUTPUT_DIR .mkdir (exist_ok = True )
0 commit comments