68 lines
3.3 KiB
Swift
68 lines
3.3 KiB
Swift
import SQLite
|
|
|
|
struct MessageStoreSchema: Sendable {
|
|
let hasAttributedBody: Bool
|
|
let hasReactionColumns: Bool
|
|
let hasThreadOriginatorGUIDColumn: Bool
|
|
let hasDestinationCallerID: Bool
|
|
let hasAudioMessageColumn: Bool
|
|
let hasAttachmentUserInfo: Bool
|
|
let hasBalloonBundleIDColumn: Bool
|
|
let hasChatMessageJoinMessageDateColumn: Bool
|
|
let hasChatAccountIDColumn: Bool
|
|
let hasChatAccountLoginColumn: Bool
|
|
let hasChatLastAddressedHandleColumn: Bool
|
|
|
|
init(connection: Connection) {
|
|
let messageColumns = MessageStore.tableColumns(connection: connection, table: "message")
|
|
let attachmentColumns = MessageStore.tableColumns(connection: connection, table: "attachment")
|
|
let chatMessageJoinColumns = MessageStore.tableColumns(
|
|
connection: connection,
|
|
table: "chat_message_join"
|
|
)
|
|
let chatColumns = MessageStore.tableColumns(connection: connection, table: "chat")
|
|
|
|
self.hasAttributedBody = messageColumns.contains("attributedbody")
|
|
self.hasReactionColumns = MessageStore.reactionColumnsPresent(in: messageColumns)
|
|
self.hasThreadOriginatorGUIDColumn = messageColumns.contains("thread_originator_guid")
|
|
self.hasDestinationCallerID = messageColumns.contains("destination_caller_id")
|
|
self.hasAudioMessageColumn = messageColumns.contains("is_audio_message")
|
|
self.hasAttachmentUserInfo = attachmentColumns.contains("user_info")
|
|
self.hasBalloonBundleIDColumn = messageColumns.contains("balloon_bundle_id")
|
|
self.hasChatMessageJoinMessageDateColumn = chatMessageJoinColumns.contains("message_date")
|
|
self.hasChatAccountIDColumn = chatColumns.contains("account_id")
|
|
self.hasChatAccountLoginColumn = chatColumns.contains("account_login")
|
|
self.hasChatLastAddressedHandleColumn = chatColumns.contains("last_addressed_handle")
|
|
}
|
|
|
|
init(
|
|
base: MessageStoreSchema,
|
|
hasAttributedBody: Bool? = nil,
|
|
hasReactionColumns: Bool? = nil,
|
|
hasThreadOriginatorGUIDColumn: Bool? = nil,
|
|
hasDestinationCallerID: Bool? = nil,
|
|
hasAudioMessageColumn: Bool? = nil,
|
|
hasAttachmentUserInfo: Bool? = nil,
|
|
hasBalloonBundleIDColumn: Bool? = nil,
|
|
hasChatMessageJoinMessageDateColumn: Bool? = nil,
|
|
hasChatAccountIDColumn: Bool? = nil,
|
|
hasChatAccountLoginColumn: Bool? = nil,
|
|
hasChatLastAddressedHandleColumn: Bool? = nil
|
|
) {
|
|
self.hasAttributedBody = hasAttributedBody ?? base.hasAttributedBody
|
|
self.hasReactionColumns = hasReactionColumns ?? base.hasReactionColumns
|
|
self.hasThreadOriginatorGUIDColumn =
|
|
hasThreadOriginatorGUIDColumn ?? base.hasThreadOriginatorGUIDColumn
|
|
self.hasDestinationCallerID = hasDestinationCallerID ?? base.hasDestinationCallerID
|
|
self.hasAudioMessageColumn = hasAudioMessageColumn ?? base.hasAudioMessageColumn
|
|
self.hasAttachmentUserInfo = hasAttachmentUserInfo ?? base.hasAttachmentUserInfo
|
|
self.hasBalloonBundleIDColumn = hasBalloonBundleIDColumn ?? base.hasBalloonBundleIDColumn
|
|
self.hasChatMessageJoinMessageDateColumn =
|
|
hasChatMessageJoinMessageDateColumn ?? base.hasChatMessageJoinMessageDateColumn
|
|
self.hasChatAccountIDColumn = hasChatAccountIDColumn ?? base.hasChatAccountIDColumn
|
|
self.hasChatAccountLoginColumn = hasChatAccountLoginColumn ?? base.hasChatAccountLoginColumn
|
|
self.hasChatLastAddressedHandleColumn =
|
|
hasChatLastAddressedHandleColumn ?? base.hasChatLastAddressedHandleColumn
|
|
}
|
|
}
|