printavo-ruby 0.6.0 → 0.8.0

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.
@@ -0,0 +1,48 @@
1
+ # lib/printavo/resources/expenses.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ module Resources
6
+ class Expenses < Base
7
+ ALL_QUERY = File.read(File.join(__dir__, '../graphql/expenses/all.graphql')).freeze
8
+ FIND_QUERY = File.read(File.join(__dir__, '../graphql/expenses/find.graphql')).freeze
9
+ CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/expenses/create.graphql')).freeze
10
+ UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/expenses/update.graphql')).freeze
11
+
12
+ def all(order_id:, first: 25, after: nil)
13
+ fetch_page(order_id: order_id, first: first, after: after).records
14
+ end
15
+
16
+ def find(id)
17
+ data = @graphql.query(FIND_QUERY, variables: { id: id.to_s })
18
+ Printavo::Expense.new(data['expense'])
19
+ end
20
+
21
+ def create(**input)
22
+ data = @graphql.mutate(CREATE_MUTATION, variables: { input: camelize_keys(input) })
23
+ Printavo::Expense.new(data['expenseCreate'])
24
+ end
25
+
26
+ def update(id, **input)
27
+ data = @graphql.mutate(UPDATE_MUTATION, variables: { id: id.to_s, input: camelize_keys(input) })
28
+ Printavo::Expense.new(data['expenseUpdate'])
29
+ end
30
+
31
+ private
32
+
33
+ def fetch_page(order_id:, first: 25, after: nil, **)
34
+ data = @graphql.query(
35
+ ALL_QUERY,
36
+ variables: { orderId: order_id.to_s, first: first, after: after }
37
+ )
38
+ nodes = data['order']['expenses']['nodes'].map { |attrs| Printavo::Expense.new(attrs) }
39
+ page_info = data['order']['expenses']['pageInfo']
40
+ Printavo::Page.new(
41
+ records: nodes,
42
+ has_next_page: page_info['hasNextPage'],
43
+ end_cursor: page_info['endCursor']
44
+ )
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,72 @@
1
+ # lib/printavo/resources/fees.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ module Resources
6
+ class Fees < Base
7
+ ALL_QUERY = File.read(File.join(__dir__, '../graphql/fees/all.graphql')).freeze
8
+ FIND_QUERY = File.read(File.join(__dir__, '../graphql/fees/find.graphql')).freeze
9
+ CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/fees/create.graphql')).freeze
10
+ CREATES_MUTATION = File.read(File.join(__dir__, '../graphql/fees/creates.graphql')).freeze
11
+ UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/fees/update.graphql')).freeze
12
+ UPDATES_MUTATION = File.read(File.join(__dir__, '../graphql/fees/updates.graphql')).freeze
13
+ DELETE_MUTATION = File.read(File.join(__dir__, '../graphql/fees/delete.graphql')).freeze
14
+ DELETES_MUTATION = File.read(File.join(__dir__, '../graphql/fees/deletes.graphql')).freeze
15
+
16
+ def all(order_id:, first: 25, after: nil)
17
+ fetch_page(order_id: order_id, first: first, after: after).records
18
+ end
19
+
20
+ def find(id)
21
+ data = @graphql.query(FIND_QUERY, variables: { id: id.to_s })
22
+ Printavo::Fee.new(data['fee'])
23
+ end
24
+
25
+ def create(**input)
26
+ data = @graphql.mutate(CREATE_MUTATION, variables: { input: camelize_keys(input) })
27
+ Printavo::Fee.new(data['feeCreate'])
28
+ end
29
+
30
+ def creates(inputs)
31
+ data = @graphql.mutate(CREATES_MUTATION, variables: { inputs: inputs.map { |i| camelize_keys(i) } })
32
+ data['feeCreates'].map { |attrs| Printavo::Fee.new(attrs) }
33
+ end
34
+
35
+ def update(id, **input)
36
+ data = @graphql.mutate(UPDATE_MUTATION, variables: { id: id.to_s, input: camelize_keys(input) })
37
+ Printavo::Fee.new(data['feeUpdate'])
38
+ end
39
+
40
+ def updates(inputs)
41
+ data = @graphql.mutate(UPDATES_MUTATION, variables: { inputs: inputs.map { |i| camelize_keys(i) } })
42
+ data['feeUpdates'].map { |attrs| Printavo::Fee.new(attrs) }
43
+ end
44
+
45
+ def delete(id)
46
+ @graphql.mutate(DELETE_MUTATION, variables: { id: id.to_s })
47
+ nil
48
+ end
49
+
50
+ def deletes(ids)
51
+ @graphql.mutate(DELETES_MUTATION, variables: { ids: ids.map(&:to_s) })
52
+ nil
53
+ end
54
+
55
+ private
56
+
57
+ def fetch_page(order_id:, first: 25, after: nil, **)
58
+ data = @graphql.query(
59
+ ALL_QUERY,
60
+ variables: { orderId: order_id.to_s, first: first, after: after }
61
+ )
62
+ nodes = data['order']['fees']['nodes'].map { |attrs| Printavo::Fee.new(attrs) }
63
+ page_info = data['order']['fees']['pageInfo']
64
+ Printavo::Page.new(
65
+ records: nodes,
66
+ has_next_page: page_info['hasNextPage'],
67
+ end_cursor: page_info['endCursor']
68
+ )
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,84 @@
1
+ # lib/printavo/resources/imprints.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ module Resources
6
+ class Imprints < Base
7
+ ALL_QUERY = File.read(File.join(__dir__, '../graphql/imprints/all.graphql')).freeze
8
+ FIND_QUERY = File.read(File.join(__dir__, '../graphql/imprints/find.graphql')).freeze
9
+ CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/imprints/create.graphql')).freeze
10
+ CREATES_MUTATION = File.read(File.join(__dir__, '../graphql/imprints/creates.graphql')).freeze
11
+ UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/imprints/update.graphql')).freeze
12
+ UPDATES_MUTATION = File.read(File.join(__dir__, '../graphql/imprints/updates.graphql')).freeze
13
+ DELETE_MUTATION = File.read(File.join(__dir__, '../graphql/imprints/delete.graphql')).freeze
14
+ DELETES_MUTATION = File.read(File.join(__dir__, '../graphql/imprints/deletes.graphql')).freeze
15
+ MOCKUP_CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/imprints/mockup_create.graphql')).freeze
16
+ MOCKUP_CREATES_MUTATION = File.read(File.join(__dir__, '../graphql/imprints/mockup_creates.graphql')).freeze
17
+
18
+ def all(line_item_group_id:, first: 25, after: nil)
19
+ fetch_page(line_item_group_id: line_item_group_id, first: first, after: after).records
20
+ end
21
+
22
+ def find(id)
23
+ data = @graphql.query(FIND_QUERY, variables: { id: id.to_s })
24
+ Printavo::Imprint.new(data['imprint'])
25
+ end
26
+
27
+ def create(**input)
28
+ data = @graphql.mutate(CREATE_MUTATION, variables: { input: camelize_keys(input) })
29
+ Printavo::Imprint.new(data['imprintCreate'])
30
+ end
31
+
32
+ def creates(inputs)
33
+ data = @graphql.mutate(CREATES_MUTATION, variables: { inputs: inputs.map { |i| camelize_keys(i) } })
34
+ data['imprintCreates'].map { |attrs| Printavo::Imprint.new(attrs) }
35
+ end
36
+
37
+ def update(id, **input)
38
+ data = @graphql.mutate(UPDATE_MUTATION, variables: { id: id.to_s, input: camelize_keys(input) })
39
+ Printavo::Imprint.new(data['imprintUpdate'])
40
+ end
41
+
42
+ def updates(inputs)
43
+ data = @graphql.mutate(UPDATES_MUTATION, variables: { inputs: inputs.map { |i| camelize_keys(i) } })
44
+ data['imprintUpdates'].map { |attrs| Printavo::Imprint.new(attrs) }
45
+ end
46
+
47
+ def delete(id)
48
+ @graphql.mutate(DELETE_MUTATION, variables: { id: id.to_s })
49
+ nil
50
+ end
51
+
52
+ def deletes(ids)
53
+ @graphql.mutate(DELETES_MUTATION, variables: { ids: ids.map(&:to_s) })
54
+ nil
55
+ end
56
+
57
+ def mockup_create(**input)
58
+ data = @graphql.mutate(MOCKUP_CREATE_MUTATION, variables: { input: camelize_keys(input) })
59
+ data['imprintMockupCreate']
60
+ end
61
+
62
+ def mockup_creates(inputs)
63
+ data = @graphql.mutate(MOCKUP_CREATES_MUTATION, variables: { inputs: inputs.map { |i| camelize_keys(i) } })
64
+ data['imprintMockupCreates']
65
+ end
66
+
67
+ private
68
+
69
+ def fetch_page(line_item_group_id:, first: 25, after: nil, **)
70
+ data = @graphql.query(
71
+ ALL_QUERY,
72
+ variables: { lineItemGroupId: line_item_group_id.to_s, first: first, after: after }
73
+ )
74
+ nodes = data['lineItemGroup']['imprints']['nodes'].map { |attrs| Printavo::Imprint.new(attrs) }
75
+ page_info = data['lineItemGroup']['imprints']['pageInfo']
76
+ Printavo::Page.new(
77
+ records: nodes,
78
+ has_next_page: page_info['hasNextPage'],
79
+ end_cursor: page_info['endCursor']
80
+ )
81
+ end
82
+ end
83
+ end
84
+ end
@@ -50,12 +50,6 @@ module Printavo
50
50
  end_cursor: page_info['endCursor']
51
51
  )
52
52
  end
53
-
54
- def camelize_keys(hash)
55
- hash.transform_keys do |key|
56
- key.to_s.gsub(/_([a-z])/) { ::Regexp.last_match(1).upcase }
57
- end
58
- end
59
53
  end
60
54
  end
61
55
  end
@@ -0,0 +1,72 @@
1
+ # lib/printavo/resources/line_item_groups.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ module Resources
6
+ class LineItemGroups < Base
7
+ ALL_QUERY = File.read(File.join(__dir__, '../graphql/line_item_groups/all.graphql')).freeze
8
+ FIND_QUERY = File.read(File.join(__dir__, '../graphql/line_item_groups/find.graphql')).freeze
9
+ CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/line_item_groups/create.graphql')).freeze
10
+ CREATES_MUTATION = File.read(File.join(__dir__, '../graphql/line_item_groups/creates.graphql')).freeze
11
+ UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/line_item_groups/update.graphql')).freeze
12
+ UPDATES_MUTATION = File.read(File.join(__dir__, '../graphql/line_item_groups/updates.graphql')).freeze
13
+ DELETE_MUTATION = File.read(File.join(__dir__, '../graphql/line_item_groups/delete.graphql')).freeze
14
+ DELETES_MUTATION = File.read(File.join(__dir__, '../graphql/line_item_groups/deletes.graphql')).freeze
15
+
16
+ def all(order_id:, first: 25, after: nil)
17
+ fetch_page(order_id: order_id, first: first, after: after).records
18
+ end
19
+
20
+ def find(id)
21
+ data = @graphql.query(FIND_QUERY, variables: { id: id.to_s })
22
+ Printavo::LineItemGroup.new(data['lineItemGroup'])
23
+ end
24
+
25
+ def create(**input)
26
+ data = @graphql.mutate(CREATE_MUTATION, variables: { input: camelize_keys(input) })
27
+ Printavo::LineItemGroup.new(data['lineItemGroupCreate'])
28
+ end
29
+
30
+ def creates(inputs)
31
+ data = @graphql.mutate(CREATES_MUTATION, variables: { inputs: inputs.map { |i| camelize_keys(i) } })
32
+ data['lineItemGroupCreates'].map { |attrs| Printavo::LineItemGroup.new(attrs) }
33
+ end
34
+
35
+ def update(id, **input)
36
+ data = @graphql.mutate(UPDATE_MUTATION, variables: { id: id.to_s, input: camelize_keys(input) })
37
+ Printavo::LineItemGroup.new(data['lineItemGroupUpdate'])
38
+ end
39
+
40
+ def updates(inputs)
41
+ data = @graphql.mutate(UPDATES_MUTATION, variables: { inputs: inputs.map { |i| camelize_keys(i) } })
42
+ data['lineItemGroupUpdates'].map { |attrs| Printavo::LineItemGroup.new(attrs) }
43
+ end
44
+
45
+ def delete(id)
46
+ @graphql.mutate(DELETE_MUTATION, variables: { id: id.to_s })
47
+ nil
48
+ end
49
+
50
+ def deletes(ids)
51
+ @graphql.mutate(DELETES_MUTATION, variables: { ids: ids.map(&:to_s) })
52
+ nil
53
+ end
54
+
55
+ private
56
+
57
+ def fetch_page(order_id:, first: 25, after: nil, **)
58
+ data = @graphql.query(
59
+ ALL_QUERY,
60
+ variables: { orderId: order_id.to_s, first: first, after: after }
61
+ )
62
+ nodes = data['order']['lineItemGroups']['nodes'].map { |attrs| Printavo::LineItemGroup.new(attrs) }
63
+ page_info = data['order']['lineItemGroups']['pageInfo']
64
+ Printavo::Page.new(
65
+ records: nodes,
66
+ has_next_page: page_info['hasNextPage'],
67
+ end_cursor: page_info['endCursor']
68
+ )
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,84 @@
1
+ # lib/printavo/resources/line_items.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ module Resources
6
+ class LineItems < Base
7
+ ALL_QUERY = File.read(File.join(__dir__, '../graphql/line_items/all.graphql')).freeze
8
+ FIND_QUERY = File.read(File.join(__dir__, '../graphql/line_items/find.graphql')).freeze
9
+ CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/line_items/create.graphql')).freeze
10
+ CREATES_MUTATION = File.read(File.join(__dir__, '../graphql/line_items/creates.graphql')).freeze
11
+ UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/line_items/update.graphql')).freeze
12
+ UPDATES_MUTATION = File.read(File.join(__dir__, '../graphql/line_items/updates.graphql')).freeze
13
+ DELETE_MUTATION = File.read(File.join(__dir__, '../graphql/line_items/delete.graphql')).freeze
14
+ DELETES_MUTATION = File.read(File.join(__dir__, '../graphql/line_items/deletes.graphql')).freeze
15
+ MOCKUP_CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/line_items/mockup_create.graphql')).freeze
16
+ MOCKUP_CREATES_MUTATION = File.read(File.join(__dir__, '../graphql/line_items/mockup_creates.graphql')).freeze
17
+
18
+ def all(line_item_group_id:, first: 25, after: nil)
19
+ fetch_page(line_item_group_id: line_item_group_id, first: first, after: after).records
20
+ end
21
+
22
+ def find(id)
23
+ data = @graphql.query(FIND_QUERY, variables: { id: id.to_s })
24
+ Printavo::LineItem.new(data['lineItem'])
25
+ end
26
+
27
+ def create(**input)
28
+ data = @graphql.mutate(CREATE_MUTATION, variables: { input: camelize_keys(input) })
29
+ Printavo::LineItem.new(data['lineItemCreate'])
30
+ end
31
+
32
+ def creates(inputs)
33
+ data = @graphql.mutate(CREATES_MUTATION, variables: { inputs: inputs.map { |i| camelize_keys(i) } })
34
+ data['lineItemCreates'].map { |attrs| Printavo::LineItem.new(attrs) }
35
+ end
36
+
37
+ def update(id, **input)
38
+ data = @graphql.mutate(UPDATE_MUTATION, variables: { id: id.to_s, input: camelize_keys(input) })
39
+ Printavo::LineItem.new(data['lineItemUpdate'])
40
+ end
41
+
42
+ def updates(inputs)
43
+ data = @graphql.mutate(UPDATES_MUTATION, variables: { inputs: inputs.map { |i| camelize_keys(i) } })
44
+ data['lineItemUpdates'].map { |attrs| Printavo::LineItem.new(attrs) }
45
+ end
46
+
47
+ def delete(id)
48
+ @graphql.mutate(DELETE_MUTATION, variables: { id: id.to_s })
49
+ nil
50
+ end
51
+
52
+ def deletes(ids)
53
+ @graphql.mutate(DELETES_MUTATION, variables: { ids: ids.map(&:to_s) })
54
+ nil
55
+ end
56
+
57
+ def mockup_create(**input)
58
+ data = @graphql.mutate(MOCKUP_CREATE_MUTATION, variables: { input: camelize_keys(input) })
59
+ data['lineItemMockupCreate']
60
+ end
61
+
62
+ def mockup_creates(inputs)
63
+ data = @graphql.mutate(MOCKUP_CREATES_MUTATION, variables: { inputs: inputs.map { |i| camelize_keys(i) } })
64
+ data['lineItemMockupCreates']
65
+ end
66
+
67
+ private
68
+
69
+ def fetch_page(line_item_group_id:, first: 25, after: nil, **)
70
+ data = @graphql.query(
71
+ ALL_QUERY,
72
+ variables: { lineItemGroupId: line_item_group_id.to_s, first: first, after: after }
73
+ )
74
+ nodes = data['lineItemGroup']['lineItems']['nodes'].map { |attrs| Printavo::LineItem.new(attrs) }
75
+ page_info = data['lineItemGroup']['lineItems']['pageInfo']
76
+ Printavo::Page.new(
77
+ records: nodes,
78
+ has_next_page: page_info['hasNextPage'],
79
+ end_cursor: page_info['endCursor']
80
+ )
81
+ end
82
+ end
83
+ end
84
+ end
@@ -87,12 +87,6 @@ module Printavo
87
87
  normalized['totalPrice'] ||= attrs['total']
88
88
  Printavo::Order.new(normalized)
89
89
  end
90
-
91
- def camelize_keys(hash)
92
- hash.transform_keys do |key|
93
- key.to_s.gsub(/_([a-z])/) { ::Regexp.last_match(1).upcase }
94
- end
95
- end
96
90
  end
97
91
  end
98
92
  end
@@ -0,0 +1,59 @@
1
+ # lib/printavo/resources/tasks.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ module Resources
6
+ class Tasks < Base
7
+ ALL_QUERY = File.read(File.join(__dir__, '../graphql/tasks/all.graphql')).freeze
8
+ FIND_QUERY = File.read(File.join(__dir__, '../graphql/tasks/find.graphql')).freeze
9
+ CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/tasks/create.graphql')).freeze
10
+ UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/tasks/update.graphql')).freeze
11
+ DELETE_MUTATION = File.read(File.join(__dir__, '../graphql/tasks/delete.graphql')).freeze
12
+
13
+ def all(first: 25, after: nil)
14
+ fetch_page(first: first, after: after).records
15
+ end
16
+
17
+ def find(id)
18
+ data = @graphql.query(FIND_QUERY, variables: { id: id.to_s })
19
+ Printavo::Task.new(data['task'])
20
+ end
21
+
22
+ def create(**input)
23
+ data = @graphql.mutate(CREATE_MUTATION, variables: { input: camelize_keys(input) })
24
+ Printavo::Task.new(data['taskCreate'])
25
+ end
26
+
27
+ def update(id, **input)
28
+ data = @graphql.mutate(UPDATE_MUTATION,
29
+ variables: { id: id.to_s, input: camelize_keys(input) })
30
+ Printavo::Task.new(data['taskUpdate'])
31
+ end
32
+
33
+ # Marks a task complete by setting completedAt to the current time.
34
+ def complete(id)
35
+ require 'time'
36
+ update(id, completed_at: Time.now.utc.iso8601)
37
+ end
38
+
39
+ # Deletes a task. Raises on failure; returns nil on success.
40
+ def delete(id)
41
+ @graphql.mutate(DELETE_MUTATION, variables: { id: id.to_s })
42
+ nil
43
+ end
44
+
45
+ private
46
+
47
+ def fetch_page(first: 25, after: nil, **)
48
+ data = @graphql.query(ALL_QUERY, variables: { first: first, after: after })
49
+ nodes = data['tasks']['nodes'].map { |attrs| Printavo::Task.new(attrs) }
50
+ page_info = data['tasks']['pageInfo']
51
+ Printavo::Page.new(
52
+ records: nodes,
53
+ has_next_page: page_info['hasNextPage'],
54
+ end_cursor: page_info['endCursor']
55
+ )
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,53 @@
1
+ # lib/printavo/resources/threads.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ module Resources
6
+ class Threads < Base
7
+ ALL_QUERY = File.read(File.join(__dir__, '../graphql/threads/all.graphql')).freeze
8
+ FIND_QUERY = File.read(File.join(__dir__, '../graphql/threads/find.graphql')).freeze
9
+ UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/threads/update.graphql')).freeze
10
+ EMAIL_MESSAGE_CREATE_MUTATION =
11
+ File.read(File.join(__dir__, '../graphql/threads/email_message_create.graphql')).freeze
12
+
13
+ def all(order_id:, first: 25, after: nil)
14
+ fetch_page(order_id: order_id, first: first, after: after).records
15
+ end
16
+
17
+ def find(id)
18
+ data = @graphql.query(FIND_QUERY, variables: { id: id.to_s })
19
+ Printavo::Thread.new(data['thread'])
20
+ end
21
+
22
+ def update(id, **input)
23
+ data = @graphql.mutate(UPDATE_MUTATION,
24
+ variables: { id: id.to_s, input: camelize_keys(input) })
25
+ Printavo::Thread.new(data['threadUpdate'])
26
+ end
27
+
28
+ # Sends an email message on a thread. Returns the raw message hash.
29
+ # A dedicated EmailMessage model is planned for a future version.
30
+ def email_message_create(**input)
31
+ data = @graphql.mutate(EMAIL_MESSAGE_CREATE_MUTATION,
32
+ variables: { input: camelize_keys(input) })
33
+ data['emailMessageCreate']
34
+ end
35
+
36
+ private
37
+
38
+ def fetch_page(order_id:, first: 25, after: nil, **)
39
+ data = @graphql.query(
40
+ ALL_QUERY,
41
+ variables: { orderId: order_id.to_s, first: first, after: after }
42
+ )
43
+ nodes = data['order']['threads']['nodes'].map { |attrs| Printavo::Thread.new(attrs) }
44
+ page_info = data['order']['threads']['pageInfo']
45
+ Printavo::Page.new(
46
+ records: nodes,
47
+ has_next_page: page_info['hasNextPage'],
48
+ end_cursor: page_info['endCursor']
49
+ )
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,29 @@
1
+ # lib/printavo/resources/transaction_payments.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ module Resources
6
+ class TransactionPayments < Base
7
+ CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/transaction_payments/create.graphql')).freeze
8
+ UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/transaction_payments/update.graphql')).freeze
9
+ DELETE_MUTATION = File.read(File.join(__dir__, '../graphql/transaction_payments/delete.graphql')).freeze
10
+
11
+ def create(**input)
12
+ data = @graphql.mutate(CREATE_MUTATION, variables: { input: camelize_keys(input) })
13
+ Printavo::TransactionPayment.new(data['transactionPaymentCreate'])
14
+ end
15
+
16
+ def update(id, **input)
17
+ data = @graphql.mutate(UPDATE_MUTATION,
18
+ variables: { id: id.to_s, input: camelize_keys(input) })
19
+ Printavo::TransactionPayment.new(data['transactionPaymentUpdate'])
20
+ end
21
+
22
+ # Deletes a transaction payment. Raises on failure; returns nil on success.
23
+ def delete(id)
24
+ @graphql.mutate(DELETE_MUTATION, variables: { id: id.to_s })
25
+ nil
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,36 @@
1
+ # lib/printavo/resources/transactions.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ module Resources
6
+ class Transactions < Base
7
+ ALL_QUERY = File.read(File.join(__dir__, '../graphql/transactions/all.graphql')).freeze
8
+ FIND_QUERY = File.read(File.join(__dir__, '../graphql/transactions/find.graphql')).freeze
9
+
10
+ def all(order_id:, first: 25, after: nil)
11
+ fetch_page(order_id: order_id, first: first, after: after).records
12
+ end
13
+
14
+ def find(id)
15
+ data = @graphql.query(FIND_QUERY, variables: { id: id.to_s })
16
+ Printavo::Transaction.new(data['transaction'])
17
+ end
18
+
19
+ private
20
+
21
+ def fetch_page(order_id:, first: 25, after: nil, **)
22
+ data = @graphql.query(
23
+ ALL_QUERY,
24
+ variables: { orderId: order_id.to_s, first: first, after: after }
25
+ )
26
+ nodes = data['order']['transactions']['nodes'].map { |attrs| Printavo::Transaction.new(attrs) }
27
+ page_info = data['order']['transactions']['pageInfo']
28
+ Printavo::Page.new(
29
+ records: nodes,
30
+ has_next_page: page_info['hasNextPage'],
31
+ end_cursor: page_info['endCursor']
32
+ )
33
+ end
34
+ end
35
+ end
36
+ end
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Printavo
5
- VERSION = '0.6.0'
5
+ VERSION = '0.8.0'
6
6
  end
data/lib/printavo.rb CHANGED
@@ -19,7 +19,16 @@ require_relative 'printavo/models/invoice'
19
19
  require_relative 'printavo/models/status'
20
20
  require_relative 'printavo/models/order'
21
21
  require_relative 'printavo/models/job'
22
+ require_relative 'printavo/models/expense'
23
+ require_relative 'printavo/models/fee'
24
+ require_relative 'printavo/models/imprint'
22
25
  require_relative 'printavo/models/inquiry'
26
+ require_relative 'printavo/models/line_item'
27
+ require_relative 'printavo/models/line_item_group'
28
+ require_relative 'printavo/models/task'
29
+ require_relative 'printavo/models/thread'
30
+ require_relative 'printavo/models/transaction'
31
+ require_relative 'printavo/models/transaction_payment'
23
32
  require_relative 'printavo/resources/base'
24
33
  require_relative 'printavo/resources/account'
25
34
  require_relative 'printavo/resources/contacts'
@@ -28,7 +37,16 @@ require_relative 'printavo/resources/invoices'
28
37
  require_relative 'printavo/resources/statuses'
29
38
  require_relative 'printavo/resources/orders'
30
39
  require_relative 'printavo/resources/jobs'
40
+ require_relative 'printavo/resources/expenses'
41
+ require_relative 'printavo/resources/fees'
42
+ require_relative 'printavo/resources/imprints'
31
43
  require_relative 'printavo/resources/inquiries'
44
+ require_relative 'printavo/resources/line_item_groups'
45
+ require_relative 'printavo/resources/line_items'
46
+ require_relative 'printavo/resources/tasks'
47
+ require_relative 'printavo/resources/threads'
48
+ require_relative 'printavo/resources/transactions'
49
+ require_relative 'printavo/resources/transaction_payments'
32
50
  require_relative 'printavo/webhooks'
33
51
  require_relative 'printavo/client'
34
52
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: printavo-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stan Carver II
@@ -276,21 +276,39 @@ files:
276
276
  - lib/printavo/models/base.rb
277
277
  - lib/printavo/models/contact.rb
278
278
  - lib/printavo/models/customer.rb
279
+ - lib/printavo/models/expense.rb
280
+ - lib/printavo/models/fee.rb
281
+ - lib/printavo/models/imprint.rb
279
282
  - lib/printavo/models/inquiry.rb
280
283
  - lib/printavo/models/invoice.rb
281
284
  - lib/printavo/models/job.rb
285
+ - lib/printavo/models/line_item.rb
286
+ - lib/printavo/models/line_item_group.rb
282
287
  - lib/printavo/models/order.rb
283
288
  - lib/printavo/models/status.rb
289
+ - lib/printavo/models/task.rb
290
+ - lib/printavo/models/thread.rb
291
+ - lib/printavo/models/transaction.rb
292
+ - lib/printavo/models/transaction_payment.rb
284
293
  - lib/printavo/page.rb
285
294
  - lib/printavo/resources/account.rb
286
295
  - lib/printavo/resources/base.rb
287
296
  - lib/printavo/resources/contacts.rb
288
297
  - lib/printavo/resources/customers.rb
298
+ - lib/printavo/resources/expenses.rb
299
+ - lib/printavo/resources/fees.rb
300
+ - lib/printavo/resources/imprints.rb
289
301
  - lib/printavo/resources/inquiries.rb
290
302
  - lib/printavo/resources/invoices.rb
291
303
  - lib/printavo/resources/jobs.rb
304
+ - lib/printavo/resources/line_item_groups.rb
305
+ - lib/printavo/resources/line_items.rb
292
306
  - lib/printavo/resources/orders.rb
293
307
  - lib/printavo/resources/statuses.rb
308
+ - lib/printavo/resources/tasks.rb
309
+ - lib/printavo/resources/threads.rb
310
+ - lib/printavo/resources/transaction_payments.rb
311
+ - lib/printavo/resources/transactions.rb
294
312
  - lib/printavo/version.rb
295
313
  - lib/printavo/webhooks.rb
296
314
  homepage: https://github.com/scarver2/printavo-ruby