SupabaseGenConfig.fromYaml constructor
Implementation
factory SupabaseGenConfig.fromYaml(
Map<String, dynamic> yaml,
Map<String, dynamic> envVars,
) {
final dbConfig = yaml['database'] as Map<String, dynamic>? ?? {};
final genConfig = yaml['generation'] as Map<String, dynamic>? ?? {};
final modelConfig = genConfig['models'] as Map<String, dynamic>? ?? {};
final sqliteConfig =
genConfig['sqlite_migrations'] as Map<String, dynamic>? ?? {};
final selectBuildersConfig =
genConfig['supabase_select_builders'] as Map<String, dynamic>? ?? {};
final clientManagerConfig =
genConfig['client_managers'] as Map<String, dynamic>? ?? {};
final providerConfig =
genConfig['providers'] as Map<String, dynamic>? ?? {};
final outputDir = // This correctly uses genConfig['output_directory'] or defaults
genConfig['output_directory'] as String? ?? 'lib/database';
final authConfig =
genConfig['authentication'] as Map<String, dynamic>? ?? {};
final backgroundConfig =
genConfig['background_services'] as Map<String, dynamic>? ?? {};
return SupabaseGenConfig(
// Database, General...
host: envVars[dbConfig['host'] as String] as String? ?? 'localhost',
port: int.tryParse(envVars[dbConfig['port'] as String]) ?? 5432,
database:
envVars[dbConfig['database'] as String] as String? ?? 'postgres',
username:
envVars[dbConfig['username'] as String] as String? ?? 'postgres',
password:
envVars[dbConfig['password'] as String] as String? ?? 'postgres',
ssl: bool.tryParse(envVars[dbConfig['ssl'] as String]) ?? false,
outputDirectory: outputDir,
excludeTables: List<String>.from(
genConfig['exclude_tables'] as List? ??
['migrations', 'schema_migrations'],
),
includeTables: List<String>.from(
genConfig['include_tables'] as List? ?? [],
),
excludeReferences: List<String>.from(
genConfig['exclude_references'] as List? ?? [],
),
generateForAllTables:
genConfig['generate_for_all_tables'] as bool? ?? true,
// Models, Repositories...
generateModels: modelConfig['enabled'] as bool? ?? true,
modelsFileName: modelConfig['filename'] as String? ?? 'models.dart',
modelPrefix: modelConfig['prefix'] as String? ?? '',
modelSuffix: modelConfig['suffix'] as String? ?? 'Model',
useNullSafety: modelConfig['use_null_safety'] as bool? ?? true,
repositorySuffix:
genConfig['repository_suffix'] as String? ?? 'Repository',
// SQLite Migration Settings
generateSqliteMigrations: sqliteConfig['enabled'] as bool? ?? false,
sqliteMigrationsSubDir:
sqliteConfig['output_subdir'] as String? ??
'assets/sqlite_migrations',
generateSupabaseSelectBuilders:
selectBuildersConfig['enabled'] as bool? ?? false,
supabaseSelectBuildersFilePath:
selectBuildersConfig['output_path'] as String? ??
p.join(outputDir, 'supabase_select_builders.g.dart'),
generatedSupabaseSchemaDartFilePath:
p.join(
outputDir,
selectBuildersConfig['generated_schema_dart_file_name']
as String? ??
'supabase_schema.dart',
)
as String? ??
p.join(outputDir, 'supabase_schema.dart'),
schemaRegistryFilePath:
p.join(outputDir, genConfig['schema_registry_file_name'])
as String? ??
p.join(outputDir, 'schema_registry.dart'),
sanitizationEndings: List<String>.from(
genConfig['sanitization_endings'] as List? ?? ['_id', '_fk'],
),
// --- ClientManager Settings ---
generateClientManagers: clientManagerConfig['enabled'] as bool? ?? false,
useRiverpod: clientManagerConfig['use_riverpod'] as bool? ?? true,
// --- Provider Settings ---
providersSubDir:
providerConfig['output_subdir'] as String? ?? 'providers',
generateProviders: providerConfig['enabled'] as bool? ?? true,
// --- Authentication Settings ---
generateAuthentication: authConfig['enabled'] as bool? ?? true,
authProfileTableName:
authConfig['profile_table'] as String? ?? 'profiles',
// --- Background Services Settings ---
generateBackgroundServices: backgroundConfig['enabled'] as bool? ?? true,
);
}