flutter 0.1.0.pre.2 → 0.2.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/CHANGELOG.md +29 -5
- data/Gemfile +1 -0
- data/README.md +62 -2
- data/Rakefile +35 -1
- data/codecov.yml +13 -0
- data/lib/flutter/minitest.rb +6 -8
- data/lib/flutter/parser.rb +18 -16
- data/lib/flutter/persistence.rb +51 -5
- data/lib/flutter/rspec.rb +7 -7
- data/lib/flutter/tracker.rb +48 -5
- data/lib/flutter/version.rb +1 -1
- metadata +21 -95
- data/integration_tests/minitest/grape_app/.gitignore +0 -67
- data/integration_tests/minitest/grape_app/.ruby-version +0 -1
- data/integration_tests/minitest/grape_app/Gemfile +0 -17
- data/integration_tests/minitest/grape_app/Gemfile.lock +0 -89
- data/integration_tests/minitest/grape_app/README.md +0 -2
- data/integration_tests/minitest/grape_app/Rakefile +0 -9
- data/integration_tests/minitest/grape_app/api/api.rb +0 -34
- data/integration_tests/minitest/grape_app/api/routes/api_helpers.rb +0 -12
- data/integration_tests/minitest/grape_app/api/routes/change_request/api.rb +0 -69
- data/integration_tests/minitest/grape_app/api/routes/change_request/response_entity.rb +0 -18
- data/integration_tests/minitest/grape_app/api/routes/event/api.rb +0 -121
- data/integration_tests/minitest/grape_app/api/routes/event/response_entity.rb +0 -41
- data/integration_tests/minitest/grape_app/api/routes/project/api.rb +0 -59
- data/integration_tests/minitest/grape_app/api/routes/project/response_entity.rb +0 -13
- data/integration_tests/minitest/grape_app/api/routes/property/api.rb +0 -78
- data/integration_tests/minitest/grape_app/api/routes/property/response_entity.rb +0 -31
- data/integration_tests/minitest/grape_app/api/routes/trackable_object/api.rb +0 -64
- data/integration_tests/minitest/grape_app/api/routes/trackable_object/response_entity.rb +0 -24
- data/integration_tests/minitest/grape_app/api/routes/tracking_spec/api.rb +0 -88
- data/integration_tests/minitest/grape_app/api/routes/tracking_spec/response_entity.rb +0 -17
- data/integration_tests/minitest/grape_app/api/routes/tracking_spec/spec_response.rb +0 -19
- data/integration_tests/minitest/grape_app/api/routes/user/api.rb +0 -22
- data/integration_tests/minitest/grape_app/api/routes/user/response_entity.rb +0 -12
- data/integration_tests/minitest/grape_app/app/app.rb +0 -30
- data/integration_tests/minitest/grape_app/app/change_request/endpoint.rb +0 -24
- data/integration_tests/minitest/grape_app/app/change_request/generate_system_changes.rb +0 -25
- data/integration_tests/minitest/grape_app/app/change_request/service.rb +0 -79
- data/integration_tests/minitest/grape_app/app/event/endpoint.rb +0 -78
- data/integration_tests/minitest/grape_app/app/event/service.rb +0 -68
- data/integration_tests/minitest/grape_app/app/event/validator.rb +0 -108
- data/integration_tests/minitest/grape_app/app/project/endpoint.rb +0 -24
- data/integration_tests/minitest/grape_app/app/project/service.rb +0 -42
- data/integration_tests/minitest/grape_app/app/property/endpoint.rb +0 -39
- data/integration_tests/minitest/grape_app/app/property/service.rb +0 -56
- data/integration_tests/minitest/grape_app/app/trackable_object/endpoint.rb +0 -38
- data/integration_tests/minitest/grape_app/app/trackable_object/service.rb +0 -49
- data/integration_tests/minitest/grape_app/app/trackable_object/validator.rb +0 -40
- data/integration_tests/minitest/grape_app/app/tracking_spec/endpoint.rb +0 -58
- data/integration_tests/minitest/grape_app/app/tracking_spec/expand_tracking_spec_events.rb +0 -91
- data/integration_tests/minitest/grape_app/app/tracking_spec/service.rb +0 -51
- data/integration_tests/minitest/grape_app/app/tracking_spec/validator.rb +0 -61
- data/integration_tests/minitest/grape_app/app/utils/errors/api_exceptions.rb +0 -10
- data/integration_tests/minitest/grape_app/app/utils/errors/service_exceptions.rb +0 -12
- data/integration_tests/minitest/grape_app/app/versioned_entity/entity.rb +0 -110
- data/integration_tests/minitest/grape_app/app/versioned_entity/service.rb +0 -47
- data/integration_tests/minitest/grape_app/app/versioned_entity/validator.rb +0 -61
- data/integration_tests/minitest/grape_app/app/versioned_entity_snapshot/entity.rb +0 -32
- data/integration_tests/minitest/grape_app/config/boot.rb +0 -9
- data/integration_tests/minitest/grape_app/config.ru +0 -3
- data/integration_tests/minitest/grape_app/db/proto/change_request.rb +0 -10
- data/integration_tests/minitest/grape_app/db/proto/common/doc.rb +0 -86
- data/integration_tests/minitest/grape_app/db/proto/event.rb +0 -10
- data/integration_tests/minitest/grape_app/db/proto/event_snapshot.rb +0 -10
- data/integration_tests/minitest/grape_app/db/proto/project.rb +0 -21
- data/integration_tests/minitest/grape_app/db/proto/property.rb +0 -10
- data/integration_tests/minitest/grape_app/db/proto/property_snapshot.rb +0 -10
- data/integration_tests/minitest/grape_app/db/proto/trackable_object.rb +0 -10
- data/integration_tests/minitest/grape_app/db/proto/trackable_object_snapshot.rb +0 -10
- data/integration_tests/minitest/grape_app/db/proto/tracking_spec.rb +0 -10
- data/integration_tests/minitest/grape_app/test/api/functional/event_test.rb +0 -186
- data/integration_tests/minitest/grape_app/test/api/functional/property_test.rb +0 -197
- data/integration_tests/minitest/grape_app/test/api/functional/trackable_object_test.rb +0 -134
- data/integration_tests/minitest/grape_app/test/api/functional/tracking_spec_test.rb +0 -56
- data/integration_tests/minitest/grape_app/test/api/functional/user_test.rb +0 -24
- data/integration_tests/minitest/grape_app/test/api/functional/versioned_entity_helper.rb +0 -157
- data/integration_tests/minitest/grape_app/test/fixtures/change_requests.rb +0 -83
- data/integration_tests/minitest/grape_app/test/fixtures/event_snapshots.rb +0 -105
- data/integration_tests/minitest/grape_app/test/fixtures/events.rb +0 -58
- data/integration_tests/minitest/grape_app/test/fixtures/properties.rb +0 -66
- data/integration_tests/minitest/grape_app/test/fixtures/property_snapshots.rb +0 -124
- data/integration_tests/minitest/grape_app/test/fixtures/sample_tracking_spec.json +0 -125
- data/integration_tests/minitest/grape_app/test/fixtures/trackable_objects.rb +0 -58
- data/integration_tests/minitest/grape_app/test/fixtures/trackable_objects_snapshots.rb +0 -61
- data/integration_tests/minitest/grape_app/test/fixtures/tracking_specs.rb +0 -22
- data/integration_tests/minitest/grape_app/test/test_helper.rb +0 -15
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
require_relative '../../db/proto/tracking_spec'
|
|
2
|
-
module Skee
|
|
3
|
-
module App
|
|
4
|
-
module TrackingSpec
|
|
5
|
-
class Service
|
|
6
|
-
DB = Skee::DB::Proto
|
|
7
|
-
|
|
8
|
-
def self.list
|
|
9
|
-
DB::TrackingSpec.all
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def self.get(params)
|
|
13
|
-
DB::TrackingSpec.find(params[:id])
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def self.find_by(params)
|
|
17
|
-
DB::TrackingSpec.where(params)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def self.create(params)
|
|
21
|
-
# add any validation or filtering logic here to
|
|
22
|
-
# derive fields from params
|
|
23
|
-
fields = {
|
|
24
|
-
version_identifier: params[:version_identifier],
|
|
25
|
-
change_request_id: params[:change_request_id],
|
|
26
|
-
project_id: params[:project_id],
|
|
27
|
-
event_ids: params[:event_ids]
|
|
28
|
-
}
|
|
29
|
-
DB::TrackingSpec.create(fields)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def self.update(params)
|
|
33
|
-
# send valid fields excluding id
|
|
34
|
-
fields = {
|
|
35
|
-
version_identifier: params[:version_identifier],
|
|
36
|
-
change_request_id: params[:change_request_id],
|
|
37
|
-
project_id: params[:project_id],
|
|
38
|
-
event_ids: params[:event_ids]
|
|
39
|
-
}
|
|
40
|
-
tracking_spec = DB::TrackingSpec.find(params[:id])
|
|
41
|
-
tracking_spec.update(fields)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def self.delete(params)
|
|
45
|
-
tracking_spec = DB::TrackingSpec.find(params[:id])
|
|
46
|
-
tracking_spec.delete
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
require_relative '../../app/change_request/service'
|
|
2
|
-
module Skee
|
|
3
|
-
module App
|
|
4
|
-
module TrackingSpec
|
|
5
|
-
class Validator
|
|
6
|
-
def initialize(params)
|
|
7
|
-
@params = params
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
ERRORS = Utils::Errors
|
|
11
|
-
|
|
12
|
-
def validate_create_params
|
|
13
|
-
validate_unique_version_identifier
|
|
14
|
-
validate_event_ids_exist
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def validate_update_params
|
|
18
|
-
validate_unique_version_identifier
|
|
19
|
-
validate_tracking_spec_exists
|
|
20
|
-
validate_event_ids_exist
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def validate_expand_params
|
|
24
|
-
validate_change_request
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
private
|
|
28
|
-
|
|
29
|
-
def validate_unique_version_identifier
|
|
30
|
-
return unless @params[:version_identifier]
|
|
31
|
-
tracking_spec = Skee::App::TrackingSpec::Service.find_by(
|
|
32
|
-
version_identifier: @params[:version_identifier]
|
|
33
|
-
)
|
|
34
|
-
return unless tracking_spec
|
|
35
|
-
raise ERRORS::NotAllowedToUpdate.new('Invalid parameter: Version Identifier should be unique.')
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def validate_tracking_spec_exists
|
|
39
|
-
tracking_spec = Skee::App::TrackingSpec::Service.get(id: @params[:id])
|
|
40
|
-
return if tracking_spec
|
|
41
|
-
raise ERRORS::RecordNotFoundException.new('Invalid parameter: Tracking spec does not exist')
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def validate_event_ids_exist
|
|
45
|
-
return if @params[:event_ids].empty?
|
|
46
|
-
events = Skee::App::Event::Service.list(ids: @params[:event_ids])
|
|
47
|
-
return if (@params[:event_ids] - events.map(&:id)).empty?
|
|
48
|
-
raise ERRORS::NotAllowedToUpdate.new('Invalid parameter: Event IDs do not exist')
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def validate_change_request
|
|
52
|
-
raise ERRORS::RecordNotFoundException.new('Invalid change request') unless change_request
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def change_request
|
|
56
|
-
@change_request ||= Skee::App::ChangeRequest::Service.get(id: @params[:change_request_id])
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
module Skee
|
|
2
|
-
module App
|
|
3
|
-
module Utils
|
|
4
|
-
module Errors
|
|
5
|
-
class UniquenessViolationException < StandardError; end
|
|
6
|
-
class RecordNotFoundException < StandardError; end
|
|
7
|
-
class NotAllowedToUpdate < StandardError; end
|
|
8
|
-
class NotAllowedToCancelChanges < StandardError; end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
require_relative '../../app/change_request/service'
|
|
2
|
-
module Skee
|
|
3
|
-
module App
|
|
4
|
-
module VersionedEntity
|
|
5
|
-
class Entity
|
|
6
|
-
def initialize(entity)
|
|
7
|
-
@entity = entity
|
|
8
|
-
@db = Skee::App::DB_MAPPING_ENTITY[@entity]
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
attr_accessor :versioned_entity, :versioned_entity_snapshot
|
|
12
|
-
|
|
13
|
-
def list(ids:, change_request_id:)
|
|
14
|
-
ids = @db.all.map(&:id) if ids.empty?
|
|
15
|
-
return_entities = ids.map{ |id| get({
|
|
16
|
-
id: id,
|
|
17
|
-
change_request_id: change_request_id
|
|
18
|
-
})
|
|
19
|
-
}
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def get(params)
|
|
23
|
-
versioned_entity_id = params[:id]
|
|
24
|
-
versioned_entity = @db.find(versioned_entity_id)
|
|
25
|
-
if change_request = Skee::App::ChangeRequest::Service.get(id: params[:change_request_id])
|
|
26
|
-
if change_request.change_set[@entity][versioned_entity_id]
|
|
27
|
-
entity_snapshot_id = change_request.change_set[@entity][versioned_entity_id].values.first
|
|
28
|
-
else
|
|
29
|
-
entity_snapshot_id = versioned_entity.latest_snapshot_id
|
|
30
|
-
end
|
|
31
|
-
else
|
|
32
|
-
entity_snapshot_id = versioned_entity.latest_snapshot_id
|
|
33
|
-
end
|
|
34
|
-
entity_snapshot = Skee::App::VersionedEntitySnapshot::Entity.new(@entity).get(id: entity_snapshot_id)
|
|
35
|
-
self.versioned_entity = versioned_entity
|
|
36
|
-
self.versioned_entity_snapshot = entity_snapshot
|
|
37
|
-
self
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def create(params)
|
|
41
|
-
versioned_entity_params = {
|
|
42
|
-
# may need to add more fields
|
|
43
|
-
# snapshot_mapping: {params[:change_request_id] => entity_snapshot.id
|
|
44
|
-
}
|
|
45
|
-
versioned_entity = @db.create(versioned_entity_params)
|
|
46
|
-
entity_snapshot_params = params.merge(parent_entity_id: versioned_entity.id)
|
|
47
|
-
entity_snapshot = Skee::App::VersionedEntitySnapshot::Entity.new(@entity).create(entity_snapshot_params)
|
|
48
|
-
update_change_request(params[:change_request_id], versioned_entity.id, nil, entity_snapshot.id)
|
|
49
|
-
self.versioned_entity = versioned_entity
|
|
50
|
-
self.versioned_entity_snapshot = entity_snapshot
|
|
51
|
-
self
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def update(update_params)
|
|
55
|
-
versioned_entity_id = update_params[:id]
|
|
56
|
-
change_request = Skee::App::ChangeRequest::Service.get(id: update_params[:change_request_id])
|
|
57
|
-
change_request.change_set[@entity] ||= {}
|
|
58
|
-
entity_snapshot = if change_request.change_set[@entity][versioned_entity_id]
|
|
59
|
-
update_existing_snapshot(change_request, update_params)
|
|
60
|
-
else
|
|
61
|
-
create_new_snapshot(update_params)
|
|
62
|
-
end
|
|
63
|
-
versioned_entity = @db.find(versioned_entity_id)
|
|
64
|
-
self.versioned_entity = versioned_entity
|
|
65
|
-
self.versioned_entity_snapshot = entity_snapshot
|
|
66
|
-
self
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
private
|
|
70
|
-
|
|
71
|
-
def update_existing_snapshot(change_request, update_params)
|
|
72
|
-
versioned_entity_id = update_params[:id]
|
|
73
|
-
entity_snapshot_id = change_request.change_set[@entity][versioned_entity_id].values.first
|
|
74
|
-
existing_entity_snapshot = Skee::App::VersionedEntitySnapshot::Entity.new(@entity).get(id: entity_snapshot_id)
|
|
75
|
-
update_params = update_params.select {|key, _| key != :id && key != "id"}
|
|
76
|
-
existing_entity_snapshot.update(update_params)
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def create_new_snapshot(update_params)
|
|
80
|
-
versioned_entity_id = update_params[:id]
|
|
81
|
-
existing_entity = @db.find(versioned_entity_id)
|
|
82
|
-
entity_snapshot_id = existing_entity.latest_snapshot_id
|
|
83
|
-
current_entity_snapshot = Skee::App::VersionedEntitySnapshot::Entity.new(@entity).get(id: entity_snapshot_id)
|
|
84
|
-
current_entity_snapshot_params = current_entity_snapshot.to_h.select {|key, _| key != :id && key != "id"}
|
|
85
|
-
new_entity_snapshot_params = current_entity_snapshot_params.each do |key, _|
|
|
86
|
-
current_entity_snapshot_params[key] = update_params[key] if update_params.key?(key)
|
|
87
|
-
end
|
|
88
|
-
new_entity_snapshot_params[:previous_snapshot_id] = entity_snapshot_id
|
|
89
|
-
new_entity_snapshot_params[:is_removed] = true if update_params[:is_removed]
|
|
90
|
-
new_entity_snapshot = Skee::App::VersionedEntitySnapshot::Entity.new(@entity).create(new_entity_snapshot_params)
|
|
91
|
-
update_change_request(update_params[:change_request_id], versioned_entity_id, entity_snapshot_id, new_entity_snapshot.id)
|
|
92
|
-
new_entity_snapshot
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
def update_change_request(change_request_id, versioned_entity_id, current_entity_snapshot_id, new_entity_snapshot_id)
|
|
96
|
-
Skee::App::ChangeRequest::Service.update_change_set(
|
|
97
|
-
id: change_request_id,
|
|
98
|
-
changes: {
|
|
99
|
-
@entity => {
|
|
100
|
-
versioned_entity_id => {
|
|
101
|
-
current_entity_snapshot_id => new_entity_snapshot_id
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
)
|
|
106
|
-
end
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
end
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
require_relative 'validator'
|
|
2
|
-
require_relative 'entity'
|
|
3
|
-
require_relative '../versioned_entity_snapshot/entity'
|
|
4
|
-
module Skee
|
|
5
|
-
module App
|
|
6
|
-
class VersionedEntityService
|
|
7
|
-
def self.list(ids: [], change_request_id: nil)
|
|
8
|
-
Skee::App::VersionedEntity::Entity.new(entity).list(ids: ids, change_request_id: change_request_id)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def self.get(params)
|
|
12
|
-
Skee::App::VersionedEntity::Entity.new(entity).get(params)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def self.create(params)
|
|
16
|
-
Skee::App::VersionedEntity::Validator.new(
|
|
17
|
-
params, entity
|
|
18
|
-
).validate_create_params
|
|
19
|
-
create_fields = create_fields_keys.map do |key|
|
|
20
|
-
value = key == :prev_entity_id ? nil : params[key]
|
|
21
|
-
[key, value]
|
|
22
|
-
end.to_h
|
|
23
|
-
Skee::App::VersionedEntity::Entity.new(entity).create(create_fields)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def self.update(params)
|
|
27
|
-
Skee::App::VersionedEntity::Validator.new(
|
|
28
|
-
params, entity
|
|
29
|
-
).validate_update_params
|
|
30
|
-
update_fields = params.slice(*update_fields_keys).compact
|
|
31
|
-
Skee::App::VersionedEntity::Entity.new(entity).update(update_fields)
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def self.remove(params)
|
|
35
|
-
Skee::App::VersionedEntity::Validator.new(
|
|
36
|
-
params, entity
|
|
37
|
-
).validate_remove_params
|
|
38
|
-
remove_fields = {
|
|
39
|
-
change_request_id: params[:change_request_id],
|
|
40
|
-
id: params[:id],
|
|
41
|
-
is_removed: true
|
|
42
|
-
}
|
|
43
|
-
Skee::App::VersionedEntity::Entity.new(entity).update(remove_fields)
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
require_relative '../../app/change_request/service'
|
|
2
|
-
module Skee
|
|
3
|
-
module App
|
|
4
|
-
module VersionedEntity
|
|
5
|
-
class Validator
|
|
6
|
-
def initialize(params, entity_type)
|
|
7
|
-
@params = params
|
|
8
|
-
@entity_type = entity_type
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
ERRORS = Utils::Errors
|
|
12
|
-
|
|
13
|
-
def validate_create_params
|
|
14
|
-
validate_change_request_status
|
|
15
|
-
validate_uniqueness_by_name
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def validate_update_params
|
|
19
|
-
validate_versioned_entity_present
|
|
20
|
-
validate_change_request_status
|
|
21
|
-
validate_uniqueness_by_name
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def validate_remove_params
|
|
25
|
-
validate_versioned_entity_present
|
|
26
|
-
validate_change_request_status
|
|
27
|
-
validate_uniqueness_by_name
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
private
|
|
31
|
-
|
|
32
|
-
def validate_versioned_entity_present
|
|
33
|
-
entity_instance = Skee::App::DB_MAPPING_ENTITY[@entity_type].find(@params[:id])
|
|
34
|
-
raise ERRORS::RecordNotFoundException.new('Resource not found') unless entity_instance
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def validate_change_request_status
|
|
38
|
-
raise ERRORS::RecordNotFoundException.new('Invalid change request') unless change_request
|
|
39
|
-
raise ERRORS::NotAllowedToUpdate.new('Invalid change request') if change_request.status != 'open'
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def validate_uniqueness_by_name
|
|
43
|
-
# todo: fix this when we know structure of tracking spec
|
|
44
|
-
# tracking_spec = Skee::App::TrackingSpec::Service.get(id: change_request.source_tracking_spec_id)
|
|
45
|
-
# existing_entity_ids = tracking_spec.entity_set[@entity_type]
|
|
46
|
-
# new_entity_change_set = change_request.change_set[@entity_type]
|
|
47
|
-
# return unless new_entity_change_set
|
|
48
|
-
# new_entity_ids = new_entity_change_set.values.flatten
|
|
49
|
-
# non_unique_name = Skee::App::DB_MAPPING_ENTITY[@entity_type].find_all(ids: (new_entity_ids + existing_entity_ids)).any? do |entity|
|
|
50
|
-
# entity.name == @params[:name]
|
|
51
|
-
# end
|
|
52
|
-
# raise ERRORS::UniquenessViolationException.new('Invalid name') if non_unique_name
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def change_request
|
|
56
|
-
@change_request ||= Skee::App::ChangeRequest::Service.get(id: @params[:change_request_id])
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
require_relative '../../app/change_request/service'
|
|
2
|
-
module Skee
|
|
3
|
-
module App
|
|
4
|
-
module VersionedEntitySnapshot
|
|
5
|
-
class Entity
|
|
6
|
-
def initialize(entity)
|
|
7
|
-
@entity = entity
|
|
8
|
-
@db = Skee::App::DB_MAPPING_ENTITY_SNAPSHOT[@entity]
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def list(ids:)
|
|
12
|
-
return @db.all if ids.empty?
|
|
13
|
-
@db.find_all(ids: ids)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def get(params)
|
|
17
|
-
# add validator, to reject if nil, or does not exist.
|
|
18
|
-
@db.find(params[:id])
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def create(params)
|
|
22
|
-
@db.create(params)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def update(update_params)
|
|
26
|
-
snapshot = @db.find(update_params[:id])
|
|
27
|
-
snapshot.update(update_params)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
require 'ostruct'
|
|
2
|
-
module Skee
|
|
3
|
-
module DB
|
|
4
|
-
module Proto
|
|
5
|
-
module Common
|
|
6
|
-
class Doc
|
|
7
|
-
def initialize(doc)
|
|
8
|
-
@doc = doc
|
|
9
|
-
generate_attribute_readers(doc)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def generate_attribute_readers(doc)
|
|
13
|
-
doc.to_h.each do |key, value|
|
|
14
|
-
define_singleton_method(key) { value }
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def to_h
|
|
19
|
-
@doc.to_h
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def self.all
|
|
23
|
-
@all_docs
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def self.find(id)
|
|
27
|
-
all_docs = all
|
|
28
|
-
doc = all_docs.find do |doc|
|
|
29
|
-
doc.id == id
|
|
30
|
-
end
|
|
31
|
-
self.new(doc) if doc
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def self.find_all(ids:)
|
|
35
|
-
all_docs = all
|
|
36
|
-
docs_array = all_docs.filter do |doc|
|
|
37
|
-
ids.include? doc.id
|
|
38
|
-
end
|
|
39
|
-
docs_array.map do |doc|
|
|
40
|
-
self.new(doc)
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def self.where(fields)
|
|
45
|
-
all_docs = all
|
|
46
|
-
docs_array = all_docs.filter do |doc|
|
|
47
|
-
fields.all? do |key, value|
|
|
48
|
-
doc[key] == value
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
docs_array.map do |doc|
|
|
52
|
-
self.new(doc)
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def self.create(fields)
|
|
57
|
-
new_id = rand(0..2**32)
|
|
58
|
-
new_doc = OpenStruct.new(
|
|
59
|
-
id: new_id
|
|
60
|
-
)
|
|
61
|
-
fields.each do |key, value|
|
|
62
|
-
new_doc[key] = value
|
|
63
|
-
end
|
|
64
|
-
all << new_doc
|
|
65
|
-
find(new_doc.id)
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def update(fields)
|
|
69
|
-
fields.each do |key, value|
|
|
70
|
-
@doc[key] = value
|
|
71
|
-
end
|
|
72
|
-
@doc
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def delete
|
|
76
|
-
self.class.all.delete(@doc)
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def self.delete_all
|
|
80
|
-
@all_docs = []
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
require_relative './common/doc'
|
|
2
|
-
module Skee
|
|
3
|
-
module DB
|
|
4
|
-
module Proto
|
|
5
|
-
class Project < Proto::Common::Doc
|
|
6
|
-
@all_docs = [
|
|
7
|
-
OpenStruct.new(
|
|
8
|
-
id: 'proj123',
|
|
9
|
-
name: 'project 1 lah',
|
|
10
|
-
description: 'project desc 1 leh'
|
|
11
|
-
),
|
|
12
|
-
OpenStruct.new(
|
|
13
|
-
id: 'proj456',
|
|
14
|
-
name: 'project 2 lah',
|
|
15
|
-
description: 'project desc 2 leh'
|
|
16
|
-
)
|
|
17
|
-
]
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|