Class: Moonbase::Resources::Collections::Items

Inherits:
Object
  • Object
show all
Defined in:
lib/moonbase/resources/collections/items.rb

Overview

Manage your collections and items

Instance Method Summary collapse

Constructor Details

#initialize(client:) ⇒ Items

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Items.

Parameters:



268
269
270
# File 'lib/moonbase/resources/collections/items.rb', line 268

def initialize(client:)
  @client = client
end

Instance Method Details

#create(collection_id, values:, request_options: {}) ⇒ Moonbase::Models::Item

Creates a new item in a collection.

Parameters:

Returns:

See Also:



21
22
23
24
25
26
27
28
29
30
# File 'lib/moonbase/resources/collections/items.rb', line 21

def create(collection_id, params)
  parsed, options = Moonbase::Collections::ItemCreateParams.dump_request(params)
  @client.request(
    method: :post,
    path: ["collections/%1$s/items", collection_id],
    body: parsed,
    model: Moonbase::Item,
    options: options
  )
end

#delete(id, collection_id:, request_options: {}) ⇒ nil

Permanently deletes an item.

Parameters:

  • id (String)

    The ID of the Item to delete.

  • collection_id (String)
  • request_options (Moonbase::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

  • (nil)

See Also:



148
149
150
151
152
153
154
155
156
157
158
159
160
# File 'lib/moonbase/resources/collections/items.rb', line 148

def delete(id, params)
  parsed, options = Moonbase::Collections::ItemDeleteParams.dump_request(params)
  collection_id =
    parsed.delete(:collection_id) do
      raise ArgumentError.new("missing required path argument #{_1}")
    end
  @client.request(
    method: :delete,
    path: ["collections/%1$s/items/%2$s", collection_id, id],
    model: NilClass,
    options: options
  )
end

#list(collection_id, after: nil, before: nil, limit: nil, sort: nil, request_options: {}) ⇒ Moonbase::Internal::CursorPage<Moonbase::Models::ItemPointer>

Some parameter documentations has been truncated, see Models::Collections::ItemListParams for more details.

Returns a paginated list of item pointers in a collection. Use the retrieve endpoint to get full item details including field values.

Parameters:

  • collection_id (String)

    The ID of the collection.

  • after (String)

    When specified, returns results starting immediately after the item identified b

  • before (String)

    When specified, returns results starting immediately before the item identified

  • limit (Integer)

    Maximum number of items to return per page. Must be between 1 and 100. Defaults

  • sort (Array<String>)

    Sort items by the specified field ids or keys. Prefix a field with a hyphen/minu

  • request_options (Moonbase::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/moonbase/resources/collections/items.rb', line 122

def list(collection_id, params = {})
  parsed, options = Moonbase::Collections::ItemListParams.dump_request(params)
  query = Moonbase::Internal::Util.encode_query_params(parsed)
  @client.request(
    method: :get,
    path: ["collections/%1$s/items", collection_id],
    query: query,
    page: Moonbase::Internal::CursorPage,
    model: Moonbase::ItemPointer,
    options: options
  )
end

#merge(collection_id, destination:, source:, request_options: {}) ⇒ Moonbase::Models::Item

Merges two items into a single item.

Parameters:

Returns:

See Also:



177
178
179
180
181
182
183
184
185
186
# File 'lib/moonbase/resources/collections/items.rb', line 177

def merge(collection_id, params)
  parsed, options = Moonbase::Collections::ItemMergeParams.dump_request(params)
  @client.request(
    method: :post,
    path: ["collections/%1$s/items/merge", collection_id],
    body: parsed,
    model: Moonbase::Item,
    options: options
  )
end

#retrieve(id, collection_id:, request_options: {}) ⇒ Moonbase::Models::Item

Retrieves the details of an existing item.

Parameters:

  • id (String)

    The ID of the Item to retrieve.

  • collection_id (String)
  • request_options (Moonbase::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/moonbase/resources/collections/items.rb', line 45

def retrieve(id, params)
  parsed, options = Moonbase::Collections::ItemRetrieveParams.dump_request(params)
  collection_id =
    parsed.delete(:collection_id) do
      raise ArgumentError.new("missing required path argument #{_1}")
    end
  @client.request(
    method: :get,
    path: ["collections/%1$s/items/%2$s", collection_id, id],
    model: Moonbase::Item,
    options: options
  )
end

#search(collection_id, after: nil, before: nil, limit: nil, filter: nil, include: nil, sort: nil, request_options: {}) ⇒ Moonbase::Internal::CursorPage<Moonbase::Models::Collections::ItemSearchResponse>

Some parameter documentations has been truncated, see Models::Collections::ItemSearchParams for more details.

Returns a list of items in the collection that match the given filters.

Parameters:

Returns:

See Also:



214
215
216
217
218
219
220
221
222
223
224
225
226
227
# File 'lib/moonbase/resources/collections/items.rb', line 214

def search(collection_id, params = {})
  query_params = [:after, :before, :limit]
  parsed, options = Moonbase::Collections::ItemSearchParams.dump_request(params)
  query = Moonbase::Internal::Util.encode_query_params(parsed.slice(*query_params))
  @client.request(
    method: :post,
    path: ["collections/%1$s/items/search", collection_id],
    query: query,
    body: parsed.except(*query_params),
    page: Moonbase::Internal::CursorPage,
    model: Moonbase::Models::Collections::ItemSearchResponse,
    options: options
  )
end

#update(id, collection_id:, values:, update_many_strategy: nil, update_one_strategy: nil, request_options: {}) ⇒ Moonbase::Models::Item

Some parameter documentations has been truncated, see Models::Collections::ItemUpdateParams for more details.

Updates an item.

Parameters:

Returns:

See Also:



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/moonbase/resources/collections/items.rb', line 81

def update(id, params)
  parsed, options = Moonbase::Collections::ItemUpdateParams.dump_request(params)
  collection_id =
    parsed.delete(:collection_id) do
      raise ArgumentError.new("missing required path argument #{_1}")
    end
  header_params =
    {update_many_strategy: "update-many-strategy", update_one_strategy: "update-one-strategy"}
  @client.request(
    method: :patch,
    path: ["collections/%1$s/items/%2$s", collection_id, id],
    headers: parsed.slice(*header_params.keys).transform_keys(header_params),
    body: parsed.except(*header_params.keys),
    model: Moonbase::Item,
    options: options
  )
end

#upsert(collection_id, identifiers:, values:, update_many_strategy: nil, update_one_strategy: nil, request_options: {}) ⇒ Moonbase::Models::Item

Some parameter documentations has been truncated, see Models::Collections::ItemUpsertParams for more details.

Find and update an existing item, or create a new one.

Parameters:

Returns:

See Also:



251
252
253
254
255
256
257
258
259
260
261
262
263
# File 'lib/moonbase/resources/collections/items.rb', line 251

def upsert(collection_id, params)
  parsed, options = Moonbase::Collections::ItemUpsertParams.dump_request(params)
  header_params =
    {update_many_strategy: "update-many-strategy", update_one_strategy: "update-one-strategy"}
  @client.request(
    method: :post,
    path: ["collections/%1$s/items/upsert", collection_id],
    headers: parsed.slice(*header_params.keys).transform_keys(header_params),
    body: parsed.except(*header_params.keys),
    model: Moonbase::Item,
    options: options
  )
end