QueryOn
public final class QueryOn<EntryType> : EntryQuery where EntryType : EntryDecodable, EntryType : FieldKeysQueryable
A concrete implementation of EntryQuery which requires that a model class conforming to EntryType
be passed in as a generic parameter.
The “content_type” parameter of the query will be set using the contentTypeID of the generic parameter conforming
to EntryDecodable. You must also implement ResourceQueryable in order to utilize these generic queries.
-
The parameters dictionary that are converted to
URLComponents(HTTP parameters/arguments) on the HTTP URL. Useful for debugging.Declaration
Swift
public var parameters: [String : String] -
Designated initializer for
QueryOn<EntryType>.Declaration
Swift
public init() -
Static method for creating a new
QueryOnwith an operation. This variation for initialization guarantees correct query construction by utilizing the associatedFieldKeystype required byResourceQueryable.Example usage:
let query = QueryOn<Cat>.where(field: .color, .equals("gray")) client.fetchArray(of: Cat.self, matching: query) { (result: Result<ArrayResponse<Cat>>) in switch result { case .success(let arrayResponse): let cats = arrayResponse.items // Do stuff with cats. case .failure(let error): print(error) } }Declaration
Swift
public static func `where`(field fieldsKey: EntryType.FieldKeys, _ operation: Query.Operation) -> QueryOn<EntryType>Parameters
fieldThe member of the
FieldKeystype associated with your type conforming toEntryDecodable & ResourceQueryablethat you are performing your select operation against.operationThe query operation used in the query.
Return Value
A newly initialized
QueryOnquery. -
Instance method for appending a query operation to the receiving
QueryOn. This variation for initialization guarantees correct query contruction by utilizing the associatedFieldKeystype required byResourceQueryable.Example usage:
let query = QueryOn<Cat>().where(field: .color, .equals("gray")) client.fetchArray(of: Cat.self, matching: query) { (result: Result<ArrayResponse<Cat>>) in switch result { case .success(let arrayResponse): let cats = arrayResponse.items // Do stuff with cats. case .failure(let error): print(error) } }Declaration
Swift
@discardableResult public func `where`(field fieldsKey: EntryType.FieldKeys, _ operation: Query.Operation) -> QueryOn<EntryType>Parameters
fieldsKeyThe member of your
FieldKeystype associated with your type conforming toEntryDecodable & ResourceQueryablethat you are performing your select operation against.operationThe query operation used in the query.
Return Value
A reference to the receiving query to enable chaining.
-
Static method for creating a new QueryOn with a select operation: an operation in which only the fields specified in the fieldNames property will be returned in the JSON response. This variation for initializing guarantees correct query contruction by utilizing the Fields CodingKeys required by ResourceQueryable. The “sys” dictionary is always requested by the SDK. Note that if you are using the select operator with an instance
QueryOn<EntryType>that your model types must have optional types for properties that you are omitting in the response (by not including them in your selections array). If you are not using theQueryOntype while querying entries, make sure to specify the content type id. Example usage:let query = QueryOn<Cat>.select(fieldsNamed: [.bestFriend, .color, .name]) client.fetchArray(of: Cat.self, matching: query) { (result: Result<ArrayResponse<Cat>>) in switch result { case .success(let arrayResponse): let cats = arrayResponse.items // Do stuff with cats. case .failure(let error): print(error) } }Declaration
Swift
public static func select(fieldsNamed fieldsKeys: [EntryType.FieldKeys]) -> QueryOn<EntryType>Parameters
fieldsKeysAn array of
FieldKeysassociated with the generyEntryTypethat you are performing your select operation against.Return Value
A newly initialized QueryOn query.
-
Instance method for creating a new QueryOn with a select operation: an operation in which only the fields specified in the fieldNames property will be returned in the JSON response. This variation for initializing guarantees correct query contruction by utilizing the Fields type associated with your type conforming to ResourceQueryable. The “sys” dictionary is always requested by the SDK. Note that if you are using the select operator with an instance
QueryOn<EntryType>that your model types must have optional types for properties that you are omitting in the response (by not including them in your selections array). If you are not using theQueryOntype while querying entries, make sure to specify the content type id.Example usage:
let query = QueryOn<Cat>().select(fieldsNamed: [.bestFriend, .color, .name]) client.fetchArray(of: Cat.self, matching: query) { (result: Result<ArrayResponse<Cat>>) in switch result { case .success(let arrayResponse): let cats = arrayResponse.items // Do stuff with cats. case .failure(let error): print(error) } }Declaration
Swift
@discardableResult public func select(fieldsNamed fieldsKeys: [EntryType.FieldKeys]) -> QueryOn<EntryType>Parameters
fieldsKeysAn array of
FieldKeysassociated with the generyEntryTypethat you are performing your select operation against.Return Value
A reference to the receiving query to enable chaining.
-
Static method for performing searches where linked entries or assets at the specified linking field match the filtering query. For instance, if you want to query all entries of type “cat” where the “bestFriend” field links to cats with name matching “Happy Cat” the code would look like the following:
let linkQuery = LinkQuery<Cat>.where(field: .name, .matches("Happy Cat")) let query = QueryOn<Cat>(whereLinkAtField: .bestFriend, matches: linkQuery) client.fetchArray(of: Cat.self, matching: query) { (result: Result<ArrayResponse<Cat>>) in switch result { case .success(let arrayResponse): let cats = arrayResponse.items // Do stuff with cats. case .failure(let error): print(error) } }Declaration
Swift
public static func `where`<LinkType>(linkAtField fieldsKey: EntryType.FieldKeys, matches linkQuery: LinkQuery<LinkType>) -> QueryOn<EntryType>Parameters
fieldsKeyThe
FieldKeyfor the property which contains a link to another entry.linkQueryThe filter query applied to the linked objects which are being searched.
Return Value
A newly initialized
QueryOnquery. -
Instance method for for performing searches where Linked objects at the specified linking field match the filtering query. For instance, if you want to query all entries of type “cat” where the “bestFriend” field links to cats with name matching “Happy Cat” the code would look like the following:
let linkQuery = LinkQuery<Cat>.where(field: .name, .matches("Happy Cat")) let query = QueryOn<Cat>(whereLinkAtField: .bestFriend, matches: linkQuery)/// client.fetchArray(of: Cat.self, matching: query) { (result: Result<ArrayResponse<Cat>>) in switch result { case .success(let arrayResponse): let cats = arrayResponse.items // Do stuff with cats. case .failure(let error): print(error) } }Declaration
Swift
@discardableResult public func `where`<LinkType>(linkAtField fieldsKey: EntryType.FieldKeys, matches linkQuery: LinkQuery<LinkType>) -> QueryOn<EntryType>Parameters
fieldsKeyThe
FieldKeyfor the property which contains a link to another entry or asset.linkQueryThe filter query applied to the linked objects which are being searched.
Return Value
A reference to the receiving query to enable chaining.
-
Static method fore creating a query requiring that a specific field of an entry contains a reference to another specific entry.
let query = QueryOn<Cat>(whereLinkAtField: .bestFriend, hasTargetId: "nyancat") client.fetchArray(of: Cat.self, matching: query) { (result: Result<ArrayResponse<Cat>>) in switch result { case .success(let arrayResponse): let cats = arrayResponse.items // Do stuff with cats. case .failure(let error): print(error) } }Declaration
Swift
public static func `where`(linkAtField fieldsKey: EntryType.FieldKeys, hasTargetId targetId: String) -> QueryOn<EntryType>Parameters
fieldsKeyThe
FieldKeyof the property which contains a link to another Entry.targetIdThe identifier of the entry or asset being linked to at the specified linking field.
Return Value
A newly initialized
QueryOnquery. -
Instance method creating a query that requires that an specific field of an entry holds a reference to another specific entry.
let query = QueryOn<Cat>(whereLinkAtField: .bestFriend, hasTargetId: "nyancat") client.fetchArray(of: Cat.self, matching: query) { (result: Result<ArrayResponse<Cat>>) in switch result { case .success(let arrayResponse): let cats = arrayResponse.items // Do stuff with cats. case .failure(let error): print(error) } }Declaration
Swift
@discardableResult public func `where`(linkAtField fieldsKey: EntryType.FieldKeys, hasTargetId targetId: String) -> QueryOn<EntryType>Parameters
fieldsKeyThe
FieldKeyof the property which contains a link to another Entry.targetIdThe identifier of the entry or asset being linked to at the specified linking field.
Return Value
A reference to the receiving query to enable chaining.
View on GitHub
QueryOn Class Reference