Card2vcfDatabase.swift 39 lignes · 1424 octets
import Foundation

/// Facade over the SQLite persistence, mirroring Android's `CrmDatabase`.
/// The underlying connection opens lazily on first query.
final class Card2vcfDatabase {
    static let shared = Card2vcfDatabase()

    let sqlite: SqliteDatabase

    let crmContactDao: any CrmContactDao
    let entrepriseDao: any EntrepriseDao
    let projetDao: any ProjetDao
    let tacheDao: any TacheDao
    let interactionDao: any InteractionDao
    let workflowDao: any WorkflowDao
    let syncOpDao: any SyncOpDao
    let syncMetaDao: any SyncMetaDao
    let rdvDao: any RdvDao
    let reservationDao: any ReservationDao
    let indisponibiliteDao: any IndisponibiliteDao
    let noteProjetDao: any NoteProjetDao

    init(inMemory: Bool = false) {
        let db = SqliteDatabase(inMemory: inMemory)
        sqlite = db
        crmContactDao = SqliteCrmContactDao(db: db)
        entrepriseDao = SqliteEntrepriseDao(db: db)
        projetDao = SqliteProjetDao(db: db)
        tacheDao = SqliteTacheDao(db: db)
        interactionDao = SqliteInteractionDao(db: db)
        workflowDao = SqliteWorkflowDao(db: db)
        syncOpDao = SqliteSyncOpDao(db: db)
        syncMetaDao = SqliteSyncMetaDao(db: db)
        rdvDao = SqliteRdvDao(db: db)
        reservationDao = SqliteReservationDao(db: db)
        indisponibiliteDao = SqliteIndisponibiliteDao(db: db)
        noteProjetDao = SqliteNoteProjetDao(db: db)
    }
}