// // RibbonGroup.swift // gloss // // Created by Saint on 2/24/23. // import GRDB /// The Line struct. /// /// Identifiable conformance supports SwiftUI list animations, and type-safe /// GRDB primary key methods. /// Equatable conformance supports tests. struct RibbonGroup: Identifiable, Equatable { /// The player id. /// /// Int64 is the recommended type for auto-incremented database ids. /// Use nil for players that are not inserted yet in the database. var id: Int64? var pos: Int var title: String var current_undo_level: Int var min_level: Int var max_level: Int } extension RibbonGroup { } // MARK: - Persistence /// Make Line a Codable Record. /// /// See extension RibbonGroup: Codable, FetchableRecord, MutablePersistableRecord { // Define database columns from CodingKeys fileprivate enum Columns { static let id = Column(CodingKeys.id) static let pos = Column(CodingKeys.pos) static let book = Column(CodingKeys.book) static let title = Column(CodingKeys.title) static let scrollOffset = Column(CodingKeys.scrollOffset) } /// Updates a player id after it has been inserted in the database. mutating func didInsert(_ inserted: InsertionSuccess) { id = inserted.rowID } } // MARK: - Line Database Requests /// Define some player requests used by the application. /// /// See /// See extension DerivableRequest { }