2023-02-27 14:27:15 -08:00
|
|
|
//
|
|
|
|
// Ribbon.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 Ribbon: 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?
|
2024-05-27 19:28:13 -07:00
|
|
|
var group: Int
|
2024-05-27 21:13:54 -07:00
|
|
|
var pos: Int
|
2024-05-27 19:28:13 -07:00
|
|
|
var undoLevel: Int
|
2024-05-27 21:13:54 -07:00
|
|
|
var currentLevel: Int
|
|
|
|
var minLevel: Int
|
|
|
|
var maxLevel: Int
|
|
|
|
var title: String
|
2023-02-27 14:27:15 -08:00
|
|
|
var book: String
|
2023-04-22 01:01:09 -07:00
|
|
|
var scrollId: String
|
2023-02-27 14:27:15 -08:00
|
|
|
var scrollOffset: Int
|
|
|
|
}
|
|
|
|
|
|
|
|
extension Ribbon {
|
|
|
|
}
|
|
|
|
|
|
|
|
// MARK: - Persistence
|
|
|
|
|
|
|
|
/// Make Line a Codable Record.
|
|
|
|
///
|
|
|
|
/// See <https://github.com/groue/GRDB.swift/blob/master/README.md#records>
|
|
|
|
extension Ribbon: Codable, FetchableRecord, MutablePersistableRecord {
|
|
|
|
// Define database columns from CodingKeys
|
|
|
|
fileprivate enum Columns {
|
|
|
|
static let id = Column(CodingKeys.id)
|
2023-08-02 16:26:17 -07:00
|
|
|
static let pos = Column(CodingKeys.pos)
|
2023-02-27 14:27:15 -08:00
|
|
|
static let book = Column(CodingKeys.book)
|
2023-07-21 17:19:30 -07:00
|
|
|
static let title = Column(CodingKeys.title)
|
2023-02-27 14:27:15 -08:00
|
|
|
static let scrollOffset = Column(CodingKeys.scrollOffset)
|
|
|
|
}
|
2024-05-27 19:28:13 -07:00
|
|
|
|
2023-02-27 14:27:15 -08:00
|
|
|
/// 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 <https://github.com/groue/GRDB.swift/blob/master/README.md#requests>
|
|
|
|
/// See <https://github.com/groue/GRDB.swift/blob/master/Documentation/GoodPracticesForDesigningRecordTypes.md>
|
2023-02-28 14:03:58 -08:00
|
|
|
extension DerivableRequest<Ribbon> {
|
2023-02-27 14:27:15 -08:00
|
|
|
}
|