47 lines
893 B
Swift
47 lines
893 B
Swift
import Foundation
|
|
import GRDB
|
|
import Martin
|
|
|
|
enum MessageType: String, Codable, DatabaseValueConvertible {
|
|
case chat
|
|
case groupchat
|
|
case error
|
|
}
|
|
|
|
enum MessageContentType: Codable & Equatable, DatabaseValueConvertible {
|
|
case text
|
|
case typing
|
|
}
|
|
|
|
enum MessageStatus: Int, Codable, DatabaseValueConvertible {
|
|
case pending
|
|
case sent
|
|
case error
|
|
}
|
|
|
|
struct Message: DBStorable, Equatable {
|
|
static let databaseTableName = "messages"
|
|
|
|
let id: String
|
|
let type: MessageType
|
|
let date: Date
|
|
let contentType: MessageContentType
|
|
let status: MessageStatus
|
|
|
|
let from: String
|
|
let to: String?
|
|
|
|
let body: String?
|
|
let subject: String?
|
|
let thread: String?
|
|
let oobUrl: String?
|
|
}
|
|
|
|
extension Message {
|
|
func save() async throws {
|
|
try await Database.shared.dbQueue.write { db in
|
|
try self.insert(db)
|
|
}
|
|
}
|
|
}
|