iknow_view_models 3.9.2 → 3.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 13912eaa6913049d8b8a5ac98d135d25f23abbfedf3046ba9c1a12ee92bae45d
4
- data.tar.gz: 9d8c5abafd90bac5cfa955aa152b89d03cd0657f3923edb5e7ef5e534cd5e4a1
3
+ metadata.gz: 85aa5f3dd882b989e6a4d1fa8d5d89be347f5f3c215af86851f1ef086d583472
4
+ data.tar.gz: d202810ca019d425b0de503b7a077d164d5919dc9206cf069e93b37ddf432334
5
5
  SHA512:
6
- metadata.gz: 3072dd149b35d236ca79f0a2a22232bf30274a05a141ce77f74358a1c2ac9b72f7c877879bbff1508c71fae477d0ebdff4daf2c35347bf71e07cc3811e4227c2
7
- data.tar.gz: d42c834cf4e569b8685a9e787fc9ea01de1bc656f5f5cfd6255228806556823368f2685913414b68c84d23474b19d33329803d89c47525c91194f1b2a88d2b26
6
+ metadata.gz: 3005ecb2044fd83003ccd444fb2b22d9787b74c929f157573baa084d4d3dff1b2f24d86e30f1ee9bd1e03604a4a0f9a57ec7431cadaea28faa45eda235dbcd28
7
+ data.tar.gz: 82971047b73442cbccaf9e3e80f1386dc373329b91f94260f2daeeb5794f99b3502cc47b911a62da38f7d0932b9fea49ae72319de9fb2d79f8be6035e0a34110
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module IknowViewModels
4
- VERSION = '3.9.2'
4
+ VERSION = '3.10.0'
5
5
  end
@@ -3,6 +3,7 @@
3
3
  require 'view_model/active_record/controller_base'
4
4
  require 'view_model/active_record/collection_nested_controller'
5
5
  require 'view_model/active_record/singular_nested_controller'
6
+ require 'view_model/controller/migration_versions'
6
7
 
7
8
  # Controller for accessing an ViewModel::ActiveRecord
8
9
  # Provides for the following routes:
@@ -16,8 +17,7 @@ module ViewModel::ActiveRecord::Controller
16
17
  include ViewModel::ActiveRecord::ControllerBase
17
18
  include ViewModel::ActiveRecord::CollectionNestedController
18
19
  include ViewModel::ActiveRecord::SingularNestedController
19
-
20
- MIGRATION_VERSION_HEADER = 'X-ViewModel-Versions'
20
+ include ViewModel::Controller::MigrationVersions
21
21
 
22
22
  def show(scope: nil, viewmodel_class: self.viewmodel_class, serialize_context: new_serialize_context(viewmodel_class: viewmodel_class))
23
23
  view = nil
@@ -95,51 +95,6 @@ module ViewModel::ActiveRecord::Controller
95
95
  parse_param(:id)
96
96
  end
97
97
 
98
- def migration_versions
99
- @migration_versions ||=
100
- begin
101
- specified_migration_versions.reject do |viewmodel_class, required_version|
102
- viewmodel_class.schema_version == required_version
103
- end.freeze
104
- end
105
- end
106
-
107
- def specified_migration_versions
108
- @specified_migration_versions ||=
109
- begin
110
- version_spec =
111
- if params.include?(:versions)
112
- params[:versions]
113
- elsif request.headers.include?(MIGRATION_VERSION_HEADER)
114
- begin
115
- JSON.parse(request.headers[MIGRATION_VERSION_HEADER])
116
- rescue JSON::ParserError
117
- raise ViewModel::Error.new(status: 400, detail: "Invalid JSON in #{MIGRATION_VERSION_HEADER}")
118
- end
119
- else
120
- {}
121
- end
122
-
123
- versions =
124
- IknowParams::Parser.parse_value(
125
- version_spec,
126
- with: IknowParams::Serializer::HashOf.new(
127
- IknowParams::Serializer::String, IknowParams::Serializer::Integer))
128
-
129
- migration_versions = {}
130
-
131
- versions.each do |view_name, required_version|
132
- viewmodel_class = ViewModel::Registry.for_view_name(view_name)
133
- migration_versions[viewmodel_class] = required_version
134
- rescue ViewModel::DeserializationError::UnknownView
135
- # Ignore requests to migrate types that no longer exist
136
- next
137
- end
138
-
139
- migration_versions.freeze
140
- end
141
- end
142
-
143
98
  def migrated_deep_schema_version
144
99
  ViewModel::Migrator.migrated_deep_schema_version(viewmodel_class, migration_versions, include_referenced: true)
145
100
  end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ViewModel::Controller::MigrationVersions
4
+ extend ActiveSupport::Concern
5
+
6
+ MIGRATION_VERSION_HEADER = 'X-ViewModel-Versions'
7
+
8
+ def migration_versions
9
+ @migration_versions ||=
10
+ begin
11
+ specified_migration_versions.reject do |viewmodel_class, required_version|
12
+ viewmodel_class.schema_version == required_version
13
+ end.freeze
14
+ end
15
+ end
16
+
17
+ def specified_migration_versions
18
+ @specified_migration_versions ||=
19
+ begin
20
+ version_spec =
21
+ if params.include?(:versions)
22
+ params[:versions]
23
+ elsif request.headers.include?(MIGRATION_VERSION_HEADER)
24
+ begin
25
+ JSON.parse(request.headers[MIGRATION_VERSION_HEADER])
26
+ rescue JSON::ParserError
27
+ raise ViewModel::Error.new(status: 400, detail: "Invalid JSON in #{MIGRATION_VERSION_HEADER}")
28
+ end
29
+ else
30
+ {}
31
+ end
32
+
33
+ versions =
34
+ IknowParams::Parser.parse_value(
35
+ version_spec,
36
+ with: IknowParams::Serializer::HashOf.new(
37
+ IknowParams::Serializer::String, IknowParams::Serializer::Integer))
38
+
39
+ migration_versions = {}
40
+
41
+ versions.each do |view_name, required_version|
42
+ viewmodel_class = ViewModel::Registry.for_view_name(view_name)
43
+ migration_versions[viewmodel_class] = required_version
44
+ rescue ViewModel::DeserializationError::UnknownView
45
+ # Ignore requests to migrate types that no longer exist
46
+ next
47
+ end
48
+
49
+ migration_versions.freeze
50
+ end
51
+ end
52
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iknow_view_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.9.2
4
+ version: 3.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - iKnow Team
@@ -428,6 +428,7 @@ files:
428
428
  - lib/view_model/changes.rb
429
429
  - lib/view_model/config.rb
430
430
  - lib/view_model/controller.rb
431
+ - lib/view_model/controller/migration_versions.rb
431
432
  - lib/view_model/deserialization_error.rb
432
433
  - lib/view_model/deserialize_context.rb
433
434
  - lib/view_model/error.rb