fulfil_api 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 68821bbca5de486309740ca1fec47352555b874dc0a2428dd9dc3663df7db063
4
- data.tar.gz: 3b44214cf2330b643fbe50cb2d060e8e0cdfc3f0a7720bef47d2152955199407
3
+ metadata.gz: 0a281b6b98a2a9e17e00dfcfc9a69c25d981742fc6be3ed3107843381ed0ee72
4
+ data.tar.gz: 709b239f59384ab61adf1f258aea4f6f429846a7d1bebce1373694c6a3b8bd1d
5
5
  SHA512:
6
- metadata.gz: 881c1beb39b7ccefcc45b41755f858345eaf28433d06f91249d4d221f7f82f09ff5b99cff6aef56d834a5a0bec18a2ac77aea4935ea0f4978cf4e3d0405a348d
7
- data.tar.gz: 3a9645874ddc1394fbbc864c3da07432542a370e47a1a25e7117b9f0e6167d41609e61285933497c1640549b6ba0a8dd1efdf01fb1085d6d4174573444d16db2
6
+ metadata.gz: 0e992ff3b009ae88f5bf03fd50694b241eb8dfdb316c8c71d036d8e55d582018a32d9c7c306d1c2dc85cf9d12413785b44dc796a11ea9f0bec8b879416014375
7
+ data.tar.gz: b3ba21ef6d73d9d077f172535451b6ba62a7410f610271601c485e356e4df22ef5fb5c741d113b7ed43773a798a036cacc29564fcfd231807f02a9520bcf5cc2
@@ -12,18 +12,49 @@ module FulfilApi
12
12
  extend ActiveSupport::Concern
13
13
 
14
14
  class_methods do
15
+ # Creates a new resource on the model name.
16
+ #
17
+ # @param model_name [String] The name of the model to which the resource belongs.
18
+ # @params attributes [Hash] The attributes to create the resource with.
19
+ # @return [FulfilApi::Resource, false] The created resource.
20
+ #
21
+ # @example Creating a resource
22
+ # FulfilApi::Resource.create(model_name: "sale.sale", reference: "MK123")
23
+ def create(model_name:, **attributes)
24
+ resource = new(model_name: model_name)
25
+ resource.create(attributes)
26
+ rescue FulfilApi::Error
27
+ false
28
+ end
29
+
30
+ # Creates a new resource on the model name, raising an error if the create fails.
31
+ #
32
+ # @param model_name [String] The name of the model to which the resource belongs.
33
+ # @params attributes [Hash] The attributes to create the resource with.
34
+ # @return [FulfilApi::Resource] The created resource.
35
+ # @raise [FulfilApi::Error] If the create fails.
36
+ #
37
+ # @example Creating a resource
38
+ # FulfilApi::Resource.create!(model_name: "sale.sale", reference: "MK123")
39
+ def create!(model_name:, **attributes)
40
+ resource = new(model_name: model_name)
41
+ resource.create!(attributes)
42
+ end
43
+
15
44
  # Updates a resource by its ID and model name.
16
45
  #
17
46
  # @param id [String, Integer] The ID of the resource to update.
18
47
  # @param model_name [String] The name of the model to which the resource belongs.
19
48
  # @param attributes [Hash] The attributes to update on the resource.
20
- # @return [FulfilApi::Resource] The updated resource.
49
+ # @return [FulfilApi::Resource, false] The updated resource.
21
50
  #
22
51
  # @example Updating a resource
23
52
  # FulfilApi::Resource.update(id: 123, model_name: "sale.sale", reference: "MK123")
24
53
  def update(id:, model_name:, **attributes)
25
54
  resource = new(id: id, model_name: model_name)
26
55
  resource.update(attributes)
56
+ rescue FulfilApi::Error
57
+ false
27
58
  end
28
59
 
29
60
  # Updates a resource by its ID and model name, raising an error if the update fails.
@@ -42,6 +73,31 @@ module FulfilApi
42
73
  end
43
74
  end
44
75
 
76
+ # Creates a resource with the given attributes and saves it.
77
+ #
78
+ # @param attributes [Hash] The attributes to assign to the resource.
79
+ # @return [FulfilApi::Resource] The created resource.
80
+ #
81
+ # @example Creating a resource
82
+ # resource.create(reference: "MK123")
83
+ def create(attributes)
84
+ assign_attributes(attributes)
85
+ save
86
+ end
87
+
88
+ # Creates a resource with the given attributes and saves it, raising an error if saving fails.
89
+ #
90
+ # @param attributes [Hash] The attributes to assign to the resource.
91
+ # @return [FulfilApi::Resource] The created resource.
92
+ # @raise [FulfilApi::Error] If an error occurs during the create.
93
+ #
94
+ # @example Creating a resource with error raising
95
+ # resource.create(reference: "MK123")
96
+ def create!(attributes)
97
+ assign_attributes(attributes)
98
+ save!
99
+ end
100
+
45
101
  # Saves the current resource, rescuing any errors that occur and handling them based on error type.
46
102
  #
47
103
  # @return [FulfilApi::Resource, nil] Returns the resource if saved successfully, otherwise nil.
@@ -67,8 +123,8 @@ module FulfilApi
67
123
 
68
124
  if id.present?
69
125
  FulfilApi.client.put("/model/#{model_name}/#{id}", body: to_h)
70
- else # rubocop:disable Style/EmptyElse
71
- # TODO: Implement the {#create} and {#create!} methods to save a new resource
126
+ else
127
+ FulfilApi.client.post("/model/#{model_name}", body: to_h)
72
128
  end
73
129
 
74
130
  self
@@ -67,7 +67,7 @@ module FulfilApi
67
67
  # @return [FulfilApi::Resource::Relation] A new {Relation} instance with the conditions applied.
68
68
  def where(conditions)
69
69
  clone.tap do |relation|
70
- relation.conditions << conditions.flatten
70
+ relation.conditions << conditions
71
71
  relation.conditions.uniq!
72
72
  end
73
73
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FulfilApi
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.3"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fulfil_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Vermaas
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-10-03 00:00:00.000000000 Z
11
+ date: 2024-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -121,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
121
  - !ruby/object:Gem::Version
122
122
  version: '0'
123
123
  requirements: []
124
- rubygems_version: 3.5.18
124
+ rubygems_version: 3.5.11
125
125
  signing_key:
126
126
  specification_version: 4
127
127
  summary: A HTTP client to interact the Fulfil.io API