<private> new ResourceCollection(rawData, initialCriteria, resourcefulEndpoint)
Parameters:
| Name | Type | Description |
|---|---|---|
rawData |
Object | Raw JSON response from the Sequoia endpoint |
initialCriteria |
string | the initial filter criteria used when requesting from this endpoint |
resourcefulEndpoint |
ResourcefulEndpoint | The ResourcefulEndpoint that created this ResourceCollection |
- Since:
-
- 0.0.2
- Source:
Properties:
| Name | Type | Description |
|---|---|---|
rawData |
Object | Raw JSON response from the Sequoia endpoint |
initialCriteria |
string | the initial filter criteria used when requesting from this endpoint |
resourcefulEndpoint |
ResourcefulEndpoint | The ResourcefulEdnpoint that created this ResourceCollection |
collection |
Array.<Resource> | Array of Resource objects |
Returns:
- Type
- Resource
Members
-
collection
-
- Source:
Properties:
-
initialCriteria
-
- Source:
Properties:
Type Description string the initial filter criteria used when requesting from this endpoint
-
page :number
-
Current page in the pagination set
Type:
- number
- Source:
-
perPage :number
-
Number of items per page in the pagination set
Type:
- number
- Source:
-
resourcefulEndpoint
-
- Source:
Properties:
Type Description ResourcefulEndpoint The ResourcefulEndpoint that created this ResourceCollection
-
totalCount :number
-
Total number of Resources in the catalogue matching our criteria
Type:
- number
- Source:
Methods
-
add(data)
-
Add a Resource to the local collection Note: this method does not implement any uniqueness constraints on the
refs of objects/Resources being added. If this is required, use ResourceCollection#findOrCreateParameters:
Name Type Description dataObject | Resource Can be either an existing Resource or a JSON object to create a new Resource from
- Source:
- See:
Returns:
- Type
- Resource
-
destroy()
-
Destroy (DELETE) all the Resources in this ResourceCollection. If the ResourceCollection has more items than the batchSize specified in the descriptor, multiple calls will be made to the backend
- Source:
- See:
Returns:
- Type
- Promise
Example
Destroy all content that went out of availability this year
contents.all(where(field("availabilityEndAt").lessThan("2017"))).then(resources => resources.destroy()); -
explode( [size])
-
Get an array of ResourceCollections populated with a maximum of the
sizeparamater Resources in each.Sequoia has limits to how many Resources can be saved at once. This method is used internally by ResourceCollection#save and ResourceCollection#destroy to send the right amount of data.
Parameters:
Name Type Argument Default Description sizenumber <optional>
ResourcefulEndpoint#batchSize The number of Resources to return in each ResourceCollection
- Source:
- See:
Returns:
- Type
- Array.<ResourceCollection>
-
<private> fetch(newCriteria)
-
Update the collection with new data from the server. This will also return the new ResourceCollection as a convenience.
Parameters:
Name Type Argument Description newCriteriastring <nullable>
query string criteria to send to ResourcefulEndpoint#browse
- Source:
Returns:
- The new ResourceCollection just fetched
- Type
- Promise
-
find(ref)
-
Returns a Resource if it exists in the local collection with the supplied
refParameters:
Name Type Description refstring The ref of the resource to find
- Source:
Returns:
- Type
- Resource
-
findOrCreate(resource)
-
Find a resource in the local collection or create (and add to the local collection) a Resource from the supplied object
Parameters:
Name Type Description resourceResource | Object the resource to find or create
- Source:
Returns:
- Type
- Resource
-
findWhere(criteria)
-
Find a Resource in the local collection or
nullif not foundParameters:
Name Type Description criteriaCriteria - Source:
- See:
Returns:
- Type
- Resource
-
firstPage()
-
Fetch the first page of results
- Source:
- See:
Returns:
- Type
- Promise
-
getPage(pageNumber)
-
Fetch a specific page of results
Parameters:
Name Type Description pageNumbernumber the number of the page to fetch
- Source:
- See:
- To Do:
-
- Boundary checking?
- This could likely be easier to use with the initialCriteria
Returns:
- Type
- Promise
-
hasNextPage()
-
Indicates whether there is next page of results available
- Source:
Returns:
true - if there is a next page
-
lastPage()
-
Fetch the last page of results
- Source:
- See:
Returns:
- Type
- Promise
-
nextPage()
-
Fetch the next page of results
- Source:
- See:
Returns:
- Type
- Promise
-
previousPage()
-
Fetch the previous page of results
- Source:
- See:
Returns:
- Type
- Promise
-
remove(ref)
-
Remove a Resource from the local collection Will return the found Resource or null if it does not exist
Parameters:
Name Type Description refstring the ref of the resource to remove
- Source:
Returns:
- Type
- Resource
-
save( [size])
-
Save (create or update) (POST/PUT) all the Resources in this ResourceCollection. If the ResourceCollection has more items than the batchSize specified in the descriptor (or supplied batchSize), multiple calls will be made to the backend
Parameters:
Name Type Argument Default Description sizenumber <optional>
ResourcefulEndpoint#batchSize The number of Resources to save in each request
Returns:
- Type
- Promise
-
serialise()
-
Get a stringified version of this ResourceCollection that is suitable for saving to sequoia.
Simply wraps the JSON of the resource collection as an array in the
[] property - Source:
Returns:
- Type
- string
-
<private> setData(rawData)
-
Updates
rawDatawith the json returned from the Sequoia service and setscollectionto an array of `ResourcesLinked resources are collated into the individual Resources created for each item in the collection if they have relationship info. e.g. Assets that are linked to Contents will have a
contentRef- if this is present, each Content instance will have a linked.assets[] with only the related AssetsIf there is no relationship specified in linked resources, (e.g. linked Customers against Subscriptions from the Payment service) then each Subscription instance will have all of the Customers avaliable as linked.customers[]
Parameters:
Name Type Description rawDataObject json from a Sequoia
browserequest- Source:
Returns:
- self
- Type
- ResourceCollection
-
toJSON()
-
Get a JSON representation of this collection's keys/values
- Source:
Returns:
- Type
- Object
-
validate()
-
Validate all the Resources in this collection.
- Source:
- See:
Returns:
- Type
- Promise
Example
resourceCollection.validate().catch((resource) => { // Show resource.errors[] }).then(resourceCollection => resourceCollection.save()) .then(() => { // do something on successfully saving }); -
where(criteria)
-
Find a Resource in the local collection or
nullif not found The below examples assume the variable contents is populated with the result ofclient.service('metadata').then(s => s.resourcefulEndpoint('contents').all())Parameters:
Name Type Description criteriaCriteria The criteria to use for filtering the local collection
- Source:
- See:
Returns:
- Type
- Array.<Resource>
Examples
Find all with a custom filter function
// Find all of the Resources that have a title including 'die hard' that haven't had any tags applied yet contents.where(r => r.title.toLowerCase().includes('die hard') && !Array.isArray(r.tags))Find all that match a given object
// Find all of the Resources that are active and have a type of 'show' contents.where({ type: 'show', active: true })
Javascript Client SDK