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
  • id

    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 }
  • bio

    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 }

Relations

  • 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 }