/* Options: Date: 2024-04-27 19:06:07 SwiftVersion: 5.0 Version: 8.13 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://techstacks.io //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: FindTechnologies.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/technology/search") // @AutoQueryViewer(DefaultSearchField="Tier", DefaultSearchText="Data", DefaultSearchType="=", Description="Explore different Technologies", IconUrl="octicon:database", Title="Find Technologies") public class FindTechnologies : QueryDb2, IReturn { public typealias Return = QueryResponse public var ids:[Int] public var name:String public var vendorName:String public var nameContains:String public var vendorNameContains:String public var descriptionContains:String // @DataMember(Order=1) public var skip:Int? // @DataMember(Order=2) public var take:Int? // @DataMember(Order=3) public var orderBy:String // @DataMember(Order=4) public var orderByDesc:String // @DataMember(Order=5) public var include:String // @DataMember(Order=6) public var fields:String // @DataMember(Order=7) public var meta:[String:String] required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case ids case name case vendorName case nameContains case vendorNameContains case descriptionContains case skip case take case orderBy case orderByDesc case include case fields case meta } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) ids = try container.decodeIfPresent([Int].self, forKey: .ids) ?? [] name = try container.decodeIfPresent(String.self, forKey: .name) vendorName = try container.decodeIfPresent(String.self, forKey: .vendorName) nameContains = try container.decodeIfPresent(String.self, forKey: .nameContains) vendorNameContains = try container.decodeIfPresent(String.self, forKey: .vendorNameContains) descriptionContains = try container.decodeIfPresent(String.self, forKey: .descriptionContains) skip = try container.decodeIfPresent(Int.self, forKey: .skip) take = try container.decodeIfPresent(Int.self, forKey: .take) orderBy = try container.decodeIfPresent(String.self, forKey: .orderBy) orderByDesc = try container.decodeIfPresent(String.self, forKey: .orderByDesc) include = try container.decodeIfPresent(String.self, forKey: .include) fields = try container.decodeIfPresent(String.self, forKey: .fields) 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 ids.count > 0 { try container.encode(ids, forKey: .ids) } if name != nil { try container.encode(name, forKey: .name) } if vendorName != nil { try container.encode(vendorName, forKey: .vendorName) } if nameContains != nil { try container.encode(nameContains, forKey: .nameContains) } if vendorNameContains != nil { try container.encode(vendorNameContains, forKey: .vendorNameContains) } if descriptionContains != nil { try container.encode(descriptionContains, forKey: .descriptionContains) } if skip != nil { try container.encode(skip, forKey: .skip) } if take != nil { try container.encode(take, forKey: .take) } if orderBy != nil { try container.encode(orderBy, forKey: .orderBy) } if orderByDesc != nil { try container.encode(orderByDesc, forKey: .orderByDesc) } if include != nil { try container.encode(include, forKey: .include) } if fields != nil { try container.encode(fields, forKey: .fields) } if meta.count > 0 { try container.encode(meta, forKey: .meta) } } } public class Technology : TechnologyBase { public var id:Int public var name:String public var vendorName:String public var vendorUrl:String public var productUrl:String public var logoUrl:String public var Description:String public var created:Date public var createdBy:String public var lastModified:Date public var lastModifiedBy:String public var ownerId:String public var slug:String public var logoApproved:Bool public var isLocked:Bool public var tier:TechnologyTier public var lastStatusUpdate:Date? public var organizationId:Int? public var commentsPostId:Int? public var viewCount:Int public var favCount:Int required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case id case name case vendorName case vendorUrl case productUrl case logoUrl case Description case created case createdBy case lastModified case lastModifiedBy case ownerId case slug case logoApproved case isLocked case tier case lastStatusUpdate case organizationId case commentsPostId case viewCount case favCount } 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) name = try container.decodeIfPresent(String.self, forKey: .name) vendorName = try container.decodeIfPresent(String.self, forKey: .vendorName) vendorUrl = try container.decodeIfPresent(String.self, forKey: .vendorUrl) productUrl = try container.decodeIfPresent(String.self, forKey: .productUrl) logoUrl = try container.decodeIfPresent(String.self, forKey: .logoUrl) Description = try container.decodeIfPresent(String.self, forKey: .Description) created = try container.decodeIfPresent(Date.self, forKey: .created) createdBy = try container.decodeIfPresent(String.self, forKey: .createdBy) lastModified = try container.decodeIfPresent(Date.self, forKey: .lastModified) lastModifiedBy = try container.decodeIfPresent(String.self, forKey: .lastModifiedBy) ownerId = try container.decodeIfPresent(String.self, forKey: .ownerId) slug = try container.decodeIfPresent(String.self, forKey: .slug) logoApproved = try container.decodeIfPresent(Bool.self, forKey: .logoApproved) isLocked = try container.decodeIfPresent(Bool.self, forKey: .isLocked) tier = try container.decodeIfPresent(TechnologyTier.self, forKey: .tier) lastStatusUpdate = try container.decodeIfPresent(Date.self, forKey: .lastStatusUpdate) organizationId = try container.decodeIfPresent(Int.self, forKey: .organizationId) commentsPostId = try container.decodeIfPresent(Int.self, forKey: .commentsPostId) viewCount = try container.decodeIfPresent(Int.self, forKey: .viewCount) favCount = try container.decodeIfPresent(Int.self, forKey: .favCount) } 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 name != nil { try container.encode(name, forKey: .name) } if vendorName != nil { try container.encode(vendorName, forKey: .vendorName) } if vendorUrl != nil { try container.encode(vendorUrl, forKey: .vendorUrl) } if productUrl != nil { try container.encode(productUrl, forKey: .productUrl) } if logoUrl != nil { try container.encode(logoUrl, forKey: .logoUrl) } if Description != nil { try container.encode(Description, forKey: .Description) } if created != nil { try container.encode(created, forKey: .created) } if createdBy != nil { try container.encode(createdBy, forKey: .createdBy) } if lastModified != nil { try container.encode(lastModified, forKey: .lastModified) } if lastModifiedBy != nil { try container.encode(lastModifiedBy, forKey: .lastModifiedBy) } if ownerId != nil { try container.encode(ownerId, forKey: .ownerId) } if slug != nil { try container.encode(slug, forKey: .slug) } if logoApproved != nil { try container.encode(logoApproved, forKey: .logoApproved) } if isLocked != nil { try container.encode(isLocked, forKey: .isLocked) } if tier != nil { try container.encode(tier, forKey: .tier) } if lastStatusUpdate != nil { try container.encode(lastStatusUpdate, forKey: .lastStatusUpdate) } if organizationId != nil { try container.encode(organizationId, forKey: .organizationId) } if commentsPostId != nil { try container.encode(commentsPostId, forKey: .commentsPostId) } if viewCount != nil { try container.encode(viewCount, forKey: .viewCount) } if favCount != nil { try container.encode(favCount, forKey: .favCount) } } } public class TechnologyView : Codable { public var id:Int? public var name:String public var vendorName:String public var vendorUrl:String public var productUrl:String public var logoUrl:String public var Description:String public var created:Date? public var createdBy:String public var lastModified:Date? public var lastModifiedBy:String public var ownerId:String public var slug:String public var logoApproved:Bool? public var isLocked:Bool? public var tier:TechnologyTier? public var lastStatusUpdate:Date? public var organizationId:Int? public var commentsPostId:Int? public var viewCount:Int? public var favCount:Int? required public init(){} } public enum TechnologyTier : String, Codable { case ProgrammingLanguage case Client case Http case Server case Data case SoftwareInfrastructure case OperatingSystem case HardwareInfrastructure case ThirdPartyServices } public class TechnologyBase : Codable { public var id:Int public var name:String public var vendorName:String public var vendorUrl:String public var productUrl:String public var logoUrl:String public var Description:String public var created:Date public var createdBy:String public var lastModified:Date public var lastModifiedBy:String public var ownerId:String public var slug:String public var logoApproved:Bool public var isLocked:Bool public var tier:TechnologyTier public var lastStatusUpdate:Date? public var organizationId:Int? public var commentsPostId:Int? public var viewCount:Int public var favCount:Int required public init(){} }