Class: Webhookdb::Replicator::EmailOctopusContactV1
- Inherits:
-
Base
- Object
- Base
- Webhookdb::Replicator::EmailOctopusContactV1
show all
- Includes:
- Appydays::Loggable
- Defined in:
- lib/webhookdb/replicator/email_octopus_contact_v1.rb
Defined Under Namespace
Classes: ContactBackfiller
Constant Summary
collapse
- CONV_REMOTE_KEY =
Webhookdb::Replicator::Column::IsomorphicProc.new(
ruby: ->(_, resource:, **_) { "#{resource.fetch('id')}-#{resource.fetch('list_id')}" },
sql: ->(_) { Sequel.lit("'do not use'") },
)
Constants inherited
from Base
Base::MAX_INDEX_NAME_LENGTH
DBAdapter::ColumnTypes::BIGINT, DBAdapter::ColumnTypes::BIGINT_ARRAY, DBAdapter::ColumnTypes::BOOLEAN, DBAdapter::ColumnTypes::COLUMN_TYPES, DBAdapter::ColumnTypes::DATE, DBAdapter::ColumnTypes::DECIMAL, DBAdapter::ColumnTypes::DOUBLE, DBAdapter::ColumnTypes::FLOAT, DBAdapter::ColumnTypes::INTEGER, DBAdapter::ColumnTypes::INTEGER_ARRAY, DBAdapter::ColumnTypes::OBJECT, DBAdapter::ColumnTypes::TEXT, DBAdapter::ColumnTypes::TEXT_ARRAY, DBAdapter::ColumnTypes::TIMESTAMP, DBAdapter::ColumnTypes::UUID
Instance Attribute Summary
Attributes inherited from Base
#service_integration
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Base
#_any_subscriptions_to_notify?, #_backfill_state_change_fields, #_clear_backfill_information, #_clear_webook_information, #_coalesce_excluded_on_update, #_enqueue_backfill_jobs, #_extra_index_specs, #_fetch_enrichment, #_find_dependency_candidate, #_notify_dependents, #_parallel_backfill, #_prepare_for_insert, #_publish_rowupsert, #_resource_to_data, #_store_enrichment_body?, #_to_json, #_upsert_update_expr, #_verify_backfill_err_msg, #_webhook_state_change_fields, #admin_dataset, #backfill, #backfill_not_supported_message, #calculate_and_backfill_state_machine, #calculate_dependency_state_machine_step, #calculate_preferred_create_state_machine, #calculate_webhook_state_machine, chunked_row_update_bounds, #clear_backfill_information, #clear_webhook_information, #create_table, #create_table_modification, #data_column, #dbadapter_table, #denormalized_columns, #descriptor, #dispatch_request_to, #documentation_url, #enqueue_sync_targets, #enrichment_column, #ensure_all_columns, #ensure_all_columns_modification, #find_dependent, #find_dependent!, #indices, #initialize, #on_backfill_error, #preferred_create_state_machine_method, #preprocess_headers_for_logging, #primary_key_column, #process_state_change, #process_webhooks_synchronously?, #qualified_table_sequel_identifier, #readonly_dataset, #remote_key_column, #requires_sequence?, #resource_name_plural, #resource_name_singular, #schema_and_table_symbols, #storable_columns, #synchronous_processing_response_body, #timestamp_column, #upsert_has_deps?, #upsert_webhook, #upsert_webhook_body, #verify_backfill_credentials, #webhook_endpoint, #webhook_response
Instance Method Details
#_backfillers ⇒ Object
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
# File 'lib/webhookdb/replicator/email_octopus_contact_v1.rb', line 113
def _backfillers
list_sint = self.service_integration.depends_on
api_key = list_sint.replicator.backfill_key!
backfillers = list_sint.replicator.admin_dataset(timeout: :fast) do |list_ds|
list_ds.select(:email_octopus_id).map do |list|
ContactBackfiller.new(
contact_svc: self,
list_id: list[:email_octopus_id],
api_key:,
)
end
end
return backfillers
end
|
#_denormalized_columns ⇒ Object
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/webhookdb/replicator/email_octopus_contact_v1.rb', line 38
def _denormalized_columns
return [
Webhookdb::Replicator::Column.new(:email_octopus_id, TEXT, data_key: "id"),
Webhookdb::Replicator::Column.new(:email_octopus_list_id, TEXT, data_key: "list_id"),
Webhookdb::Replicator::Column.new(:email_address, TEXT),
Webhookdb::Replicator::Column.new(:status, TEXT),
Webhookdb::Replicator::Column.new(:created_at, TIMESTAMP, index: true, converter: :time, skip_nil: true),
Webhookdb::Replicator::Column.new(:deleted_at, TIMESTAMP, converter: :time, optional: true),
Webhookdb::Replicator::Column.new(:row_updated_at, TIMESTAMP, defaulter: :now, optional: true),
]
end
|
#_remote_key_column ⇒ Object
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/webhookdb/replicator/email_octopus_contact_v1.rb', line 27
def _remote_key_column
return Webhookdb::Replicator::Column.new(
:compound_identity,
TEXT,
data_key: "<compound key, see converter>",
index: true,
optional: true,
converter: CONV_REMOTE_KEY,
)
end
|
#_resource_and_event(request) ⇒ Object
81
82
83
|
# File 'lib/webhookdb/replicator/email_octopus_contact_v1.rb', line 81
def _resource_and_event(request)
return request.body, nil
end
|
#_timestamp_column_name ⇒ Object
89
90
91
|
# File 'lib/webhookdb/replicator/email_octopus_contact_v1.rb', line 89
def _timestamp_column_name
return :row_updated_at
end
|
#_update_where_expr ⇒ Object
85
86
87
|
# File 'lib/webhookdb/replicator/email_octopus_contact_v1.rb', line 85
def _update_where_expr
return self.qualified_table_sequel_identifier[:data] !~ Sequel[:excluded][:data]
end
|
#_upsert_webhook(request, upsert: true) ⇒ Object
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/webhookdb/replicator/email_octopus_contact_v1.rb', line 50
def _upsert_webhook(request, upsert: true)
return super unless request.body.is_a?(Array)
new_bodies = request.body.
select { |wh| wh.key?("occurred_at") }.
map do |wh|
event_type = wh.fetch("type")
{
"id" => wh.fetch("contact_id"),
"list_id" => wh.fetch("list_id"),
"email_address" => wh.fetch("contact_email_address"),
"status" => wh.fetch("contact_status"),
"row_updated_at" => wh.fetch("occurred_at"),
"created_at" => event_type == "contact.created" ? wh.fetch("occurred_at") : nil,
"deleted_at" => event_type == "contact.deleted" ? wh.fetch("occurred_at") : nil,
"fields" => wh["contact_fields"],
"tags" => wh["contact_tags"],
}
end
new_bodies.each do |b|
new_request = request.dup
new_request.body = b
super(new_request, upsert:)
end
end
|
#_webhook_response(_request) ⇒ Object
93
94
95
|
# File 'lib/webhookdb/replicator/email_octopus_contact_v1.rb', line 93
def _webhook_response(_request)
return Webhookdb::WebhookResponse.ok
end
|
#calculate_backfill_state_machine ⇒ Object
97
98
99
100
101
102
103
104
105
106
107
|
# File 'lib/webhookdb/replicator/email_octopus_contact_v1.rb', line 97
def calculate_backfill_state_machine
if (step = self.calculate_dependency_state_machine_step(dependency_help: ""))
return step
end
step = Webhookdb::Replicator::StateMachineStep.new
step.output = %(Great! We are going to start replicating your #{self.resource_name_plural}.
#{self._query_help_output}
)
return step.completed
end
|
#on_dependency_webhook_upsert(_replicator, _payload) ⇒ Object
109
110
111
|
# File 'lib/webhookdb/replicator/email_octopus_contact_v1.rb', line 109
def on_dependency_webhook_upsert(_replicator, _payload, *)
return
end
|