103 lines
1.9 KiB
Swift
103 lines
1.9 KiB
Swift
import FluentKit
|
|||
|
|
import Foundation
|
||
|
|
|
||
|
|
/// A FluentKit model of a single `events` row: a con where shops trade in person.
|
||
|
|
final class EventRecord: Model, @unchecked Sendable {
|
||
|
|
|
||
|
|
// MARK: Properties
|
||
|
|
|
||
|
|
static let schema = "events"
|
||
|
|
|
||
|
|
@ID(key: .id)
|
||
|
|
var id: UUID?
|
||
|
|
|
||
|
|
@Field(key: "slug")
|
||
|
|
var slug: String
|
||
|
|
|
||
|
|
@Field(key: "name")
|
||
|
|
var name: String
|
||
|
|
|
||
|
|
@Field(key: "venue")
|
||
|
|
var venue: String
|
||
|
|
|
||
|
|
@Field(key: "starts_on")
|
||
|
|
var startsOn: Date
|
||
|
|
|
||
|
|
@Field(key: "ends_on")
|
||
|
|
var endsOn: Date
|
||
|
|
|
||
|
|
@Siblings(through: EventShopRecord.self, from: \.$event, to: \.$shop)
|
||
|
|
var shops: [ShopRecord]
|
||
|
|
|
||
|
|
// MARK: Initializers
|
||
|
|
|
||
|
|
init() {}
|
||
|
|
|
||
|
|
init(
|
||
|
|
_ event: Event
|
||
|
|
) {
|
||
|
|
self.slug = event.slug
|
||
|
|
self.name = event.name
|
||
|
|
self.venue = event.venue
|
||
|
|
self.startsOn = event.startsOn
|
||
|
|
self.endsOn = event.endsOn
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
/// A FluentKit model of a single `event_shops` row: a shop trading at an event.
|
||
|
|
final class EventShopRecord: Model, @unchecked Sendable {
|
||
|
|
|
||
|
|
// MARK: Properties
|
||
|
|
|
||
|
|
static let schema = "event_shops"
|
||
|
|
|
||
|
|
@ID(key: .id)
|
||
|
|
var id: UUID?
|
||
|
|
|
||
|
|
@Parent(key: "event_id")
|
||
|
|
var event: EventRecord
|
||
|
|
|
||
|
|
@Parent(key: "shop_id")
|
||
|
|
var shop: ShopRecord
|
||
|
|
|
||
|
|
// MARK: Initializers
|
||
|
|
|
||
|
|
init() {}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
/// A FluentKit model of a single `owned_issues` row: an issue of a series in an account's collection.
|
||
|
|
final class OwnedIssueRecord: Model, @unchecked Sendable {
|
||
|
|
|
||
|
|
// MARK: Properties
|
||
|
|
|
||
|
|
static let schema = "owned_issues"
|
||
|
|
|
||
|
|
@ID(key: .id)
|
||
|
|
var id: UUID?
|
||
|
|
|
||
|
|
@Parent(key: "user_id")
|
||
|
|
var user: UserRecord
|
||
|
|
|
||
|
|
@Field(key: "series_slug")
|
||
|
|
var seriesSlug: String
|
||
|
|
|
||
|
|
@Field(key: "issue")
|
||
|
|
var issue: Int
|
||
|
|
|
||
|
|
// MARK: Initializers
|
||
|
|
|
||
|
|
init() {}
|
||
|
|
|
||
|
|
init(
|
||
|
|
userID: UUID,
|
||
|
|
seriesSlug: String,
|
||
|
|
issue: Int
|
||
|
|
) {
|
||
|
|
self.$user.id = userID
|
||
|
|
self.seriesSlug = seriesSlug
|
||
|
|
self.issue = issue
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|