ecoportal-api-graphql 0.3.6 → 0.3.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -1
  3. data/lib/ecoportal/api/common/graphql/client.rb +5 -2
  4. data/lib/ecoportal/api/common/graphql/query_integration.rb +2 -2
  5. data/lib/ecoportal/api/graphql/base/action.rb +8 -7
  6. data/lib/ecoportal/api/graphql/base/file_attachment.rb +1 -1
  7. data/lib/ecoportal/api/graphql/base/location_classification_type.rb +13 -0
  8. data/lib/ecoportal/api/graphql/base/location_node.rb +6 -1
  9. data/lib/ecoportal/api/graphql/base/location_structure.rb +2 -2
  10. data/lib/ecoportal/api/graphql/base.rb +1 -0
  11. data/lib/ecoportal/api/graphql/builder/action.rb +25 -0
  12. data/lib/ecoportal/api/graphql/builder.rb +1 -0
  13. data/lib/ecoportal/api/graphql/fragment/location_node.rb +5 -0
  14. data/lib/ecoportal/api/graphql/fragment.rb +11 -2
  15. data/lib/ecoportal/api/graphql/helpers/locations_tree.rb +12 -5
  16. data/lib/ecoportal/api/graphql/input/action/archive.rb +15 -0
  17. data/lib/ecoportal/api/graphql/input/action.rb +12 -0
  18. data/lib/ecoportal/api/graphql/input.rb +1 -0
  19. data/lib/ecoportal/api/graphql/logic/base_query.rb +96 -0
  20. data/lib/ecoportal/api/graphql/logic/mutation.rb +1 -49
  21. data/lib/ecoportal/api/graphql/logic/query.rb +1 -85
  22. data/lib/ecoportal/api/graphql/logic.rb +1 -0
  23. data/lib/ecoportal/api/graphql/model/action.rb +8 -9
  24. data/lib/ecoportal/api/graphql/model/location_node.rb +1 -0
  25. data/lib/ecoportal/api/graphql/model/location_structure.rb +2 -1
  26. data/lib/ecoportal/api/graphql/model/organization.rb +1 -0
  27. data/lib/ecoportal/api/graphql/mutation/action/archive.rb +41 -0
  28. data/lib/ecoportal/api/graphql/mutation/action.rb +12 -0
  29. data/lib/ecoportal/api/graphql/mutation.rb +1 -0
  30. data/lib/ecoportal/api/graphql/payload/action/archive.rb +13 -0
  31. data/lib/ecoportal/api/graphql/payload/action.rb +12 -0
  32. data/lib/ecoportal/api/graphql/payload.rb +1 -0
  33. data/lib/ecoportal/api/graphql/query/location_structure.rb +4 -0
  34. data/lib/ecoportal/api/graphql/query/location_structures.rb +3 -0
  35. data/lib/ecoportal/api/graphql.rb +5 -0
  36. data/lib/ecoportal/api/graphql_version.rb +1 -1
  37. metadata +12 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 17f9bb4aed7ac9d69f595b1f3501a1268d22183dd4a479740ae12f9a26343a25
4
- data.tar.gz: 40c3685c22e3e43aaa68ba8ba1ecb3a7ca385070d5d014c5674e1bbd3bca813b
3
+ metadata.gz: 954a7b6f24cb89c28f8a6b02503353e9bc9453e07ca862a3862a9b2c371c9f07
4
+ data.tar.gz: 6ef1faafa1dc3d93752c4c241d362266c7314a2db1ea3ab03b7aad8f81fef4d7
5
5
  SHA512:
6
- metadata.gz: d1b8d8375dc608337bcbdd4b34a4bbb8da3e4f6cf50649afccb0a2558a9b4be51ef8a208870d43a1145a0ce374a031761989941bd1097d78289d6a5f02f69fa5
7
- data.tar.gz: 5e12819b2085d2f8a9a813a025892feeff4fadc7a80267f6180816746bcea29d9b7057384c406a6365604f52f574123796b97f87a44455c0f955bc29dfc124f5
6
+ metadata.gz: a22aad41024397365cccf44321c72bfdf702e56729691b5d7e4a7169e076c1b1ed11ab5c14f0e379fff65d35ff35220c34d2238db5ec47ad01a4f7c553767901
7
+ data.tar.gz: afd2b3bbeabcafcba32ad6769fa5551c463689e0a5e0d9d0f34b3684eca5732f300c7300b935c70e7e490e2b960b6dd848e87cf3b1f9bf27058e723fa52de9eb
data/CHANGELOG.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Change Log
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
- ## [0.3.7] - 2023-04-xx
4
+ ## [0.3.9] - 2023-06-xx
5
5
 
6
6
  ### Added
7
7
  ### Changed
@@ -13,6 +13,21 @@ All notable changes to this project will be documented in this file.
13
13
  - Analyse how to "DSL" currentOrganization.action.activities
14
14
  - review `path` tracking
15
15
 
16
+ ## [0.3.8] - 2023-07-xx
17
+
18
+ ### Added
19
+ - Integration for archiving actions.
20
+ - `LocationNodeInterface` -> support for `classifications`
21
+ - `Treeify` to dump more data per node (classifications)
22
+
23
+ ### Fixed
24
+ - Silenced waning messages when redefining `Fragment`s
25
+
26
+ ## [0.3.7] - 2023-05-23
27
+
28
+ ### Fixed
29
+ - `Ecoportal::API::Common::GraphQL::Client` adjusted `read_timeout` and `write_timeout` to `90` seconds.
30
+
16
31
  ## [0.3.6] - 2023-04-17
17
32
 
18
33
  ### Changed
@@ -6,6 +6,9 @@ module Ecoportal
6
6
  class Client < ::Graphlient::Client
7
7
  attr_accessor :org_id, :host
8
8
 
9
+ READ_TIMEOUT = 90
10
+ WRITE_TIMEOUT = 90
11
+
9
12
  include Ecoportal::API::Common::GraphQL::AuthService
10
13
 
11
14
  def initialize(email: nil, pass: nil, org_id: self.org_id,
@@ -22,8 +25,8 @@ module Ecoportal
22
25
  'Authorization' => "Bearer #{session_token(host: host)}"
23
26
  },
24
27
  http_options: {
25
- read_timeout: 20,
26
- write_timeout: 30
28
+ read_timeout: READ_TIMEOUT,
29
+ write_timeout: WRITE_TIMEOUT
27
30
  }.tap do |options|
28
31
  options.merge!(schema_path: schema_path) unless @no_schema
29
32
  end
@@ -28,8 +28,8 @@ module Ecoportal
28
28
  define_method(class_method) do
29
29
  final_path = path + [subpath].flatten.compact
30
30
  resolve_class(query_klass).tap do |klass|
31
- unless klass <= Ecoportal::API::GraphQL::Logic::Query
32
- raise "Expected query_klass to be of type Ecoportal::API::GraphQL::Logic::Query. Given: #{klass}"
31
+ unless klass <= Ecoportal::API::GraphQL::Logic::BaseQuery
32
+ raise "Expected query_klass to be of type Ecoportal::API::GraphQL::Logic::BaseQuery. Given: #{klass}"
33
33
  end
34
34
  end.new(client, base_path: final_path)
35
35
  end
@@ -22,13 +22,14 @@ module Ecoportal
22
22
  passthrough :completerId
23
23
 
24
24
  passthrough :timeZone
25
- embeds_one :dueDate, klass: GraphQL::Base::DateTime
26
- embeds_one :reminderDate, klass: GraphQL::Base::DateTime
27
- embeds_one :createdAt, klass: GraphQL::Base::DateTime
28
- embeds_one :updatedAt, klass: GraphQL::Base::DateTime
29
- embeds_one :completedAt, klass: GraphQL::Base::DateTime
30
- embeds_one :openededAt, klass: GraphQL::Base::DateTime
31
- embeds_one :closedAt, klass: GraphQL::Base::DateTime
25
+ embeds_one :dueDate, klass: Base::DateTime
26
+ embeds_one :reminderDate, klass: Base::DateTime
27
+ embeds_one :createdAt, klass: Base::DateTime
28
+ embeds_one :updatedAt, klass: Base::DateTime
29
+ embeds_one :completedAt, klass: Base::DateTime
30
+ embeds_one :openededAt, klass: Base::DateTime
31
+ embeds_one :closedAt, klass: Base::DateTime
32
+ embeds_one :dueOrClosedDate, klass: Base::DateTime
32
33
  end
33
34
  end
34
35
  end
@@ -7,7 +7,7 @@ module Ecoportal
7
7
  passthrough :attachmentFileSize, :attachmentFileName, :attachmentContentType
8
8
  passthrough :urlType, :activeName
9
9
  passthrough :userId, :userName
10
- embeds_one :attachmentUpdatedAt, klass: GraphQL::Base::DateTime
10
+ embeds_one :attachmentUpdatedAt, klass: Base::DateTime
11
11
  end
12
12
  end
13
13
  end
@@ -0,0 +1,13 @@
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Base
5
+ class LocationClassificationType < Ecoportal::API::GraphQL::Base::Model
6
+ passkey :id
7
+ passthrough :name
8
+ passboolean :active
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -4,11 +4,16 @@ module Ecoportal
4
4
  module Base
5
5
  class LocationNode < Ecoportal::API::GraphQL::Base::Model
6
6
  passkey :id
7
- passthrough :name, :parent, :parentId
7
+ passthrough :name
8
8
  passthrough :weight
9
9
  embeds_one :parent, klass: Base::LocationNode, nullable: true
10
10
  passboolean :archived
11
11
  passthrough :archivedToken
12
+ embeds_many :classifications, klass: Base::LocationClassificationType
13
+
14
+ def parentId
15
+ parent&.id
16
+ end
12
17
  end
13
18
  end
14
19
  end
@@ -8,8 +8,8 @@ module Ecoportal
8
8
  passkey :id
9
9
  passthrough :name, :weight
10
10
  passboolean :archived, :published, :visitorManagementEnabled
11
- embeds_many :nodes, klass: Ecoportal::API::GraphQL::Base::LocationNode, order_key: :weight
12
- passthrough :draft
11
+ embeds_one :updatedAt, klass: Base::DateTime
12
+ embeds_many :nodes, klass: Base::LocationNode, order_key: :weight
13
13
 
14
14
  def treeify
15
15
  self.class.treeify(nodes)
@@ -10,6 +10,7 @@ end
10
10
  require 'ecoportal/api/graphql/base/model'
11
11
  require 'ecoportal/api/graphql/base/date_time'
12
12
  require 'ecoportal/api/graphql/base/page_info'
13
+ require 'ecoportal/api/graphql/base/location_classification_type'
13
14
  require 'ecoportal/api/graphql/base/location_node'
14
15
  require 'ecoportal/api/graphql/base/location_structure'
15
16
  require 'ecoportal/api/graphql/base/person_member'
@@ -0,0 +1,25 @@
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Builder
5
+ class Action
6
+ attr_reader :client
7
+
8
+ def initialize(client)
9
+ @client = client
10
+ end
11
+
12
+ def archive(**kargs, &block)
13
+ archiveMutation.query(**kargs, &block)
14
+ end
15
+
16
+ private
17
+
18
+ def archiveMutation
19
+ Ecoportal::API::GraphQL::Mutation::Action::Archive.new(client)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -8,3 +8,4 @@ module Ecoportal
8
8
  end
9
9
 
10
10
  require 'ecoportal/api/graphql/builder/location_structure'
11
+ require 'ecoportal/api/graphql/builder/action'
@@ -13,6 +13,11 @@ module Ecoportal
13
13
  id
14
14
  name
15
15
  }
16
+ classifications {
17
+ active
18
+ id
19
+ name
20
+ }
16
21
  }
17
22
  GRAPHQL
18
23
  end
@@ -29,13 +29,22 @@ module Ecoportal
29
29
  def define(sym, heredoc, namespace: ::Fragment)
30
30
  namespace.send(:remove_const, sym) if namespace.const_defined?(sym)
31
31
  client.parse(heredoc).tap do |fragment|
32
- namespace.const_set(sym, fragment)
33
- ::Fragment.const_set(sym, fragment) unless namespace == ::Fragment
32
+ without_warnings do
33
+ namespace.const_set(sym, fragment)
34
+ ::Fragment.const_set(sym, fragment) unless namespace == ::Fragment
35
+ end
34
36
  end
35
37
  end
36
38
 
37
39
  private
38
40
 
41
+ def without_warnings
42
+ original_verbose, $VERBOSE = $VERBOSE, nil
43
+ yield if block_given?
44
+ ensure
45
+ $VERBOSE = original_verbose
46
+ end
47
+
39
48
  def parse
40
49
  fragments = self.class.fragments.each_with_object({}) do |(sym, heredoc), out|
41
50
  out[sym] = define(sym, heredoc, namespace: self.class)
@@ -16,12 +16,19 @@ module Ecoportal
16
16
 
17
17
  def get_children(node_id, parents)
18
18
  (parents[node_id&.upcase] ||= []).each_with_object([]) do |child, results|
19
+ class_types = child.classifications || []
20
+ class_ids = class_types.map(&:id)
21
+ class_names = class_types.map(&:name)
22
+
19
23
  results << {
20
- "id" => child.id,
21
- "name" => child.name,
22
- "weight" => child.weight,
23
- "archived" => child.archived,
24
- "archived_token" => child.archivedToken,
24
+ "id" => child.id,
25
+ "name" => child.name,
26
+ "weight" => child.weight,
27
+ "parent_id" => node_id,
28
+ "archived" => child.archived,
29
+ "archived_token" => child.archivedToken,
30
+ "classifications" => class_ids,
31
+ "classification_names" => class_names,
25
32
  "nodes" => get_children(child.id, parents).compact
26
33
  }
27
34
  end
@@ -0,0 +1,15 @@
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Input
5
+ module Action
6
+ class Archive < Ecoportal::API::GraphQL::Base::Model
7
+ passkey :id
8
+ passthrough :clientMutationId
9
+ passthrough :updateMode
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,12 @@
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Input
5
+ module Action
6
+ end
7
+ end
8
+ end
9
+ end
10
+ end
11
+
12
+ require_relative 'action/archive'
@@ -13,3 +13,4 @@ require 'ecoportal/api/graphql/input/search_sorter'
13
13
  require 'ecoportal/api/graphql/input/search'
14
14
  require 'ecoportal/api/graphql/input/location_structure'
15
15
  require 'ecoportal/api/graphql/input/contractor_entity'
16
+ require 'ecoportal/api/graphql/input/action'
@@ -0,0 +1,96 @@
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Logic
5
+ class BaseQuery
6
+ include Ecoportal::API::Common::GraphQL::ClassHelpers
7
+ inheritable_attrs :accepted_params
8
+
9
+ class << self
10
+ def accepted_params(*keys)
11
+ @accepted_params ||= []
12
+ return @accepted_params if keys.empty?
13
+ @accepted_params.push(*keys).tap {|ks| ks.uniq!}
14
+ end
15
+
16
+ def clear_accepted_params
17
+ @accepted_params = []
18
+ end
19
+
20
+ def slice_params(kargs)
21
+ kargs.slice(*accepted_params)
22
+ end
23
+
24
+ # Used to obtain the full `path` in the GraphQL query by using `base_path`
25
+ # @note it is meant for reusability of queries from different end-points
26
+ def field_name(str = nil)
27
+ return @field_name unless str
28
+ @field_name = nil
29
+ @field_name = str.to_s if str
30
+ end
31
+ end
32
+
33
+ attr_reader :client
34
+ attr_reader :base_path
35
+
36
+ def initialize(client, path: nil, base_path: [])
37
+ @path = path
38
+ @base_path = base_path
39
+ @client = client
40
+ end
41
+
42
+ # Resolves the `path` by using `path` or `base_path` + `class.field_name`.
43
+ def path(field_name = self.class.field_name)
44
+ result = @path
45
+ result ||= default_path if self.respond_to?(:default_path, true)
46
+ result ||= (base_path + [field_name]) if base_path && field_name
47
+ result
48
+ end
49
+
50
+ # Query rely that manages the different blocks.
51
+ # @return [Class] an object of `response_class` with the results hanging from `path`.
52
+ def query(path: self.path, **kargs, &block)
53
+ graphql_query(path: path, **kargs, &basic_block(&block))
54
+ end
55
+
56
+ def response_class
57
+ raise "You should override this method in #{self.class}"
58
+ end
59
+
60
+ def access_point(path = [])
61
+ path.last
62
+ end
63
+
64
+ private
65
+
66
+ def basic_block
67
+ raise "This method should be implemented in the child class #{self.class}"
68
+ end
69
+
70
+ def graphql_query(path: self.path, **kargs, &block)
71
+ query_params = self.class.slice_params(kargs)
72
+ request(*path) do
73
+ client.query(query_params, &block)
74
+ end
75
+ rescue Faraday::ParsingError, Graphlient::Errors::GraphQLError => e
76
+ puts "Internal Error with these params:"
77
+ pp kargs
78
+ pp block
79
+ raise
80
+ end
81
+
82
+ def request(*path)
83
+ response = yield
84
+ wrap_response(response, path)
85
+ end
86
+
87
+ def wrap_response(response, path = [])
88
+ raise "Complete failure on request. Path: #{path}\n#{response.to_h.pretty_inspect}" unless res = response.to_h.dig(*path.dup.unshift("data"))
89
+ data = Ecoportal::API::Common::GraphQL::HashHelpers.deep_dup(res)
90
+ response_class.new(data)
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
@@ -2,7 +2,7 @@ module Ecoportal
2
2
  module API
3
3
  class GraphQL
4
4
  module Logic
5
- class Mutation
5
+ class Mutation < Ecoportal::API::GraphQL::Logic::BaseQuery
6
6
  class GenericPayload
7
7
  def initialize(*args, **kargs)
8
8
  raise "Missuse error. You should define a payload_class for a class that inherits from Mutation class."
@@ -14,38 +14,9 @@ module Ecoportal
14
14
  end
15
15
  end
16
16
 
17
- include Ecoportal::API::Common::GraphQL::ClassHelpers
18
-
19
- class << self
20
- # Used to obtain the full `path` in the GraphQL query by using `base_path`
21
- # @note it is meant for reusability of queries from different end-points
22
- def field_name(str = nil)
23
- return @field_name unless str
24
- @field_name = nil
25
- @field_name = str.to_s if str
26
- end
27
- end
28
-
29
17
  class_resolver :payload_class, GenericPayload
30
18
  class_resolver :input_class, GenericInput
31
19
 
32
- attr_reader :client
33
- attr_reader :base_path
34
-
35
- def initialize(client, path: nil, base_path: [])
36
- @path = path
37
- @base_path = base_path
38
- @client = client
39
- end
40
-
41
- # Resolves the `path` by using `path` or `base_path` + `class.field_name`.
42
- def path(field_name = self.class.field_name)
43
- result = @path
44
- result ||= default_path if self.respond_to?(:default_path, true)
45
- result ||= (base_path + [field_name]) if base_path && field_name
46
- result
47
- end
48
-
49
20
  # Query rely that manages the different blocks.
50
21
  # @return [Class] an object of `response_class` with the results hanving from `path`.
51
22
  def query(input:, path: self.path, &block)
@@ -62,16 +33,8 @@ module Ecoportal
62
33
  payload_class
63
34
  end
64
35
 
65
- def access_point(path = [])
66
- path.last
67
- end
68
-
69
36
  private
70
37
 
71
- def basic_block(&block)
72
- raise "This method should be implemented in the child class #{self.class}"
73
- end
74
-
75
38
  def as_input(value)
76
39
  case value
77
40
  when input_class
@@ -89,17 +52,6 @@ module Ecoportal
89
52
  raise ArgumentError.new("Expecting Hash, GraphQL::Base::Model or Enumerable. Unsupported type '#{value.class}'.")
90
53
  end
91
54
  end
92
-
93
- def request(*path)
94
- response = yield
95
- wrap_response(response, path)
96
- end
97
-
98
- def wrap_response(response, path = [])
99
- raise "Complete failure on request. Path: #{path}" unless res = response.to_h.dig(*path.dup.unshift("data"))
100
- data = Ecoportal::API::Common::GraphQL::HashHelpers.deep_dup(res)
101
- response_class.new(data)
102
- end
103
55
  end
104
56
  end
105
57
  end
@@ -2,101 +2,17 @@ module Ecoportal
2
2
  module API
3
3
  class GraphQL
4
4
  module Logic
5
- class Query
5
+ class Query < Ecoportal::API::GraphQL::Logic::BaseQuery
6
6
  class GenericItem
7
7
  def initialize(*args, **kargs)
8
8
  raise "Missuse error. You should define a item_class for a class that inherits from Query class."
9
9
  end
10
10
  end
11
-
12
- include Ecoportal::API::Common::GraphQL::ClassHelpers
13
-
14
- inheritable_attrs :accepted_params
15
-
16
- class << self
17
- def accepted_params(*keys)
18
- @accepted_params ||= []
19
- return @accepted_params if keys.empty?
20
- @accepted_params.push(*keys).tap {|ks| ks.uniq!}
21
- end
22
-
23
- def clear_accepted_params
24
- @accepted_params = []
25
- end
26
-
27
- def slice_params(kargs)
28
- kargs.slice(*accepted_params)
29
- end
30
-
31
- # Used to obtain the full `path` in the GraphQL query by using `base_path`
32
- # @note it is meant for reusability of queries from different end-points
33
- def field_name(str = nil)
34
- return @field_name unless str
35
- @field_name = nil
36
- @field_name = str.to_s if str
37
- end
38
- end
39
-
40
11
  class_resolver :item_class, GenericItem
41
- attr_reader :client
42
- attr_reader :base_path
43
-
44
- def initialize(client, path: nil, base_path: nil)
45
- @path = path
46
- @base_path = base_path
47
- @client = client
48
- end
49
-
50
- # Resolves the `path` by using `path` or `base_path` + `class.field_name`.
51
- def path(field_name = self.class.field_name)
52
- result = @path
53
- result ||= default_path if self.respond_to?(:default_path, true)
54
- result ||= (base_path + [field_name]) if base_path && field_name
55
- result
56
- end
57
-
58
- # Query rely that manages the different blocks.
59
- # @return [Class] an object of `response_class` with the results hanging from `path`.
60
- def query(path: self.path, **kargs, &block)
61
- graphql_query(path: path, **kargs, &basic_block(&block))
62
- end
63
12
 
64
13
  def response_class
65
14
  item_class
66
15
  end
67
-
68
- def access_point(path = [])
69
- path.last
70
- end
71
-
72
- private
73
-
74
- def basic_block
75
- raise "This method should be implemented in the child class #{self.class}"
76
- end
77
-
78
- def graphql_query(path: self.path, **kargs, &block)
79
- query_params = self.class.slice_params(kargs)
80
- request(*path) do
81
- client.query(query_params, &block)
82
- end
83
- rescue Faraday::ParsingError, Graphlient::Errors::GraphQLError => e
84
- puts "Internal Error with these params:"
85
- pp kargs
86
- pp block
87
- raise
88
- end
89
-
90
- def request(*path)
91
- response = yield
92
- wrap_response(response, path)
93
- end
94
-
95
- def wrap_response(response, path = [])
96
- raise "Complete failure on request. Path: #{path}" unless res = response.to_h.dig(*path.dup.unshift("data"))
97
- data = Ecoportal::API::Common::GraphQL::HashHelpers.deep_dup(res)
98
- response_class.new(data)
99
- end
100
16
  end
101
17
  end
102
18
  end
@@ -7,6 +7,7 @@ module Ecoportal
7
7
  end
8
8
  end
9
9
 
10
+ require 'ecoportal/api/graphql/logic/base_query'
10
11
  require 'ecoportal/api/graphql/logic/query'
11
12
  require 'ecoportal/api/graphql/logic/mutation'
12
13
  require 'ecoportal/api/graphql/logic/connection'
@@ -4,15 +4,14 @@ module Ecoportal
4
4
  module Model
5
5
  class Action < Ecoportal::API::GraphQL::Base::Action
6
6
  embeds_one :actionCategory, klass: GraphQL::Base::ActionCategory
7
- embeds_one :dueOrClosedDate, klass: GraphQL::Base::DateTime
8
- embeds_many :assignedTo, klass: GraphQL::Model::PersonMember
9
- embeds_one :creator, klass: GraphQL::Model::PersonMember
10
- embeds_one :creatorUser, klass: GraphQL::Model::User
11
- embeds_one :updater, klass: GraphQL::Model::PersonMember
12
- embeds_one :updaterUser, klass: GraphQL::Model::User
13
- embeds_one :completer, klass: GraphQL::Model::PersonMember
14
- embeds_many :fileContainers, klass: GraphQL::Model::FileContainer
15
- embeds_many :linkedResources, klass: GraphQL::Model::Resource
7
+ embeds_many :assignedTo, klass: Model::PersonMember
8
+ embeds_one :creator, klass: Model::PersonMember
9
+ embeds_one :creatorUser, klass: Model::User
10
+ embeds_one :updater, klass: Model::PersonMember
11
+ embeds_one :updaterUser, klass: Model::User
12
+ embeds_one :completer, klass: Model::PersonMember
13
+ embeds_many :fileContainers, klass: Model::FileContainer
14
+ embeds_many :linkedResources, klass: Model::Resource
16
15
  #embeds_many :activities, klass: GraphQL::Activity::Action
17
16
  end
18
17
  end
@@ -4,6 +4,7 @@ module Ecoportal
4
4
  module Model
5
5
  class LocationNode < Ecoportal::API::GraphQL::Base::LocationNode
6
6
  embeds_one :parent, klass: Model::LocationNode, nullable: true
7
+ embeds_many :ancestors, klass: Model::LocationNode
7
8
  end
8
9
  end
9
10
  end
@@ -3,7 +3,8 @@ module Ecoportal
3
3
  class GraphQL
4
4
  module Model
5
5
  class LocationStructure < Ecoportal::API::GraphQL::Base::LocationStructure
6
- embeds_many :nodes, klass: Ecoportal::API::GraphQL::Model::LocationNode, order_key: :weight
6
+ embeds_many :nodes, klass: Model::LocationNode, order_key: :weight
7
+ embeds_one :lastUpdatedBy, klass: "Ecoportal::API::GraphQL::Model::User"
7
8
  end
8
9
  end
9
10
  end
@@ -17,6 +17,7 @@ module Ecoportal
17
17
  query :contractorEntities, query_klass: "Ecoportal::API::GraphQL::Query::ContractorEntities"
18
18
  #contractorEntity,
19
19
  query :actions, query_klass: "Ecoportal::API::GraphQL::Query::Actions"
20
+ query :archiveAction, query_klass: "Ecoportal::API::GraphQL::Mutation::Action::Archive"
20
21
  #action, actionsByPage, actionsCounter
21
22
  #actionCategories
22
23
 
@@ -0,0 +1,41 @@
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Mutation
5
+ module Action
6
+ class Archive < Ecoportal::API::GraphQL::Logic::Mutation
7
+ field_name :archiveAction
8
+ accepted_params :id
9
+
10
+ class_resolver :payload_class, Ecoportal::API::GraphQL::Payload::Action::Archive
11
+ class_resolver :input_class, Ecoportal::API::GraphQL::Input::Action::Archive
12
+
13
+ private
14
+
15
+ def basic_block(&block)
16
+ payload_block = block || default_payload_block
17
+ Proc.new {
18
+ mutation(input: :ArchiveActionInput!) {
19
+ archiveAction(input: :input, &payload_block)
20
+ }
21
+ }
22
+ end
23
+
24
+ def default_payload_block
25
+ Proc.new {
26
+ clientMutationId
27
+ errors {
28
+ details
29
+ fullMessages
30
+ }
31
+ item {
32
+ ___Fragment__Action
33
+ }
34
+ }
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,12 @@
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Mutation
5
+ module Action
6
+ end
7
+ end
8
+ end
9
+ end
10
+ end
11
+
12
+ require_relative 'action/archive'
@@ -9,3 +9,4 @@ end
9
9
 
10
10
  require 'ecoportal/api/graphql/mutation/location_structure'
11
11
  require 'ecoportal/api/graphql/mutation/contractor_entity'
12
+ require 'ecoportal/api/graphql/mutation/action'
@@ -0,0 +1,13 @@
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Payload
5
+ module Action
6
+ class Archive < Ecoportal::API::GraphQL::Logic::Payload
7
+ class_resolver :item_class, "Ecoportal::API::GraphQL::Model::Action"
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Payload
5
+ module Action
6
+ end
7
+ end
8
+ end
9
+ end
10
+ end
11
+
12
+ require_relative 'action/archive'
@@ -9,3 +9,4 @@ end
9
9
 
10
10
  require 'ecoportal/api/graphql/payload/location_structure'
11
11
  require 'ecoportal/api/graphql/payload/contractor_entity'
12
+ require 'ecoportal/api/graphql/payload/action'
@@ -23,12 +23,16 @@ module Ecoportal
23
23
  }
24
24
  end
25
25
 
26
+ # At the moment it always retrieves archived nodes!!
27
+ # @note this is on purpose, as via API
28
+ # there isn't much sense in not including archived nodes.
26
29
  def default_query_block
27
30
  Proc.new {
28
31
  id
29
32
  name
30
33
  archived
31
34
  weight
35
+ updatedAt
32
36
  visitorManagementEnabled
33
37
  nodes(includeArchived: true) {
34
38
  ___Ecoportal__API__GraphQL__Fragment__LocationNode
@@ -27,6 +27,9 @@ module Ecoportal
27
27
  }
28
28
  end
29
29
 
30
+ # At the moment it always retrieves archived nodes!!
31
+ # @note this is on purpose, as via API
32
+ # there isn't much sense in not including archived nodes.
30
33
  def default_query_block
31
34
  Proc.new {
32
35
  id
@@ -36,6 +36,11 @@ module Ecoportal
36
36
  Ecoportal::API::GraphQL::Builder::LocationStructure.new(client)
37
37
  end
38
38
 
39
+ # Gives a builder to use different options to play with action
40
+ def action
41
+ Ecoportal::API::GraphQL::Builder::Action.new(client)
42
+ end
43
+
39
44
  private
40
45
 
41
46
  def createContractorEntityMutation
@@ -1,5 +1,5 @@
1
1
  module Ecoportal
2
2
  module API
3
- GRAPQL_VERSION = "0.3.6"
3
+ GRAPQL_VERSION = "0.3.8"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecoportal-api-graphql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.3.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Segura
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-04-17 00:00:00.000000000 Z
11
+ date: 2023-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -205,6 +205,7 @@ files:
205
205
  - lib/ecoportal/api/graphql/base/field.rb
206
206
  - lib/ecoportal/api/graphql/base/file_attachment.rb
207
207
  - lib/ecoportal/api/graphql/base/file_container.rb
208
+ - lib/ecoportal/api/graphql/base/location_classification_type.rb
208
209
  - lib/ecoportal/api/graphql/base/location_node.rb
209
210
  - lib/ecoportal/api/graphql/base/location_structure.rb
210
211
  - lib/ecoportal/api/graphql/base/model.rb
@@ -214,6 +215,7 @@ files:
214
215
  - lib/ecoportal/api/graphql/base/person_member.rb
215
216
  - lib/ecoportal/api/graphql/base/resource.rb
216
217
  - lib/ecoportal/api/graphql/builder.rb
218
+ - lib/ecoportal/api/graphql/builder/action.rb
217
219
  - lib/ecoportal/api/graphql/builder/location_structure.rb
218
220
  - lib/ecoportal/api/graphql/connection.rb
219
221
  - lib/ecoportal/api/graphql/connection/action.rb
@@ -231,6 +233,8 @@ files:
231
233
  - lib/ecoportal/api/graphql/helpers.rb
232
234
  - lib/ecoportal/api/graphql/helpers/locations_tree.rb
233
235
  - lib/ecoportal/api/graphql/input.rb
236
+ - lib/ecoportal/api/graphql/input/action.rb
237
+ - lib/ecoportal/api/graphql/input/action/archive.rb
234
238
  - lib/ecoportal/api/graphql/input/contractor_entity.rb
235
239
  - lib/ecoportal/api/graphql/input/contractor_entity/create.rb
236
240
  - lib/ecoportal/api/graphql/input/contractor_entity/destroy.rb
@@ -250,6 +254,7 @@ files:
250
254
  - lib/ecoportal/api/graphql/input/search_filter.rb
251
255
  - lib/ecoportal/api/graphql/input/search_sorter.rb
252
256
  - lib/ecoportal/api/graphql/logic.rb
257
+ - lib/ecoportal/api/graphql/logic/base_query.rb
253
258
  - lib/ecoportal/api/graphql/logic/connection.rb
254
259
  - lib/ecoportal/api/graphql/logic/mutation.rb
255
260
  - lib/ecoportal/api/graphql/logic/payload.rb
@@ -271,11 +276,15 @@ files:
271
276
  - lib/ecoportal/api/graphql/model/resource.rb
272
277
  - lib/ecoportal/api/graphql/model/user.rb
273
278
  - lib/ecoportal/api/graphql/mutation.rb
279
+ - lib/ecoportal/api/graphql/mutation/action.rb
280
+ - lib/ecoportal/api/graphql/mutation/action/archive.rb
274
281
  - lib/ecoportal/api/graphql/mutation/contractor_entity.rb
275
282
  - lib/ecoportal/api/graphql/mutation/contractor_entity/create.rb
276
283
  - lib/ecoportal/api/graphql/mutation/location_structure.rb
277
284
  - lib/ecoportal/api/graphql/mutation/location_structure/apply_commands.rb
278
285
  - lib/ecoportal/api/graphql/payload.rb
286
+ - lib/ecoportal/api/graphql/payload/action.rb
287
+ - lib/ecoportal/api/graphql/payload/action/archive.rb
279
288
  - lib/ecoportal/api/graphql/payload/contractor_entity.rb
280
289
  - lib/ecoportal/api/graphql/payload/contractor_entity/create.rb
281
290
  - lib/ecoportal/api/graphql/payload/contractor_entity/destroy.rb
@@ -316,7 +325,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
316
325
  - !ruby/object:Gem::Version
317
326
  version: '0'
318
327
  requirements: []
319
- rubygems_version: 3.1.4
328
+ rubygems_version: 3.4.12
320
329
  signing_key:
321
330
  specification_version: 4
322
331
  summary: A collection of helpers for interacting with the ecoPortal GraphQL API