/* Options: Date: 2024-12-22 21:39:29 SwiftVersion: 6.0 Version: 8.51 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://blazor-gallery.servicestack.net //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: QueryPlayer.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack public class QueryPlayer : QueryDb, IReturn { public typealias Return = QueryResponse required public init(){ super.init() } required public init(from decoder: Decoder) throws { try super.init(from: decoder) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) } } public class Player : AuditBase { public var id:Int? // @Required() public var firstName:String? public var lastName:String? public var email:String? public var phoneNumbers:[Phone] = [] public var gameItems:[PlayerGameItem] = [] public var profile:Profile? public var profileId:Int? public var savedLevelId:String? public var rowVersion:UInt64? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case id case firstName case lastName case email case phoneNumbers case gameItems case profile case profileId case savedLevelId case rowVersion } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) id = try container.decodeIfPresent(Int.self, forKey: .id) firstName = try container.decodeIfPresent(String.self, forKey: .firstName) lastName = try container.decodeIfPresent(String.self, forKey: .lastName) email = try container.decodeIfPresent(String.self, forKey: .email) phoneNumbers = try container.decodeIfPresent([Phone].self, forKey: .phoneNumbers) ?? [] gameItems = try container.decodeIfPresent([PlayerGameItem].self, forKey: .gameItems) ?? [] profile = try container.decodeIfPresent(Profile.self, forKey: .profile) profileId = try container.decodeIfPresent(Int.self, forKey: .profileId) savedLevelId = try container.decodeIfPresent(String.self, forKey: .savedLevelId) rowVersion = try container.decodeIfPresent(UInt64.self, forKey: .rowVersion) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if id != nil { try container.encode(id, forKey: .id) } if firstName != nil { try container.encode(firstName, forKey: .firstName) } if lastName != nil { try container.encode(lastName, forKey: .lastName) } if email != nil { try container.encode(email, forKey: .email) } if phoneNumbers.count > 0 { try container.encode(phoneNumbers, forKey: .phoneNumbers) } if gameItems.count > 0 { try container.encode(gameItems, forKey: .gameItems) } if profile != nil { try container.encode(profile, forKey: .profile) } if profileId != nil { try container.encode(profileId, forKey: .profileId) } if savedLevelId != nil { try container.encode(savedLevelId, forKey: .savedLevelId) } if rowVersion != nil { try container.encode(rowVersion, forKey: .rowVersion) } } } public class Profile : AuditBase { public var id:Int? public var role:PlayerRole? public var region:PlayerRegion? public var username:String? public var highScore:Int? public var gamesPlayed:Int? public var energy:Int? public var profileUrl:String? public var coverUrl:String? public var meta:[String:String]? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case id case role case region case username case highScore case gamesPlayed case energy case profileUrl case coverUrl case meta } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) id = try container.decodeIfPresent(Int.self, forKey: .id) role = try container.decodeIfPresent(PlayerRole.self, forKey: .role) region = try container.decodeIfPresent(PlayerRegion.self, forKey: .region) username = try container.decodeIfPresent(String.self, forKey: .username) highScore = try container.decodeIfPresent(Int.self, forKey: .highScore) gamesPlayed = try container.decodeIfPresent(Int.self, forKey: .gamesPlayed) energy = try container.decodeIfPresent(Int.self, forKey: .energy) profileUrl = try container.decodeIfPresent(String.self, forKey: .profileUrl) coverUrl = try container.decodeIfPresent(String.self, forKey: .coverUrl) meta = try container.decodeIfPresent([String:String].self, forKey: .meta) ?? [:] } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if id != nil { try container.encode(id, forKey: .id) } if role != nil { try container.encode(role, forKey: .role) } if region != nil { try container.encode(region, forKey: .region) } if username != nil { try container.encode(username, forKey: .username) } if highScore != nil { try container.encode(highScore, forKey: .highScore) } if gamesPlayed != nil { try container.encode(gamesPlayed, forKey: .gamesPlayed) } if energy != nil { try container.encode(energy, forKey: .energy) } if profileUrl != nil { try container.encode(profileUrl, forKey: .profileUrl) } if coverUrl != nil { try container.encode(coverUrl, forKey: .coverUrl) } if meta != nil { try container.encode(meta, forKey: .meta) } } } public class GameItem : AuditBase { // @StringLength(50) public var name:String? public var imageUrl:String? // @StringLength(Int32.max) public var Description:String? public var dateAdded:Date? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case name case imageUrl case Description case dateAdded } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) name = try container.decodeIfPresent(String.self, forKey: .name) imageUrl = try container.decodeIfPresent(String.self, forKey: .imageUrl) Description = try container.decodeIfPresent(String.self, forKey: .Description) dateAdded = try container.decodeIfPresent(Date.self, forKey: .dateAdded) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if name != nil { try container.encode(name, forKey: .name) } if imageUrl != nil { try container.encode(imageUrl, forKey: .imageUrl) } if Description != nil { try container.encode(Description, forKey: .Description) } if dateAdded != nil { try container.encode(dateAdded, forKey: .dateAdded) } } } public class PlayerGameItem : Codable { public var id:Int? // @References(typeof(Player)) public var playerId:Int? // @References(typeof(GameItem)) public var gameItemName:String? required public init(){} } public class Phone : Codable { public var kind:PhoneKind? public var number:String? public var ext:String? required public init(){} } public enum PlayerRole : String, Codable { case Leader case Player case NonPlayer } public enum PlayerRegion : Int, Codable { case Africa = 1 case Americas = 2 case Asia = 3 case Australasia = 4 case Europe = 5 } public enum PhoneKind : String, Codable { case Home case Mobile case Work }