session-ios/SessionSnodeKit/Database/Migrations/_001_InitialSetupMigration.swift
Morgan Pretty 3f062c044c Added back the majority of the ConversationVC interactions
Removed some more legacy code
Added back logic similar to the pre-processing de-duping logic (was resulting in "unsent" messages reappearing)
Added a number of updated view files
2022-05-12 17:28:27 +10:00

52 lines
1.9 KiB
Swift

// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
import Foundation
import GRDB
import SessionUtilitiesKit
enum _001_InitialSetupMigration: Migration {
static let identifier: String = "initialSetup"
static func migrate(_ db: Database) throws {
try db.create(table: Snode.self) { t in
t.column(.address, .text).notNull()
t.column(.port, .integer).notNull()
t.column(.ed25519PublicKey, .text).notNull()
t.column(.x25519PublicKey, .text).notNull()
t.primaryKey([.address, .port])
}
try db.create(table: SnodeSet.self) { t in
t.column(.key, .text).notNull()
t.column(.nodeIndex, .integer).notNull()
t.column(.address, .text).notNull()
t.column(.port, .integer).notNull()
t.foreignKey(
[.address, .port],
references: Snode.self,
columns: [.address, .port],
onDelete: .cascade // Delete if Snode deleted
)
t.primaryKey([.key, .nodeIndex])
}
try db.create(table: SnodeReceivedMessageInfo.self) { t in
t.column(.id, .integer)
.notNull()
.primaryKey(autoincrement: true)
t.column(.key, .text)
.notNull()
.indexed() // Quicker querying
t.column(.hash, .text)
.notNull()
.indexed() // Quicker querying
t.column(.expirationDateMs, .integer)
.notNull()
.indexed() // Quicker querying
t.uniqueKey([.key, .hash])
}
}
}