// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. import Foundation import GRDB import SessionUtil import SessionUtilitiesKit /// This migration recreates the interaction FTS table and adds the threadId so we can do a performant in-conversation /// searh (currently it's much slower than the global search) enum _011_SharedUtilChanges: Migration { static let target: TargetMigrations.Identifier = .messagingKit static let identifier: String = "SharedUtilChanges" static let needsConfigSync: Bool = true static let minExpectedRunDuration: TimeInterval = 0.1 static func migrate(_ db: Database) throws { try db.create(table: ConfigDump.self) { t in t.column(.variant, .text) .notNull() .primaryKey() t.column(.data, .blob) .notNull() } // Create a dump for the user profile data let userProfileConf: UnsafeMutablePointer? = try SessionUtil.loadState( for: .userProfile ) let confResult: SessionUtil.ConfResult = try SessionUtil.update( conf: userProfileConf, with: Profile.fetchOrCreateCurrentUser(db) ) if confResult.needsDump { try SessionUtil.saveState(db, conf: userProfileConf, for: .userProfile) } Storage.update(progress: 1, for: self, in: target) // In case this is the last migration } }