Performer
final class Performer : Model, @unchecked Sendable
An official performer or shadow event organizer on the cruise. Generally, official performers are those listed on the JoCo website. Shadow Event organizers are people who are running shadow events on the official schedule.
The records for official performers are imported in bulk, but shadow event organizers can self-create a Perfomer profile and attach it to the event(s) they’re running. For shadow event organizers, their Performer profile MUST be linked to their user (as it’s user-created content), and a user cannot have different profiles for different events. Also, while official performers usually have relations to events on the schedule, they don’t need to. Shadow event organizers profiles must be created with a relation to the event they’re running.
Because it’s often the case that there’s at least one late change to the official lineup, these models can be soft-deleted by admin, which should be easier to manage than delete-on-update logic.This also gives the technical ability to list performers who weren’t able to make it aboard. I haven’t checked whether this is information we can actually provide–there may be contractual issues or something.
-
Declaration
Swift
static let schema: String
-
Declaration
Swift
@Performer .ID var id: UUID? { get set }
-
Individual or band name. This is the full name, even though
sortOrder
below is usually the last name.Declaration
Swift
@Performer .Field var name: String { get set }
-
Generally, the last name of the performer, although it could be the first non-‘the’ word if it’s a band name. Should only be used for sorting. Should be uppercased.
Declaration
Swift
@Performer .Field var sortOrder: String { get set }
-
Shadow event organizers relate their Performer model to their User, therefore the User’s pronouns field is theoretically available, but don’t use it in the context of Performers. Also, official performers aren’t associated with any user.
Declaration
Swift
@Performer .OptionalField var pronouns: String? { get set }
-
The bio string may contain Markdown, and can be up to 20000 characters.
Declaration
Swift
@Performer .OptionalField var bio: String? { get set }
-
Photo of the performer
Declaration
Swift
@Performer .OptionalField var photo: String? { get set }
-
Organization, Company or Band Name
Declaration
Swift
@Performer .OptionalField var organization: String? { get set }
-
Title, if any
Declaration
Swift
@Performer .OptionalField var title: String? { get set }
-
Performer’s website, if any
Declaration
Swift
@Performer .OptionalField var website: String? { get set }
-
Performer’s Facebook link, if any
Declaration
Swift
@Performer .OptionalField var facebookURL: String? { get set }
-
Performer’s X link, if any
Declaration
Swift
@Performer .OptionalField var xURL: String? { get set }
-
Performer’s Instagram link, if any
Declaration
Swift
@Performer .OptionalField var instagramURL: String? { get set }
-
Performer’s Youtube link, if any
Declaration
Swift
@Performer .OptionalField var youtubeURL: String? { get set }
-
Which years the performer has attended/will attend JoCo, as an array of Ints in the range 2011…
. Declaration
Swift
@Performer .Field var yearsAttended: [Int] { get set }
-
TRUE if this is one of the JoCo official performers. FALSE if it’s a shadow event organizer.
Declaration
Swift
@Performer .Field var officialPerformer: Bool { get set }
-
Timestamp of the model’s soft-deletion, set automatically.
Declaration
Swift
@Performer .Timestamp var deletedAt: Date? { get set }
-
Will be nil for official performers. For shadow event organizers, this is the User that created the content. The Twitarr User that created a Performer Profile for their event is generally not shown in the UI.
Declaration
Swift
@Performer .OptionalParent var user: User? { get set }
-
Declaration
Swift
@Performer .Siblings var events: [Event] { get set }