global-registry-bindings 0.1.1 → 0.1.2

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.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +12 -4
  3. data/lib/global_registry_bindings/entity/push_relationship_methods.rb +53 -29
  4. data/lib/global_registry_bindings/entity/relationship_type_methods.rb +17 -8
  5. data/lib/global_registry_bindings/global_registry_bindings.rb +21 -14
  6. data/lib/global_registry_bindings/model/entity.rb +13 -9
  7. data/lib/global_registry_bindings/model/push_relationship.rb +6 -0
  8. data/lib/global_registry_bindings/model/relationship.rb +12 -10
  9. data/lib/global_registry_bindings/options/entity_class_options.rb +4 -0
  10. data/lib/global_registry_bindings/options/entity_instance_options.rb +1 -0
  11. data/lib/global_registry_bindings/options/entity_options_parser.rb +1 -0
  12. data/lib/global_registry_bindings/options/relationship_class_options.rb +9 -0
  13. data/lib/global_registry_bindings/options/relationship_instance_options.rb +16 -6
  14. data/lib/global_registry_bindings/options/relationship_options_parser.rb +5 -5
  15. data/lib/global_registry_bindings/version.rb +1 -1
  16. data/lib/global_registry_bindings/workers/push_relationship_worker.rb +2 -2
  17. data/spec/acceptance/global_registry_bindings_spec.rb +11 -9
  18. data/spec/factories/factories.rb +2 -0
  19. data/spec/fixtures/get_entity_types_fancy_org_assignment.json +35 -0
  20. data/spec/fixtures/post_relationship_types_assigned_by.json +16 -0
  21. data/spec/fixtures/put_entities_fancy_org_assignment_assigned_by.json +20 -0
  22. data/spec/internal/app/models/area.rb +2 -1
  23. data/spec/internal/app/models/assignment.rb +12 -2
  24. data/spec/internal/app/models/community.rb +2 -1
  25. data/spec/internal/app/models/namespaced/person.rb +6 -2
  26. data/spec/internal/app/models/organization.rb +3 -1
  27. data/spec/internal/db/schema.rb +2 -0
  28. data/spec/internal/log/test.log +28818 -0
  29. data/spec/workers/push_relationship_worker_spec.rb +133 -33
  30. metadata +10 -4
@@ -0,0 +1,20 @@
1
+ {
2
+ "entity": {
3
+ "fancy_org_assignment": {
4
+ "id": "51a014a4-4252-11e7-944f-129bd0521531",
5
+ "person:relationship": {
6
+ "person": "22527d88-3cba-11e7-b876-129bd0521531",
7
+ "relationship_entity_id": "0fd8b8b8-76c9-11e7-b15c-129bd0521531",
8
+ "client_integration_id": "1"
9
+ },
10
+ "person": {
11
+ "id": "22527d88-3cba-11e7-b876-129bd0521531"
12
+ },
13
+ "fancy_org": {
14
+ "id": "aebb4170-3f34-11e7-bba6-129bd0521531"
15
+ },
16
+ "client_integration_id": "1"
17
+ }
18
+ },
19
+ "meta": {}
20
+ }
@@ -3,5 +3,6 @@
3
3
  class Area < ApplicationRecord
4
4
  has_many :organizations
5
5
 
6
- global_registry_bindings
6
+ global_registry_bindings include_all_columns: false,
7
+ extra_fields: { area_name: :string, area_code: :string, is_active: :boolean }
7
8
  end
@@ -3,9 +3,19 @@
3
3
  class Assignment < ApplicationRecord
4
4
  belongs_to :person, class_name: 'Namespaced::Person'
5
5
  belongs_to :organization
6
+ belongs_to :assigned_by, class_name: 'Namespaced::Person', foreign_key: 'assigned_by_id'
6
7
 
7
8
  global_registry_bindings binding: :relationship,
8
- type: :assignment,
9
+ type: :fancy_org_assignment,
9
10
  primary_association: :person,
10
- related_association: :organization
11
+ related_association: :organization,
12
+ exclude_fields: %i[assigned_by_id assigned_by_gr_rel_id]
13
+
14
+ global_registry_bindings binding: :relationship,
15
+ type: :assigned_by,
16
+ id_column: :assigned_by_gr_rel_id,
17
+ include_all_columns: false,
18
+ primary_binding: :fancy_org_assignment,
19
+ primary_relationship_name: :assigned_by,
20
+ related_association: :assigned_by
11
21
  end
@@ -10,7 +10,8 @@ class Community < ApplicationRecord
10
10
  related_relationship_name: :ministry,
11
11
  related_association_type: :ministry,
12
12
  related_association_foreign_key: :infobase_id,
13
- related_global_registry_id: :pull_infobase_global_registry_id
13
+ related_global_registry_id: :pull_infobase_global_registry_id,
14
+ include_all_columns: false
14
15
 
15
16
  def pull_infobase_global_registry_id(_type)
16
17
  '41f767fd-86f4-42e2-8d24-cbc3f697b794'
@@ -27,14 +27,18 @@ module Namespaced
27
27
  related_association: :country_of_service,
28
28
  exclude_fields: :exclude_cos_fields,
29
29
  extra_fields: :extra_cos_fields,
30
- ensure_relationship_type: false
30
+ ensure_relationship_type: false,
31
+ rename_entity_type: false,
32
+ include_all_columns: false
31
33
 
32
34
  global_registry_bindings binding: :relationship,
33
35
  type: :country_of_residence,
34
36
  id_column: :country_of_residence_gr_id,
35
37
  client_integration_id: ->(model) { "cor_#{model.id}" },
36
38
  related_association: :country_of_residence,
37
- ensure_relationship_type: false
39
+ ensure_relationship_type: false,
40
+ rename_entity_type: false,
41
+ include_all_columns: false
38
42
 
39
43
  def entity_attributes_to_push
40
44
  entity_attributes = super
@@ -21,7 +21,9 @@ class Organization < ApplicationRecord
21
21
  id_column: :global_registry_area_id,
22
22
  related_association: :area,
23
23
  exclude_fields: proc { |_type, _model| %i[] },
24
- extra_fields: proc { |_type, _model| { priority: :string } }
24
+ extra_fields: proc { |_type, _model| { priority: :string } },
25
+ rename_entity_type: false,
26
+ include_all_columns: false
25
27
 
26
28
  def exclude_gr_fields(_type)
27
29
  %i[id created_at updated_at gr_id parent_id area_id global_registry_area_id]
@@ -38,10 +38,12 @@ ActiveRecord::Schema.define(version: 0) do
38
38
 
39
39
  create_table :assignments, force: true do |t|
40
40
  t.string :global_registry_id
41
+ t.string :assigned_by_gr_rel_id
41
42
  t.string :role
42
43
  t.datetime :hired_at
43
44
  t.references :person, index: true
44
45
  t.references :organization, index: true
46
+ t.references :assigned_by, index: true
45
47
  t.timestamps
46
48
  end
47
49