Class: CDP::Builders::Entity
- Inherits:
-
Object
- Object
- CDP::Builders::Entity
show all
- Includes:
- Value
- Defined in:
- lib/cdp/builders/entity.rb
Constant Summary
Constants included
from Value
Value::VALID_COMMAND_TYPE
Instance Method Summary
collapse
-
#append_set_values(condition:, field_name:, values:, timestamp: Time.now.utc) ⇒ Object
-
#create(attributes) ⇒ Object
-
#create_if_not_exists(payload, unique_by:) ⇒ Object
-
#delete(condition:) ⇒ Object
-
#delete_set_values(condition:, field_name:, values:, timestamp: Time.now.utc) ⇒ Object
-
#exists?(_condition) ⇒ Boolean
-
#initialize(tenant_id:, entity_schema:, entity_relations:) ⇒ Entity
constructor
A new instance of Entity.
-
#method_missing(method_name, args) ⇒ Object
-
#update(attributes, condition:) ⇒ Object
-
#upsert(payload, unique_by:) ⇒ Object
Methods included from Value
build, build_payload_with_ref, supported_command
Constructor Details
#initialize(tenant_id:, entity_schema:, entity_relations:) ⇒ Entity
Returns a new instance of Entity.
13
14
15
16
17
|
# File 'lib/cdp/builders/entity.rb', line 13
def initialize(tenant_id:, entity_schema:, entity_relations:)
@tenant_id = tenant_id
@entity_schema = entity_schema
@entity_relations = entity_relations
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, args) ⇒ Object
116
117
118
119
120
121
122
123
124
125
126
127
|
# File 'lib/cdp/builders/entity.rb', line 116
def method_missing(method_name, args)
method_name_str = method_name.to_s.downcase
builders = entity_relations_builders
if builders.include?(method_name_str)
source_id = args.fetch(:source_id)
target_id = args.fetch(:target_id)
return builders[method_name_str].call(source_id, target_id)
end
super
end
|
Instance Method Details
#append_set_values(condition:, field_name:, values:, timestamp: Time.now.utc) ⇒ Object
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# File 'lib/cdp/builders/entity.rb', line 88
def append_set_values(condition:, field_name:, values:, timestamp: Time.now.utc)
validate_condition(condition)
validate_set_field(field_name)
append_values = CDP::AppendValuesToEntitySet.new(
entity_type: @entity_schema[:name],
timestamp: timestamp,
field_condition: build_condition(condition),
field_name: field_name,
values: build(@entity_schema, field_name, values).array_value
)
build_execute_request({ append_values_to_entity_set: append_values })
end
|
#create(attributes) ⇒ Object
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/cdp/builders/entity.rb', line 19
def create(attributes)
validate_attributes_type(attributes)
validation_result = Validator.new(field_schema: @entity_schema).create(attributes: attributes)
raise ::CDP::InvalidEntityError, validation_result.errors if validation_result.failed?
entity_uuid = attributes.delete :entity_uuid
create_entity = CDP::CreateEntity.new(
entity_type: @entity_schema[:name],
entity_uuid: entity_uuid,
timestamp: Time.now.utc,
payload: build_payload_with_ref(@entity_schema, attributes)
)
build_execute_request({ create_entity: create_entity })
end
|
#create_if_not_exists(payload, unique_by:) ⇒ Object
67
68
69
70
71
72
73
74
75
|
# File 'lib/cdp/builders/entity.rb', line 67
def create_if_not_exists(payload, unique_by:)
create_if_not_exists = CDP::CreateIfNotExistsEntity.new(
entity_type: @entity_schema[:name],
timestamp: Time.now.utc,
unique_by: normalize_unique_by(payload, unique_by),
payload: build_payload_with_ref(@entity_schema, payload)
)
build_execute_request({ create_if_not_exists_entity: create_if_not_exists })
end
|
#delete(condition:) ⇒ Object
77
78
79
80
81
82
83
84
85
86
|
# File 'lib/cdp/builders/entity.rb', line 77
def delete(condition:)
validate_condition(condition)
delete_entity = CDP::DeleteEntity.new(
entity_type: @entity_schema[:name],
timestamp: Time.now.utc,
field_condition: build_condition(condition)
)
build_execute_request({ delete_entity: delete_entity })
end
|
#delete_set_values(condition:, field_name:, values:, timestamp: Time.now.utc) ⇒ Object
102
103
104
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/cdp/builders/entity.rb', line 102
def delete_set_values(condition:, field_name:, values:, timestamp: Time.now.utc)
validate_condition(condition)
validate_set_field(field_name)
delete_values = CDP::DeleteValuesFromEntitySet.new(
entity_type: @entity_schema[:name],
timestamp: timestamp,
field_condition: build_condition(condition),
field_name: field_name,
values: build(@entity_schema, field_name, values).array_value
)
build_execute_request({ delete_values_from_entity_set: delete_values })
end
|
#exists?(_condition) ⇒ Boolean
129
130
131
|
# File 'lib/cdp/builders/entity.rb', line 129
def exists?(_condition)
raise NoMethodError, "The 'exists?' for entities is not implemented"
end
|
#update(attributes, condition:) ⇒ Object
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/cdp/builders/entity.rb', line 36
def update(attributes, condition:)
validate_condition(condition)
validate_attributes_type(attributes)
validation_result = Validator.new(field_schema: @entity_schema).update(attributes: attributes)
raise ::CDP::InvalidEntityError, validation_result.errors if validation_result.failed?
update_entity = CDP::UpdateEntity.new(
entity_type: @entity_schema[:name],
timestamp: Time.now.utc,
field_condition: build_condition(condition),
payload: build_payload(attributes)
)
build_execute_request({ update_entity: update_entity })
end
|
#upsert(payload, unique_by:) ⇒ Object
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/cdp/builders/entity.rb', line 52
def upsert(payload, unique_by:)
validate_attributes_type(payload)
validation_result = Validator.new(field_schema: @entity_schema).upsert(attributes: payload)
raise ::CDP::InvalidEntityError, validation_result.errors if validation_result.failed?
upsert_entity = CDP::UpsertEntity.new(
entity_type: @entity_schema[:name],
timestamp: Time.now.utc,
unique_by: normalize_unique_by(payload, unique_by),
payload: build_payload_with_ref(@entity_schema, payload)
)
build_execute_request({ upsert_entity: upsert_entity })
end
|