handleFirestoreInit function

Future<void> handleFirestoreInit()

Ensure the default Firestore database exists (T4).

Implementation

Future<void> handleFirestoreInit() async {
  final SetupConfig? config = await requireFirebaseProjectConfig();
  if (config == null) return;

  final FirebaseInitializer initializer = FirebaseInitializer(
    config.firebaseProjectId!,
  );

  info(
    'Ensuring Firestore default database exists for ${config.firebaseProjectId}...',
  );
  final FirestoreInitResult result = await initializer.ensureFirestoreDatabase(
    region: config.firestoreRegion,
  );

  if (result.success) {
    if (result.created) {
      success('Firestore database created in region ${result.region}.');
    } else {
      success('Firestore database already exists (region: ${result.region}).');
    }
    print('');
    UserPrompt.printList(<String>[
      SetupGuidance.linkLine(
        'Firestore console',
        FirebaseInitializer.firestoreConsoleUrl(config.firebaseProjectId!),
      ),
    ]);
  } else {
    error('Failed to ensure Firestore database: ${result.message}');
    print('');
    UserPrompt.printList(<String>[
      'Verify gcloud is installed and authenticated.',
      'Confirm the active account has roles/datastore.owner or roles/owner.',
      'Retry with: oracular deploy firestore-init',
    ]);
  }
}