params_ready_rails5 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +7 -0
  2. data/lib/arel/cte_name.rb +20 -0
  3. data/lib/params_ready/builder.rb +161 -0
  4. data/lib/params_ready/error.rb +31 -0
  5. data/lib/params_ready/extensions/class_reader_writer.rb +33 -0
  6. data/lib/params_ready/extensions/collection.rb +43 -0
  7. data/lib/params_ready/extensions/delegation.rb +25 -0
  8. data/lib/params_ready/extensions/finalizer.rb +26 -0
  9. data/lib/params_ready/extensions/freezer.rb +49 -0
  10. data/lib/params_ready/extensions/hash.rb +46 -0
  11. data/lib/params_ready/extensions/late_init.rb +38 -0
  12. data/lib/params_ready/extensions/registry.rb +44 -0
  13. data/lib/params_ready/extensions/undefined.rb +23 -0
  14. data/lib/params_ready/format.rb +132 -0
  15. data/lib/params_ready/helpers/arel_builder.rb +68 -0
  16. data/lib/params_ready/helpers/callable.rb +14 -0
  17. data/lib/params_ready/helpers/conditional_block.rb +31 -0
  18. data/lib/params_ready/helpers/find_in_hash.rb +22 -0
  19. data/lib/params_ready/helpers/interface_definer.rb +48 -0
  20. data/lib/params_ready/helpers/key_map.rb +176 -0
  21. data/lib/params_ready/helpers/memo.rb +41 -0
  22. data/lib/params_ready/helpers/options.rb +107 -0
  23. data/lib/params_ready/helpers/parameter_definer_class_methods.rb +39 -0
  24. data/lib/params_ready/helpers/parameter_storage_class_methods.rb +63 -0
  25. data/lib/params_ready/helpers/parameter_user_class_methods.rb +35 -0
  26. data/lib/params_ready/helpers/relation_builder_wrapper.rb +35 -0
  27. data/lib/params_ready/helpers/rule.rb +76 -0
  28. data/lib/params_ready/helpers/storage.rb +30 -0
  29. data/lib/params_ready/helpers/usage_rule.rb +36 -0
  30. data/lib/params_ready/input_context.rb +31 -0
  31. data/lib/params_ready/intent.rb +70 -0
  32. data/lib/params_ready/marshaller/array_marshallers.rb +132 -0
  33. data/lib/params_ready/marshaller/builder_module.rb +9 -0
  34. data/lib/params_ready/marshaller/collection.rb +165 -0
  35. data/lib/params_ready/marshaller/definition_module.rb +63 -0
  36. data/lib/params_ready/marshaller/enum_set_marshallers.rb +96 -0
  37. data/lib/params_ready/marshaller/parameter_module.rb +11 -0
  38. data/lib/params_ready/marshaller/polymorph_marshallers.rb +67 -0
  39. data/lib/params_ready/marshaller/struct_marshallers.rb +100 -0
  40. data/lib/params_ready/marshaller/tuple_marshallers.rb +103 -0
  41. data/lib/params_ready/ordering/column.rb +60 -0
  42. data/lib/params_ready/ordering/ordering.rb +276 -0
  43. data/lib/params_ready/output_parameters.rb +138 -0
  44. data/lib/params_ready/pagination/abstract_pagination.rb +18 -0
  45. data/lib/params_ready/pagination/cursor.rb +171 -0
  46. data/lib/params_ready/pagination/direction.rb +148 -0
  47. data/lib/params_ready/pagination/keyset_pagination.rb +254 -0
  48. data/lib/params_ready/pagination/keysets.rb +70 -0
  49. data/lib/params_ready/pagination/nulls.rb +31 -0
  50. data/lib/params_ready/pagination/offset_pagination.rb +130 -0
  51. data/lib/params_ready/pagination/tendency.rb +28 -0
  52. data/lib/params_ready/parameter/abstract_struct_parameter.rb +204 -0
  53. data/lib/params_ready/parameter/array_parameter.rb +197 -0
  54. data/lib/params_ready/parameter/definition.rb +272 -0
  55. data/lib/params_ready/parameter/enum_set_parameter.rb +102 -0
  56. data/lib/params_ready/parameter/parameter.rb +475 -0
  57. data/lib/params_ready/parameter/polymorph_parameter.rb +172 -0
  58. data/lib/params_ready/parameter/state.rb +132 -0
  59. data/lib/params_ready/parameter/struct_parameter.rb +64 -0
  60. data/lib/params_ready/parameter/tuple_parameter.rb +152 -0
  61. data/lib/params_ready/parameter/value_parameter.rb +186 -0
  62. data/lib/params_ready/parameter_definer.rb +14 -0
  63. data/lib/params_ready/parameter_user.rb +35 -0
  64. data/lib/params_ready/query/array_grouping.rb +68 -0
  65. data/lib/params_ready/query/custom_predicate.rb +102 -0
  66. data/lib/params_ready/query/exists_predicate.rb +103 -0
  67. data/lib/params_ready/query/fixed_operator_predicate.rb +77 -0
  68. data/lib/params_ready/query/grouping.rb +177 -0
  69. data/lib/params_ready/query/join_clause.rb +87 -0
  70. data/lib/params_ready/query/nullness_predicate.rb +71 -0
  71. data/lib/params_ready/query/polymorph_predicate.rb +77 -0
  72. data/lib/params_ready/query/predicate.rb +203 -0
  73. data/lib/params_ready/query/predicate_operator.rb +132 -0
  74. data/lib/params_ready/query/relation.rb +337 -0
  75. data/lib/params_ready/query/structured_grouping.rb +58 -0
  76. data/lib/params_ready/query/variable_operator_predicate.rb +125 -0
  77. data/lib/params_ready/query_context.rb +21 -0
  78. data/lib/params_ready/restriction.rb +252 -0
  79. data/lib/params_ready/result.rb +109 -0
  80. data/lib/params_ready/value/coder.rb +210 -0
  81. data/lib/params_ready/value/constraint.rb +198 -0
  82. data/lib/params_ready/value/custom.rb +56 -0
  83. data/lib/params_ready/value/validator.rb +81 -0
  84. data/lib/params_ready/version.rb +7 -0
  85. data/lib/params_ready.rb +28 -0
  86. metadata +227 -0
@@ -0,0 +1,198 @@
1
+ require 'set'
2
+ require_relative '../extensions/undefined'
3
+ require_relative '../extensions/registry'
4
+ require_relative '../error'
5
+
6
+ module ParamsReady
7
+ module Value
8
+
9
+ class Constraint
10
+ class Error < ParamsReadyError; end
11
+
12
+ extend Extensions::Registry
13
+ registry :constraint_types, as: :constraint_type, getter: true
14
+
15
+ def self.register(name)
16
+ Constraint.register_constraint_type(name, self)
17
+ end
18
+
19
+ attr_reader :condition
20
+
21
+ def initialize(cond)
22
+ @condition = cond.freeze
23
+ freeze
24
+ end
25
+
26
+ def clamp?; false; end
27
+
28
+ def self.build(cond, *args, **opts, &block)
29
+ if block.nil?
30
+ new cond, *args, **opts
31
+ else
32
+ new cond, block, *args, **opts
33
+ end
34
+ end
35
+
36
+ def self.instance(cond, *args, **opts)
37
+ case cond
38
+ when Range
39
+ RangeConstraint.new(cond, *args, **opts)
40
+ when Array, Set
41
+ EnumConstraint.new(cond, *args, **opts)
42
+ else
43
+ raise ParamsReadyError, "Unknown constraint type: " + cond.class.name
44
+ end
45
+ end
46
+
47
+ def valid?(input)
48
+ raise ParamsReadyError, 'This is an abstract class'
49
+ end
50
+
51
+ def error_message
52
+ "didn't pass validation"
53
+ end
54
+ end
55
+
56
+ class RangeConstraint < Constraint
57
+ register :range
58
+
59
+ def initialize(cond, *args, **opts)
60
+ raise ParamsReadyError, "Expected Range, got: " + cond.class.name unless cond.is_a?(Range)
61
+ super cond, *args, **opts
62
+ end
63
+
64
+ def valid?(input)
65
+ @condition.include?(input)
66
+ end
67
+
68
+ def error_message
69
+ 'not in range'
70
+ end
71
+
72
+ def clamp(value)
73
+ if value < @condition.min
74
+ @condition.min
75
+ elsif value > @condition.max
76
+ @condition.max
77
+ else
78
+ value
79
+ end
80
+ end
81
+
82
+ def clamp?
83
+ return false if @condition.min.nil? || @condition.max.nil?
84
+
85
+ true
86
+ end
87
+ end
88
+
89
+ class EnumConstraint < Constraint
90
+ register :enum
91
+
92
+ def initialize(cond, *args, **opts)
93
+ raise ParamsReadyError, "Expected Set or Array, got: " + cond.class.name unless
94
+ cond.is_a?(Set) ||
95
+ cond.is_a?(Array)
96
+ super cond, *args, **opts
97
+ end
98
+
99
+ def valid?(input)
100
+ if input.is_a?(String)
101
+ @condition.include?(input) || @condition.include?(input.to_sym)
102
+ else
103
+ @condition.include?(input)
104
+ end
105
+ end
106
+
107
+ def error_message
108
+ 'not in enum'
109
+ end
110
+ end
111
+
112
+ class OperatorConstraint < Constraint
113
+ register :operator
114
+
115
+ OPERATORS = [:=~, :<, :<=, :==, :>=, :>].to_set.freeze
116
+
117
+ def initialize(operator, value, *args, **opts)
118
+ unless OPERATORS.member? operator
119
+ raise ParamsReadyError, "Unsupported operator: #{operator}"
120
+ end
121
+ cond = Condition.instance(operator, value)
122
+ super(cond, *args, **opts)
123
+ end
124
+
125
+ def clamp(value)
126
+ return value if valid?(value)
127
+
128
+ @condition.clamp(value)
129
+ end
130
+
131
+ def clamp?
132
+ @condition.clamp?
133
+ end
134
+
135
+ def valid?(input)
136
+ @condition.true?(input)
137
+ end
138
+
139
+ def error_message
140
+ @condition.error_message
141
+ end
142
+
143
+ module ClampingCondition
144
+ CLAMPING_OPERATORS = %i(<= == >=).to_set.freeze
145
+ def clamp(_)
146
+ case @operator
147
+ when :<=, :>=, :==
148
+ get_value
149
+ else
150
+ raise "Unexpected operator: #{@operator}"
151
+ end
152
+ end
153
+
154
+ def clamp?
155
+ CLAMPING_OPERATORS.member? @operator
156
+ end
157
+ end
158
+
159
+ class Condition
160
+ include ClampingCondition
161
+
162
+ def initialize(operator, value)
163
+ @operator = operator
164
+ @value = value
165
+ end
166
+
167
+ def true?(input)
168
+ input.send(@operator, get_value)
169
+ end
170
+
171
+ def error_message
172
+ "not #{@operator} #{get_value}"
173
+ end
174
+
175
+ def self.instance(operator, value)
176
+ case value
177
+ when Method, Proc
178
+ DynamicCondition.new operator, value
179
+ else
180
+ StaticCondition.new operator, value
181
+ end
182
+ end
183
+ end
184
+
185
+ class StaticCondition < Condition
186
+ def get_value
187
+ @value
188
+ end
189
+ end
190
+
191
+ class DynamicCondition < Condition
192
+ def get_value
193
+ @value.call
194
+ end
195
+ end
196
+ end
197
+ end
198
+ end
@@ -0,0 +1,56 @@
1
+ require_relative '../parameter/value_parameter'
2
+
3
+ module ParamsReady
4
+ module Value
5
+ class DowncaseStringCoder < StringCoder
6
+ def self.coerce(value, context)
7
+ string = super
8
+ string.downcase
9
+ end
10
+ end
11
+
12
+ Parameter::ValueParameterBuilder.register_coder :downcase_string, DowncaseStringCoder
13
+
14
+ class FormattedDecimalCoder < DecimalCoder
15
+ EU = /^(\d{1,3}( \d{3})+|\d+),\d{1,2}$/.freeze
16
+ US = /^(\d{1,3}(,\d{3})+).\d{1,2}$/.freeze
17
+
18
+ def self.coerce(value, context)
19
+ value = if value.is_a? String
20
+ stripped = value.strip
21
+ if EU.match? stripped
22
+ stripped.gsub(/[ ,]/, ' ' => '', ',' => '.')
23
+ elsif US.match? stripped
24
+ stripped.delete(',')
25
+ else
26
+ stripped
27
+ end
28
+ else
29
+ value
30
+ end
31
+ super
32
+ end
33
+ end
34
+
35
+ Parameter::ValueParameterBuilder.register_coder :formatted_decimal, FormattedDecimalCoder
36
+
37
+ class CheckboxBooleanCoder < BooleanCoder
38
+ def self.format(value, format)
39
+ return value unless format.marshal? :boolean
40
+ return value ? 'true' : nil
41
+ end
42
+ end
43
+
44
+ Parameter::ValueParameterBuilder.register_coder :checkbox_boolean, CheckboxBooleanCoder
45
+
46
+ class NonEmptyStringCoder < StringCoder
47
+ def self.coerce(value, _)
48
+ return Extensions::Undefined if value.nil? || value.empty?
49
+
50
+ super
51
+ end
52
+ end
53
+
54
+ Parameter::ValueParameterBuilder.register_coder :non_empty_string, NonEmptyStringCoder
55
+ end
56
+ end
@@ -0,0 +1,81 @@
1
+ require_relative 'constraint'
2
+
3
+ module ParamsReady
4
+ module Value
5
+ class Validator
6
+ attr_reader :constraint, :strategy
7
+
8
+ def self.instance(name_or_constraint, *args, strategy: :raise, **opts, &block)
9
+ constraint = case name_or_constraint
10
+ when Value::Constraint
11
+ name_or_constraint
12
+ when Symbol
13
+ type = Value::Constraint.constraint_type(name_or_constraint)
14
+ type.build(*args, **opts, &block)
15
+ else
16
+ valid, missing_method = valid_constraint?(name_or_constraint, strategy)
17
+ on_constraint_invalid(missing_method) unless valid
18
+ name_or_constraint
19
+ end
20
+ new(constraint, strategy: strategy)
21
+ end
22
+
23
+ def self.on_constraint_invalid(missing_method)
24
+ raise ParamsReadyError, "Not a valid constraint, '#{missing_method}' unimplemented"
25
+ end
26
+
27
+ def self.valid_constraint?(constraint, strategy)
28
+ return [false, 'valid?'] unless constraint.respond_to?(:valid?)
29
+ return [false, 'error_message'] unless constraint.respond_to?(:error_message)
30
+ return [true, nil] unless strategy == :clamp
31
+ return [false, 'clamp'] unless constraint.respond_to? :clamp
32
+
33
+ [true, nil]
34
+ end
35
+
36
+ def initialize(constraint, strategy: :raise)
37
+ @constraint = constraint
38
+ @strategy = check_strategy(constraint, strategy)
39
+ freeze
40
+ end
41
+
42
+ def check_strategy(constraint, strategy)
43
+ case strategy.to_sym
44
+ when :raise, :undefine
45
+ strategy.to_sym
46
+ when :clamp
47
+ if constraint.respond_to? :clamp?
48
+ raise ParamsReadyError, 'Clamping not applicable' unless constraint.clamp?
49
+ end
50
+ strategy.to_sym
51
+ else
52
+ raise ParamsReadyError, "Unexpected constraint strategy #{strategy}"
53
+ end
54
+ end
55
+
56
+ def validate(value, result)
57
+ return [value, result] if Extensions::Undefined.value_indefinite?(value)
58
+
59
+ if constraint.valid? value
60
+ [value, result]
61
+ else
62
+ case strategy
63
+ when :raise
64
+ e = Constraint::Error.new("value '#{value}' #{constraint.error_message}")
65
+ if result.nil?
66
+ raise e
67
+ else
68
+ result.error! e
69
+ end
70
+ [Extensions::Undefined, result]
71
+ when :clamp
72
+ [constraint.clamp(value), result]
73
+ else
74
+ [Extensions::Undefined, result]
75
+ end
76
+ end
77
+ end
78
+
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,7 @@
1
+ module ParamsReady
2
+ VERSION = '0.0.7'.freeze
3
+
4
+ def self.gem_version
5
+ ::Gem::Version.new(VERSION)
6
+ end
7
+ end
@@ -0,0 +1,28 @@
1
+ require 'ruby2_keywords'
2
+ require 'arel'
3
+
4
+ require_relative 'params_ready/parameter/array_parameter'
5
+ require_relative 'params_ready/parameter/struct_parameter'
6
+ require_relative 'params_ready/parameter/enum_set_parameter'
7
+ require_relative 'params_ready/parameter/polymorph_parameter'
8
+ require_relative 'params_ready/parameter/tuple_parameter'
9
+ require_relative 'params_ready/parameter/value_parameter'
10
+
11
+ require_relative 'params_ready/value/custom'
12
+ require_relative 'params_ready/value/validator'
13
+
14
+ require_relative 'params_ready/input_context'
15
+ require_relative 'params_ready/output_parameters'
16
+ require_relative 'params_ready/parameter_definer'
17
+ require_relative 'params_ready/parameter_user'
18
+ require_relative 'params_ready/query_context'
19
+
20
+ require_relative 'params_ready/query/array_grouping'
21
+ require_relative 'params_ready/query/custom_predicate'
22
+ require_relative 'params_ready/query/exists_predicate'
23
+ require_relative 'params_ready/query/fixed_operator_predicate'
24
+ require_relative 'params_ready/query/nullness_predicate'
25
+ require_relative 'params_ready/query/polymorph_predicate'
26
+ require_relative 'params_ready/query/relation'
27
+ require_relative 'params_ready/query/variable_operator_predicate'
28
+ require_relative 'params_ready/version'
metadata ADDED
@@ -0,0 +1,227 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: params_ready_rails5
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.7
5
+ platform: ruby
6
+ authors:
7
+ - Tomas Milsimer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-03-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ruby2_keywords
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activerecord
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '5'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '5'
41
+ - !ruby/object:Gem::Dependency
42
+ name: byebug
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '11'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '11'
55
+ - !ruby/object:Gem::Dependency
56
+ name: memory_profiler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.9'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.9'
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest-rg
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '5'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '5'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.20'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.20'
97
+ - !ruby/object:Gem::Dependency
98
+ name: sqlite3
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1'
111
+ description: "Create well defined controller interfaces. Sanitize, coerce and constrain
112
+ \nincoming parameters to safely populate data models, hold session state in URI
113
+ variables \nacross different locations, build SQL queries, apply ordering and offset/keyset
114
+ pagination.\n"
115
+ email: tomas.milsimer@protonmail.com
116
+ executables: []
117
+ extensions: []
118
+ extra_rdoc_files: []
119
+ files:
120
+ - lib/arel/cte_name.rb
121
+ - lib/params_ready.rb
122
+ - lib/params_ready/builder.rb
123
+ - lib/params_ready/error.rb
124
+ - lib/params_ready/extensions/class_reader_writer.rb
125
+ - lib/params_ready/extensions/collection.rb
126
+ - lib/params_ready/extensions/delegation.rb
127
+ - lib/params_ready/extensions/finalizer.rb
128
+ - lib/params_ready/extensions/freezer.rb
129
+ - lib/params_ready/extensions/hash.rb
130
+ - lib/params_ready/extensions/late_init.rb
131
+ - lib/params_ready/extensions/registry.rb
132
+ - lib/params_ready/extensions/undefined.rb
133
+ - lib/params_ready/format.rb
134
+ - lib/params_ready/helpers/arel_builder.rb
135
+ - lib/params_ready/helpers/callable.rb
136
+ - lib/params_ready/helpers/conditional_block.rb
137
+ - lib/params_ready/helpers/find_in_hash.rb
138
+ - lib/params_ready/helpers/interface_definer.rb
139
+ - lib/params_ready/helpers/key_map.rb
140
+ - lib/params_ready/helpers/memo.rb
141
+ - lib/params_ready/helpers/options.rb
142
+ - lib/params_ready/helpers/parameter_definer_class_methods.rb
143
+ - lib/params_ready/helpers/parameter_storage_class_methods.rb
144
+ - lib/params_ready/helpers/parameter_user_class_methods.rb
145
+ - lib/params_ready/helpers/relation_builder_wrapper.rb
146
+ - lib/params_ready/helpers/rule.rb
147
+ - lib/params_ready/helpers/storage.rb
148
+ - lib/params_ready/helpers/usage_rule.rb
149
+ - lib/params_ready/input_context.rb
150
+ - lib/params_ready/intent.rb
151
+ - lib/params_ready/marshaller/array_marshallers.rb
152
+ - lib/params_ready/marshaller/builder_module.rb
153
+ - lib/params_ready/marshaller/collection.rb
154
+ - lib/params_ready/marshaller/definition_module.rb
155
+ - lib/params_ready/marshaller/enum_set_marshallers.rb
156
+ - lib/params_ready/marshaller/parameter_module.rb
157
+ - lib/params_ready/marshaller/polymorph_marshallers.rb
158
+ - lib/params_ready/marshaller/struct_marshallers.rb
159
+ - lib/params_ready/marshaller/tuple_marshallers.rb
160
+ - lib/params_ready/ordering/column.rb
161
+ - lib/params_ready/ordering/ordering.rb
162
+ - lib/params_ready/output_parameters.rb
163
+ - lib/params_ready/pagination/abstract_pagination.rb
164
+ - lib/params_ready/pagination/cursor.rb
165
+ - lib/params_ready/pagination/direction.rb
166
+ - lib/params_ready/pagination/keyset_pagination.rb
167
+ - lib/params_ready/pagination/keysets.rb
168
+ - lib/params_ready/pagination/nulls.rb
169
+ - lib/params_ready/pagination/offset_pagination.rb
170
+ - lib/params_ready/pagination/tendency.rb
171
+ - lib/params_ready/parameter/abstract_struct_parameter.rb
172
+ - lib/params_ready/parameter/array_parameter.rb
173
+ - lib/params_ready/parameter/definition.rb
174
+ - lib/params_ready/parameter/enum_set_parameter.rb
175
+ - lib/params_ready/parameter/parameter.rb
176
+ - lib/params_ready/parameter/polymorph_parameter.rb
177
+ - lib/params_ready/parameter/state.rb
178
+ - lib/params_ready/parameter/struct_parameter.rb
179
+ - lib/params_ready/parameter/tuple_parameter.rb
180
+ - lib/params_ready/parameter/value_parameter.rb
181
+ - lib/params_ready/parameter_definer.rb
182
+ - lib/params_ready/parameter_user.rb
183
+ - lib/params_ready/query/array_grouping.rb
184
+ - lib/params_ready/query/custom_predicate.rb
185
+ - lib/params_ready/query/exists_predicate.rb
186
+ - lib/params_ready/query/fixed_operator_predicate.rb
187
+ - lib/params_ready/query/grouping.rb
188
+ - lib/params_ready/query/join_clause.rb
189
+ - lib/params_ready/query/nullness_predicate.rb
190
+ - lib/params_ready/query/polymorph_predicate.rb
191
+ - lib/params_ready/query/predicate.rb
192
+ - lib/params_ready/query/predicate_operator.rb
193
+ - lib/params_ready/query/relation.rb
194
+ - lib/params_ready/query/structured_grouping.rb
195
+ - lib/params_ready/query/variable_operator_predicate.rb
196
+ - lib/params_ready/query_context.rb
197
+ - lib/params_ready/restriction.rb
198
+ - lib/params_ready/result.rb
199
+ - lib/params_ready/value/coder.rb
200
+ - lib/params_ready/value/constraint.rb
201
+ - lib/params_ready/value/custom.rb
202
+ - lib/params_ready/value/validator.rb
203
+ - lib/params_ready/version.rb
204
+ homepage: https://github.com/lame-impala/params_ready
205
+ licenses:
206
+ - MIT
207
+ metadata: {}
208
+ post_install_message:
209
+ rdoc_options: []
210
+ require_paths:
211
+ - lib
212
+ required_ruby_version: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ required_rubygems_version: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - ">="
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ requirements: []
223
+ rubygems_version: 3.1.4
224
+ signing_key:
225
+ specification_version: 4
226
+ summary: Define controller interfaces in Rails
227
+ test_files: []