graphoid 0.0.2 → 0.0.4
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 +4 -4
- data/README.md +46 -32
- data/Rakefile +2 -6
- data/lib/graphoid/argument.rb +3 -0
- data/lib/graphoid/config.rb +2 -0
- data/lib/graphoid/definitions/filters.rb +7 -8
- data/lib/graphoid/definitions/inputs.rb +8 -6
- data/lib/graphoid/definitions/orders.rb +5 -5
- data/lib/graphoid/definitions/types.rb +46 -40
- data/lib/graphoid/drivers/active_record.rb +37 -37
- data/lib/graphoid/drivers/mongoid.rb +75 -53
- data/lib/graphoid/graphield.rb +6 -6
- data/lib/graphoid/grapho.rb +2 -0
- data/lib/graphoid/main.rb +6 -4
- data/lib/graphoid/mapper.rb +5 -2
- data/lib/graphoid/mutations/create.rb +12 -14
- data/lib/graphoid/mutations/delete.rb +12 -14
- data/lib/graphoid/mutations/processor.rb +3 -1
- data/lib/graphoid/mutations/structure.rb +2 -0
- data/lib/graphoid/mutations/update.rb +2 -0
- data/lib/graphoid/operators/attribute.rb +6 -5
- data/lib/graphoid/operators/inherited/belongs_to.rb +10 -8
- data/lib/graphoid/operators/inherited/embeds_many.rb +17 -3
- data/lib/graphoid/operators/inherited/embeds_one.rb +17 -3
- data/lib/graphoid/operators/inherited/has_many.rb +4 -2
- data/lib/graphoid/operators/inherited/has_one.rb +9 -7
- data/lib/graphoid/operators/inherited/many_to_many.rb +4 -2
- data/lib/graphoid/operators/relation.rb +8 -9
- data/lib/graphoid/queries/operation.rb +2 -0
- data/lib/graphoid/queries/processor.rb +7 -5
- data/lib/graphoid/queries/queries.rb +16 -17
- data/lib/graphoid/scalars.rb +28 -26
- data/lib/graphoid/utils.rb +6 -4
- data/lib/graphoid/version.rb +3 -1
- data/lib/graphoid.rb +2 -0
- metadata +15 -28
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Graphoid
|
2
4
|
module Queries
|
3
5
|
extend ActiveSupport::Concern
|
@@ -14,35 +16,32 @@ module Graphoid
|
|
14
16
|
end
|
15
17
|
|
16
18
|
query_type.field name: grapho.plural, type: [grapho.type], null: true do
|
17
|
-
Graphoid::Argument.query_many(self, grapho.filter, grapho.order,
|
19
|
+
Graphoid::Argument.query_many(self, grapho.filter, grapho.order, required: false)
|
18
20
|
end
|
19
21
|
|
20
22
|
query_type.field name: "_#{grapho.plural}_meta", type: Graphoid::Types::Meta, null: true do
|
21
|
-
Graphoid::Argument.query_many(self, grapho.filter, grapho.order,
|
23
|
+
Graphoid::Argument.query_many(self, grapho.filter, grapho.order, required: false)
|
22
24
|
end
|
23
25
|
|
24
26
|
query_type.class_eval do
|
25
27
|
define_method :"#{grapho.name}" do |id: nil, where: nil|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
end
|
28
|
+
return model.find(id) if id
|
29
|
+
|
30
|
+
Processor.execute(model, where.to_h).first
|
31
|
+
rescue Exception => ex
|
32
|
+
GraphQL::ExecutionError.new(ex.message)
|
32
33
|
end
|
33
34
|
end
|
34
35
|
|
35
36
|
query_type.class_eval do
|
36
37
|
define_method :"#{grapho.plural}" do |where: nil, order: nil, limit: nil, skip: nil|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
GraphQL::ExecutionError.new(ex.message)
|
45
|
-
end
|
38
|
+
model = Graphoid.driver.eager_load(context.irep_node, model)
|
39
|
+
result = Processor.execute(model, where.to_h)
|
40
|
+
order = Processor.parse_order(model, order.to_h)
|
41
|
+
result = result.order(order).limit(limit)
|
42
|
+
Graphoid.driver.skip(result, skip)
|
43
|
+
rescue Exception => ex
|
44
|
+
GraphQL::ExecutionError.new(ex.message)
|
46
45
|
end
|
47
46
|
|
48
47
|
alias_method :"_#{grapho.plural}_meta", :"#{grapho.plural}"
|
data/lib/graphoid/scalars.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Graphoid
|
2
4
|
module Upload
|
3
5
|
end
|
@@ -6,80 +8,80 @@ module Graphoid
|
|
6
8
|
class << self
|
7
9
|
def generate
|
8
10
|
Graphoid::Scalars::DateTime ||= GraphQL::ScalarType.define do
|
9
|
-
name
|
10
|
-
description
|
11
|
+
name 'DateTime'
|
12
|
+
description 'DateTime ISO8601 formated'
|
11
13
|
|
12
|
-
coerce_input
|
14
|
+
coerce_input lambda { |value, _|
|
13
15
|
begin
|
14
16
|
::DateTime.iso8601(value)
|
15
17
|
rescue Exception => ex
|
16
18
|
GraphQL::ExecutionError.new(ex)
|
17
19
|
end
|
18
|
-
|
20
|
+
}
|
19
21
|
end
|
20
22
|
|
21
23
|
Graphoid::Scalars::Date ||= GraphQL::ScalarType.define do
|
22
|
-
name
|
23
|
-
description
|
24
|
+
name 'Date'
|
25
|
+
description 'Date ISO8601 formated'
|
24
26
|
|
25
|
-
coerce_input
|
27
|
+
coerce_input lambda { |value, _|
|
26
28
|
begin
|
27
29
|
::DateTime.iso8601(value)
|
28
30
|
rescue Exception => ex
|
29
31
|
GraphQL::ExecutionError.new(ex)
|
30
32
|
end
|
31
|
-
|
33
|
+
}
|
32
34
|
end
|
33
35
|
|
34
36
|
Graphoid::Scalars::Time ||= GraphQL::ScalarType.define do
|
35
|
-
name
|
36
|
-
description
|
37
|
+
name 'Time'
|
38
|
+
description 'Time ISO8601 formated'
|
37
39
|
|
38
|
-
coerce_input
|
40
|
+
coerce_input lambda { |value, _|
|
39
41
|
begin
|
40
42
|
::DateTime.iso8601(value)
|
41
43
|
rescue Exception => ex
|
42
44
|
GraphQL::ExecutionError.new(ex)
|
43
45
|
end
|
44
|
-
|
46
|
+
}
|
45
47
|
end
|
46
48
|
|
47
49
|
Graphoid::Scalars::Timestamp ||= GraphQL::ScalarType.define do
|
48
|
-
name
|
49
|
-
description
|
50
|
+
name 'Timestamp'
|
51
|
+
description 'Second elapsed since 1970-01-01'
|
50
52
|
|
51
|
-
coerce_input
|
53
|
+
coerce_input lambda { |value, _|
|
52
54
|
begin
|
53
55
|
::DateTime.iso8601(value)
|
54
56
|
rescue Exception => ex
|
55
57
|
GraphQL::ExecutionError.new(ex)
|
56
58
|
end
|
57
|
-
|
59
|
+
}
|
58
60
|
end
|
59
61
|
|
60
62
|
Graphoid::Scalars::Text ||= GraphQL::ScalarType.define do
|
61
|
-
name
|
62
|
-
description
|
63
|
+
name 'Text'
|
64
|
+
description 'Should be string? explain this please.'
|
63
65
|
end
|
64
66
|
|
65
67
|
Graphoid::Scalars::BigInt ||= GraphQL::ScalarType.define do
|
66
|
-
name
|
67
|
-
description
|
68
|
+
name 'BigInt'
|
69
|
+
description 'WTF ??'
|
68
70
|
end
|
69
71
|
|
70
72
|
Graphoid::Scalars::Decimal ||= GraphQL::ScalarType.define do
|
71
|
-
name
|
72
|
-
description
|
73
|
+
name 'Decimal'
|
74
|
+
description 'Define pliiiizzzzzzz'
|
73
75
|
end
|
74
76
|
|
75
77
|
Graphoid::Scalars::Hash ||= GraphQL::ScalarType.define do
|
76
|
-
name
|
77
|
-
description
|
78
|
+
name 'Hash'
|
79
|
+
description 'Hash scalar'
|
78
80
|
end
|
79
81
|
|
80
82
|
Graphoid::Scalars::Array ||= GraphQL::ScalarType.define do
|
81
|
-
name
|
82
|
-
description
|
83
|
+
name 'Array'
|
84
|
+
description 'Array scalar'
|
83
85
|
end
|
84
86
|
end
|
85
87
|
end
|
data/lib/graphoid/utils.rb
CHANGED
@@ -1,16 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Graphoid
|
2
4
|
module Utils
|
3
5
|
class << self
|
4
|
-
def modelize
|
6
|
+
def modelize(text)
|
5
7
|
graphqlize text.to_s.capitalize.camelize
|
6
8
|
end
|
7
9
|
|
8
|
-
def camelize
|
10
|
+
def camelize(text)
|
9
11
|
# we are doing it twice because _id gets translated to Id the first time and to id the second time.
|
10
12
|
graphqlize text.to_s.camelize(:lower).camelize(:lower)
|
11
13
|
end
|
12
14
|
|
13
|
-
def graphqlize
|
15
|
+
def graphqlize(text)
|
14
16
|
text.to_s.gsub(/::/, '_')
|
15
17
|
end
|
16
18
|
|
@@ -18,7 +20,7 @@ module Graphoid
|
|
18
20
|
fields.keys.map(&:underscore).map(&:to_sym)
|
19
21
|
end
|
20
22
|
|
21
|
-
def underscore
|
23
|
+
def underscore(props, fields = [])
|
22
24
|
attrs = {}
|
23
25
|
props.each do |key, value|
|
24
26
|
key = key.underscore if fields.exclude?(key)
|
data/lib/graphoid/version.rb
CHANGED
data/lib/graphoid.rb
CHANGED
metadata
CHANGED
@@ -1,58 +1,45 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphoid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maximiliano Perez Coto
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-04-
|
11
|
+
date: 2019-04-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: graphql
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 1.8.17
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 1.8.17
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rspec-collection_matchers
|
28
|
+
name: rails
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
|
-
- - "
|
31
|
+
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
type: :
|
33
|
+
version: 5.1.6
|
34
|
+
type: :runtime
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- - "
|
38
|
+
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
55
|
-
description: A gem that helps you autogenerate a GraphQL
|
40
|
+
version: 5.1.6
|
41
|
+
description: A gem that helps you autogenerate a GraphQL API from Mongoid or ActiveRecord
|
42
|
+
models.
|
56
43
|
email:
|
57
44
|
- maxiperezc@gmail.com
|
58
45
|
executables: []
|
@@ -94,7 +81,7 @@ files:
|
|
94
81
|
- lib/graphoid/scalars.rb
|
95
82
|
- lib/graphoid/utils.rb
|
96
83
|
- lib/graphoid/version.rb
|
97
|
-
homepage: http://www.
|
84
|
+
homepage: http://www.maxiperezcoto.com
|
98
85
|
licenses:
|
99
86
|
- MIT
|
100
87
|
metadata: {}
|
@@ -116,5 +103,5 @@ requirements: []
|
|
116
103
|
rubygems_version: 3.0.3
|
117
104
|
signing_key:
|
118
105
|
specification_version: 4
|
119
|
-
summary:
|
106
|
+
summary: Generates a GraphQL API from Rails ActiveRecord or Mongoid
|
120
107
|
test_files: []
|