standardapi 6.1.0 → 7.1.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.
- checksums.yaml +4 -4
- data/README.md +80 -58
- data/lib/standard_api/access_control_list.rb +40 -6
- data/lib/standard_api/controller.rb +96 -28
- data/lib/standard_api/helpers.rb +13 -7
- data/lib/standard_api/middleware.rb +5 -0
- data/lib/standard_api/railtie.rb +17 -0
- data/lib/standard_api/route_helpers.rb +59 -9
- data/lib/standard_api/test_case/calculate_tests.rb +7 -6
- data/lib/standard_api/test_case/destroy_tests.rb +19 -7
- data/lib/standard_api/test_case/index_tests.rb +7 -13
- data/lib/standard_api/test_case/show_tests.rb +7 -7
- data/lib/standard_api/test_case/update_tests.rb +7 -6
- data/lib/standard_api/version.rb +1 -1
- data/lib/standard_api/views/application/_record.json.jbuilder +4 -3
- data/lib/standard_api/views/application/_record.streamer +4 -3
- data/lib/standard_api/views/application/_schema.json.jbuilder +20 -8
- data/lib/standard_api/views/application/_schema.streamer +22 -8
- data/lib/standard_api.rb +1 -0
- data/test/standard_api/caching_test.rb +2 -2
- data/test/standard_api/controller/include_test.rb +107 -0
- data/test/standard_api/controller/subresource_test.rb +157 -0
- data/test/standard_api/helpers_test.rb +9 -8
- data/test/standard_api/nested_attributes/belongs_to_test.rb +71 -0
- data/test/standard_api/nested_attributes/has_and_belongs_to_many_test.rb +70 -0
- data/test/standard_api/nested_attributes/has_many_test.rb +85 -0
- data/test/standard_api/nested_attributes/has_one_test.rb +71 -0
- data/test/standard_api/route_helpers_test.rb +56 -0
- data/test/standard_api/standard_api_test.rb +80 -50
- data/test/standard_api/test_app/app/controllers/acl/camera_acl.rb +7 -0
- data/test/standard_api/test_app/app/controllers/acl/photo_acl.rb +13 -0
- data/test/standard_api/test_app/app/controllers/acl/property_acl.rb +7 -1
- data/test/standard_api/test_app/controllers.rb +17 -0
- data/test/standard_api/test_app/models.rb +59 -2
- data/test/standard_api/test_app/test/factories.rb +3 -0
- data/test/standard_api/test_app/views/sessions/create.json.jbuilder +1 -0
- data/test/standard_api/test_app/views/sessions/create.streamer +3 -0
- data/test/standard_api/test_app.rb +12 -1
- data/test/standard_api/test_helper.rb +9 -0
- metadata +52 -13
@@ -7,12 +7,16 @@ class Account < ActiveRecord::Base
|
|
7
7
|
end
|
8
8
|
|
9
9
|
class Photo < ActiveRecord::Base
|
10
|
-
belongs_to :account, :
|
10
|
+
belongs_to :account, counter_cache: true
|
11
11
|
has_and_belongs_to_many :properties
|
12
|
+
has_one :camera
|
12
13
|
end
|
13
14
|
|
14
15
|
class Document < ActiveRecord::Base
|
15
16
|
attr_accessor :file
|
17
|
+
|
18
|
+
enum level: { public: 0, secret: 1 }, _suffix: true
|
19
|
+
enum rating: { poor: 0, ok: 1, good: 2 }
|
16
20
|
end
|
17
21
|
|
18
22
|
class Pdf < Document
|
@@ -34,8 +38,36 @@ class Property < ActiveRecord::Base
|
|
34
38
|
end
|
35
39
|
end
|
36
40
|
|
41
|
+
class LSNType < ActiveRecord::Type::Value
|
42
|
+
|
43
|
+
def type
|
44
|
+
:lsn
|
45
|
+
end
|
46
|
+
|
47
|
+
def cast_value(value)
|
48
|
+
case value
|
49
|
+
when Integer
|
50
|
+
[value].pack('N')
|
51
|
+
else
|
52
|
+
value&.to_s&.b
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def serialize(value)
|
57
|
+
PG::TextEncoder::Bytea.new.encode(value)
|
58
|
+
end
|
59
|
+
|
60
|
+
def deserialize(value)
|
61
|
+
return nil if value.nil?
|
62
|
+
PG::TextDecoder::Bytea.new.decode(value).unpack1('N')
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
|
37
67
|
class Reference < ActiveRecord::Base
|
38
68
|
belongs_to :subject, polymorphic: true
|
69
|
+
|
70
|
+
attribute :custom_binary, LSNType.new
|
39
71
|
end
|
40
72
|
|
41
73
|
class Document < ActiveRecord::Base
|
@@ -47,7 +79,16 @@ class Attachment < ActiveRecord::Base
|
|
47
79
|
belongs_to :document
|
48
80
|
end
|
49
81
|
|
50
|
-
|
82
|
+
class Camera < ActiveRecord::Base
|
83
|
+
end
|
84
|
+
|
85
|
+
class UuidModel < ActiveRecord::Base
|
86
|
+
end
|
87
|
+
|
88
|
+
# = Create/recreate database and migration
|
89
|
+
task = ActiveRecord::Tasks::PostgreSQLDatabaseTasks.new(ActiveRecord::Base.connection_db_config)
|
90
|
+
task.drop
|
91
|
+
task.create
|
51
92
|
|
52
93
|
class CreateModelTables < ActiveRecord::Migration[6.0]
|
53
94
|
|
@@ -93,6 +134,8 @@ class CreateModelTables < ActiveRecord::Migration[6.0]
|
|
93
134
|
create_table "references", force: :cascade do |t|
|
94
135
|
t.integer "subject_id"
|
95
136
|
t.string "subject_type", limit: 255
|
137
|
+
t.binary "sha"
|
138
|
+
t.binary "custom_binary"
|
96
139
|
t.string "key"
|
97
140
|
t.string "value"
|
98
141
|
end
|
@@ -100,6 +143,7 @@ class CreateModelTables < ActiveRecord::Migration[6.0]
|
|
100
143
|
create_table "photos_properties", force: :cascade do |t|
|
101
144
|
t.integer "photo_id"
|
102
145
|
t.integer "property_id"
|
146
|
+
t.index ["photo_id", "property_id"], unique: true
|
103
147
|
end
|
104
148
|
|
105
149
|
create_table "landlords_properties", force: :cascade do |t|
|
@@ -108,14 +152,27 @@ class CreateModelTables < ActiveRecord::Migration[6.0]
|
|
108
152
|
end
|
109
153
|
|
110
154
|
create_table "documents", force: :cascade do |t|
|
155
|
+
t.integer 'level', limit: 2, null: false, default: 0
|
156
|
+
t.integer 'rating', limit: 2
|
111
157
|
t.string 'type'
|
112
158
|
end
|
113
159
|
|
160
|
+
create_table "cameras", force: :cascade do |t|
|
161
|
+
t.integer 'photo_id'
|
162
|
+
t.string 'make'
|
163
|
+
end
|
164
|
+
|
114
165
|
create_table "attachments", force: :cascade do |t|
|
115
166
|
t.string 'record_type'
|
116
167
|
t.integer 'record_id'
|
117
168
|
t.integer 'document_id'
|
118
169
|
end
|
170
|
+
|
171
|
+
create_table "uuid_models", id: :uuid, force: :cascade do |t|
|
172
|
+
t.string 'title', default: 'recruit'
|
173
|
+
t.string 'name', default: -> { 'round(random() * 1000)' }
|
174
|
+
end
|
175
|
+
|
119
176
|
end
|
120
177
|
|
121
178
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
json.set! 'includes', includes
|
@@ -18,7 +18,7 @@ class TestApplication < Rails::Application
|
|
18
18
|
config.cache_classes = true
|
19
19
|
config.action_controller.perform_caching = true
|
20
20
|
config.cache_store = :memory_store, { size: 8.megabytes }
|
21
|
-
config.action_dispatch.show_exceptions =
|
21
|
+
config.action_dispatch.show_exceptions = :none
|
22
22
|
|
23
23
|
# if defined?(FactoryBotRails)
|
24
24
|
# config.factory_bot.definition_file_paths += [ '../factories' ]
|
@@ -28,6 +28,15 @@ end
|
|
28
28
|
# Test Application initialization
|
29
29
|
TestApplication.initialize!
|
30
30
|
|
31
|
+
# Make sure to test the right view files
|
32
|
+
ActionView::Template.unregister_template_handler :streamer, :jbuilder
|
33
|
+
case ENV["TSENCODER"]
|
34
|
+
when "turbostreamer"
|
35
|
+
ActionView::Template.register_template_handler :streamer, TurboStreamer::Handler
|
36
|
+
else
|
37
|
+
ActionView::Template.register_template_handler :jbuilder, JbuilderHandler
|
38
|
+
end
|
39
|
+
|
31
40
|
# Test Application Models
|
32
41
|
require 'standard_api/test_app/models'
|
33
42
|
|
@@ -44,6 +53,8 @@ Rails.application.routes.draw do
|
|
44
53
|
end
|
45
54
|
|
46
55
|
standard_resource :account
|
56
|
+
# standard_resources :photos, only: [ :index, :show ]
|
57
|
+
|
47
58
|
end
|
48
59
|
|
49
60
|
# Test Application Helpers
|
@@ -64,6 +64,15 @@ class ActiveSupport::TestCase
|
|
64
64
|
|
65
65
|
# = Helper Methods
|
66
66
|
|
67
|
+
def debug
|
68
|
+
ActiveRecord::Base.logger = Logger.new(STDOUT)
|
69
|
+
$debugging = true
|
70
|
+
yield
|
71
|
+
ensure
|
72
|
+
ActiveRecord::Base.logger = nil
|
73
|
+
$debugging = false
|
74
|
+
end
|
75
|
+
|
67
76
|
def controller_path
|
68
77
|
if defined?(@controller)
|
69
78
|
@controller.controller_path
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: standardapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 7.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Bracy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-04-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -16,70 +16,70 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 7.1.3
|
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: 7.1.3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activesupport
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 7.1.3
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 7.1.3
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: actionpack
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 7.1.3
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 7.1.3
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: activerecord-sort
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 6.1.0
|
61
|
+
version: 6.1.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 6.1.0
|
68
|
+
version: 6.1.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: activerecord-filter
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 6.1.0
|
75
|
+
version: 6.1.0
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 6.1.0
|
82
|
+
version: 6.1.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: pg
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +108,34 @@ dependencies:
|
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: oj
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: turbostreamer
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 1.11.0
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 1.11.0
|
111
139
|
- !ruby/object:Gem::Dependency
|
112
140
|
name: jbuilder
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -251,6 +279,7 @@ files:
|
|
251
279
|
- lib/standard_api/errors.rb
|
252
280
|
- lib/standard_api/helpers.rb
|
253
281
|
- lib/standard_api/includes.rb
|
282
|
+
- lib/standard_api/middleware.rb
|
254
283
|
- lib/standard_api/middleware/query_encoding.rb
|
255
284
|
- lib/standard_api/orders.rb
|
256
285
|
- lib/standard_api/railtie.rb
|
@@ -278,12 +307,20 @@ files:
|
|
278
307
|
- lib/standard_api/views/application/show.json.jbuilder
|
279
308
|
- lib/standard_api/views/application/show.streamer
|
280
309
|
- test/standard_api/caching_test.rb
|
310
|
+
- test/standard_api/controller/include_test.rb
|
311
|
+
- test/standard_api/controller/subresource_test.rb
|
281
312
|
- test/standard_api/helpers_test.rb
|
313
|
+
- test/standard_api/nested_attributes/belongs_to_test.rb
|
314
|
+
- test/standard_api/nested_attributes/has_and_belongs_to_many_test.rb
|
315
|
+
- test/standard_api/nested_attributes/has_many_test.rb
|
316
|
+
- test/standard_api/nested_attributes/has_one_test.rb
|
282
317
|
- test/standard_api/performance.rb
|
283
318
|
- test/standard_api/route_helpers_test.rb
|
284
319
|
- test/standard_api/standard_api_test.rb
|
285
320
|
- test/standard_api/test_app.rb
|
286
321
|
- test/standard_api/test_app/app/controllers/acl/account_acl.rb
|
322
|
+
- test/standard_api/test_app/app/controllers/acl/camera_acl.rb
|
323
|
+
- test/standard_api/test_app/app/controllers/acl/photo_acl.rb
|
287
324
|
- test/standard_api/test_app/app/controllers/acl/property_acl.rb
|
288
325
|
- test/standard_api/test_app/app/controllers/acl/reference_acl.rb
|
289
326
|
- test/standard_api/test_app/config/database.yml
|
@@ -298,6 +335,8 @@ files:
|
|
298
335
|
- test/standard_api/test_app/views/photos/schema.json.jbuilder
|
299
336
|
- test/standard_api/test_app/views/photos/schema.streamer
|
300
337
|
- test/standard_api/test_app/views/properties/edit.html.erb
|
338
|
+
- test/standard_api/test_app/views/sessions/create.json.jbuilder
|
339
|
+
- test/standard_api/test_app/views/sessions/create.streamer
|
301
340
|
- test/standard_api/test_app/views/sessions/new.html.erb
|
302
341
|
- test/standard_api/test_helper.rb
|
303
342
|
homepage: https://github.com/waratuman/standardapi
|
@@ -322,7 +361,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
322
361
|
- !ruby/object:Gem::Version
|
323
362
|
version: '0'
|
324
363
|
requirements: []
|
325
|
-
rubygems_version: 3.
|
364
|
+
rubygems_version: 3.5.9
|
326
365
|
signing_key:
|
327
366
|
specification_version: 4
|
328
367
|
summary: StandardAPI makes it easy to expose a query interface for your Rails models
|