SqliteNoteProjetDao.swift
74 lignes · 2604 octets
import Foundation struct SqliteNoteProjetDao: NoteProjetDao { let db: SqliteDatabase private static let columns = """ localId, serverId, projetServerId, titre, texte, audioPath, \ transcriptionStatut, transcriptionErreur, auteur, createdAt, updatedAt """ private static func map(_ row: SqliteRow) -> NoteProjetEntity { var e = NoteProjetEntity() e.localId = row.int64(0) e.serverId = row.textOrNil(1) e.projetServerId = row.text(2) e.titre = row.text(3) e.texte = row.text(4) e.audioPath = row.textOrNil(5) e.transcriptionStatut = row.textOrNil(6) e.transcriptionErreur = row.textOrNil(7) e.auteur = row.text(8) e.createdAt = row.int64(9) e.updatedAt = row.int64OrNil(10) return e } @discardableResult func upsert(_ entity: NoteProjetEntity) async throws -> Int64 { try await db.insert( "INSERT OR REPLACE INTO notes_projet (\(Self.columns)) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", [ .rowId(entity.localId), .optText(entity.serverId), .text(entity.projetServerId), .text(entity.titre), .text(entity.texte), .optText(entity.audioPath), .optText(entity.transcriptionStatut), .optText(entity.transcriptionErreur), .text(entity.auteur), .int(entity.createdAt), .optInt(entity.updatedAt), ] ) } func getByServerId(_ serverId: String) async throws -> NoteProjetEntity? { try await db.query( "SELECT \(Self.columns) FROM notes_projet WHERE serverId = ?", [.text(serverId)], map: Self.map ).first } func deleteByServerId(_ serverId: String) async throws { try await db.write("DELETE FROM notes_projet WHERE serverId = ?", [.text(serverId)]) } func deleteByLocalId(_ localId: Int64) async throws { try await db.write("DELETE FROM notes_projet WHERE localId = ?", [.int(localId)]) } func listByProjetServerId(_ projetServerId: String) async throws -> [NoteProjetEntity] { try await db.query( "SELECT \(Self.columns) FROM notes_projet WHERE projetServerId = ? ORDER BY createdAt DESC", [.text(projetServerId)], map: Self.map ) } func listAll() async throws -> [NoteProjetEntity] { try await db.query("SELECT \(Self.columns) FROM notes_projet", map: Self.map) } }
GitRust