@@ -447,62 +447,13 @@ struct ExportDialog: View {
447447 return item1. name < item2. name
448448 }
449449
450- case . sqlite:
451- // SQLite: only one database, fetch tables directly
452- let tables = try await driver. fetchTables ( )
453- let tableItems = tables. map { table in
454- ExportTableItem (
455- name: table. name,
456- databaseName: " " ,
457- type: table. type,
458- isSelected: preselectedTables. contains ( table. name)
459- )
460- }
461- if !tableItems. isEmpty {
462- items. append ( ExportDatabaseItem (
463- name: connection. database. isEmpty ? " main " : connection. database,
464- tables: tableItems,
465- isExpanded: true
466- ) )
467- }
468-
469- case . mongodb:
470- // MongoDB: similar to SQLite, fetch collections directly
471- let tables = try await driver. fetchTables ( )
472- let tableItems = tables. map { table in
473- ExportTableItem (
474- name: table. name,
475- databaseName: " " ,
476- type: table. type,
477- isSelected: preselectedTables. contains ( table. name)
478- )
479- }
480- if !tableItems. isEmpty {
481- items. append ( ExportDatabaseItem (
482- name: connection. database. isEmpty ? " main " : connection. database,
483- tables: tableItems,
484- isExpanded: true
485- ) )
486- }
487-
488- case . redis:
489- // Redis: fetch keys as table items
490- let tables = try await driver. fetchTables ( )
491- let tableItems = tables. map { table in
492- ExportTableItem (
493- name: table. name,
494- databaseName: " " ,
495- type: table. type,
496- isSelected: preselectedTables. contains ( table. name)
497- )
498- }
499- if !tableItems. isEmpty {
500- items. append ( ExportDatabaseItem (
501- name: connection. database. isEmpty ? " db0 " : connection. database,
502- tables: tableItems,
503- isExpanded: true
504- ) )
505- }
450+ case . sqlite, . mongodb, . redis:
451+ let fallbackName = connection. type == . redis ? " db0 " : " main "
452+ let dbItem = try await buildFlatDatabaseItem (
453+ driver: driver,
454+ name: connection. database. isEmpty ? fallbackName : connection. database
455+ )
456+ if let dbItem { items. append ( dbItem) }
506457
507458 case . mssql:
508459 // MSSQL: fetch schemas within current database
@@ -612,6 +563,23 @@ struct ExportDialog: View {
612563 return result. rows. compactMap { $0 [ 0 ] }
613564 }
614565
566+ private func buildFlatDatabaseItem(
567+ driver: DatabaseDriver ,
568+ name: String
569+ ) async throws -> ExportDatabaseItem ? {
570+ let tables = try await driver. fetchTables ( )
571+ let tableItems = tables. map { table in
572+ ExportTableItem (
573+ name: table. name,
574+ databaseName: " " ,
575+ type: table. type,
576+ isSelected: preselectedTables. contains ( table. name)
577+ )
578+ }
579+ guard !tableItems. isEmpty else { return nil }
580+ return ExportDatabaseItem ( name: name, tables: tableItems, isExpanded: true )
581+ }
582+
615583 private func fetchTablesForSchema( _ schema: String , driver: DatabaseDriver ) async throws -> [ TableInfo ] {
616584 // Oracle does not have information_schema — use ALL_TABLES/ALL_VIEWS
617585 if connection. type == . oracle {
0 commit comments