Performer

final class Performer : Model

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

    @ID
    var id: UUID?
  • Individual or band name. This is the full name, even though sortOrder below is usually the last name.

    Declaration

    Swift

    @Field
    var name: String
  • 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

    @Field
    var sortOrder: String
  • 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

    @OptionalField
    var pronouns: String?
  • bio

    The bio string may contain Markdown, and can be up to 20000 characters.

    Declaration

    Swift

    @OptionalField
    var bio: String?
  • Photo of the performer

    Declaration

    Swift

    @OptionalField
    var photo: String?
  • Organization, Company or Band Name

    Declaration

    Swift

    @OptionalField
    var organization: String?
  • Title, if any

    Declaration

    Swift

    @OptionalField
    var title: String?
  • Performer’s website, if any

    Declaration

    Swift

    @OptionalField
    var website: String?
  • Performer’s Facebook link, if any

    Declaration

    Swift

    @OptionalField
    var facebookURL: String?
  • Performer’s X link, if any

    Declaration

    Swift

    @OptionalField
    var xURL: String?
  • Performer’s Instagram link, if any

    Declaration

    Swift

    @OptionalField
    var instagramURL: String?
  • Performer’s Youtube link, if any

    Declaration

    Swift

    @OptionalField
    var youtubeURL: String?
  • Which years the performer has attended/will attend JoCo, as an array of Ints in the range 2011….

    Declaration

    Swift

    @Field
    var yearsAttended: [Int]
  • TRUE if this is one of the JoCo official performers. FALSE if it’s a shadow event organizer.

    Declaration

    Swift

    @Field
    var officialPerformer: Bool
  • Timestamp of the model’s soft-deletion, set automatically.

    Declaration

    Swift

    @Timestamp
    var deletedAt: Date?

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

    @OptionalParent
    var user: User?
  • Declaration

    Swift

    @Siblings
    var events: [Event]