Class: Igniter::Store::TBackendAdapterDescriptor
- Inherits:
-
Object
- Object
- Igniter::Store::TBackendAdapterDescriptor
- Defined in:
- lib/igniter/store/tbackend_adapter_descriptor.rb
Constant Summary collapse
- KIND =
"ledger_tbackend_adapter_descriptor"- DIAGNOSTICS_KIND =
"ledger_tbackend_adapter_descriptor_diagnostics"- ADAPTER_KIND =
"ledger_open_protocol"- ADAPTER_VERSION =
"0.1.0"- CONTRACT_VERSION =
"tbackend.v0"- PROTOCOL =
"igniter_store"- EVIDENCE_MODE =
"receipt_required"- DEFAULT_ADAPTER_REF =
"adapter:ledger-open-protocol/package-descriptor-v0"- READ_OPS =
%w[read query fact_ref].freeze
- APPEND_OPS =
%w[write write_fact append].freeze
- REPLAY_OPS =
%w[replay sync_hub_profile].freeze
- SNAPSHOT_OPS =
%w[metadata_snapshot descriptor_snapshot sync_hub_profile].freeze
- TBACKEND_OPS =
{ "read" => READ_OPS, "append" => APPEND_OPS, "replay" => REPLAY_OPS, "snapshot" => SNAPSHOT_OPS, "compact" => %w[compact], "subscribe" => %w[subscribe] }.freeze
- CURSOR_POLICY =
{ ordered: "forward", cursor_kinds: ["timestamp"], truncation_reported: true, tie_breaker: "timestamp_then_fact_id_required" }.freeze
- NON_AUTHORIZATION =
{ runtime_binding: false, ledger_reads: false, ledger_writes: false, ledger_append: false, ledger_replay: false, ledger_compact: false, ledger_subscribe: false, migration_execution: false }.freeze
Instance Attribute Summary collapse
-
#descriptor_snapshot ⇒ Object
readonly
Returns the value of attribute descriptor_snapshot.
-
#metadata_snapshot ⇒ Object
readonly
Returns the value of attribute metadata_snapshot.
-
#payload ⇒ Object
readonly
Returns the value of attribute payload.
Class Method Summary collapse
- .build(metadata_snapshot:, descriptor_snapshot:, schema_fingerprint:, adapter_ref: nil, ledger_protocol_ops: nil) ⇒ Object
- .canonical_hash(value) ⇒ Object
Instance Method Summary collapse
- #capabilities ⇒ Object
- #cursor_policy ⇒ Object
- #descriptor_hash ⇒ Object
- #descriptor_registry_hash ⇒ Object
- #diagnostics(requirement = {}) ⇒ Object
- #history_axes ⇒ Object
- #hook_methods ⇒ Object
-
#initialize(metadata_snapshot:, descriptor_snapshot:, schema_fingerprint:, adapter_ref: nil, ledger_protocol_ops: nil) ⇒ TBackendAdapterDescriptor
constructor
A new instance of TBackendAdapterDescriptor.
- #ledger_protocol_ops ⇒ Object
- #supported_tbackend_ops ⇒ Object
- #to_h ⇒ Object
Constructor Details
#initialize(metadata_snapshot:, descriptor_snapshot:, schema_fingerprint:, adapter_ref: nil, ledger_protocol_ops: nil) ⇒ TBackendAdapterDescriptor
Returns a new instance of TBackendAdapterDescriptor.
64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/igniter/store/tbackend_adapter_descriptor.rb', line 64 def initialize(metadata_snapshot:, descriptor_snapshot:, schema_fingerprint:, adapter_ref: nil, ledger_protocol_ops: nil) @metadata_snapshot = normalize_hash(, :metadata_snapshot) @descriptor_snapshot = normalize_hash(descriptor_snapshot, :descriptor_snapshot) @payload = build_payload( schema_fingerprint: require_value(:schema_fingerprint, schema_fingerprint), adapter_ref: adapter_ref || DEFAULT_ADAPTER_REF, ledger_protocol_ops: normalize_ops( ledger_protocol_ops || (:ledger_protocol_ops) || (:protocol_ops) ) ) freeze end |
Instance Attribute Details
#descriptor_snapshot ⇒ Object (readonly)
Returns the value of attribute descriptor_snapshot.
49 50 51 |
# File 'lib/igniter/store/tbackend_adapter_descriptor.rb', line 49 def descriptor_snapshot @descriptor_snapshot end |
#metadata_snapshot ⇒ Object (readonly)
Returns the value of attribute metadata_snapshot.
49 50 51 |
# File 'lib/igniter/store/tbackend_adapter_descriptor.rb', line 49 def @metadata_snapshot end |
#payload ⇒ Object (readonly)
Returns the value of attribute payload.
49 50 51 |
# File 'lib/igniter/store/tbackend_adapter_descriptor.rb', line 49 def payload @payload end |
Class Method Details
.build(metadata_snapshot:, descriptor_snapshot:, schema_fingerprint:, adapter_ref: nil, ledger_protocol_ops: nil) ⇒ Object
53 54 55 56 57 58 59 60 61 62 |
# File 'lib/igniter/store/tbackend_adapter_descriptor.rb', line 53 def self.build(metadata_snapshot:, descriptor_snapshot:, schema_fingerprint:, adapter_ref: nil, ledger_protocol_ops: nil) new( metadata_snapshot: , descriptor_snapshot: descriptor_snapshot, schema_fingerprint: schema_fingerprint, adapter_ref: adapter_ref, ledger_protocol_ops: ledger_protocol_ops ) end |
.canonical_hash(value) ⇒ Object
283 284 285 |
# File 'lib/igniter/store/tbackend_adapter_descriptor.rb', line 283 def canonical_hash(value) "sha256:#{Digest::SHA256.hexdigest(JSON.generate(canonical_value(value)))}" end |
Instance Method Details
#capabilities ⇒ Object
98 99 100 |
# File 'lib/igniter/store/tbackend_adapter_descriptor.rb', line 98 def capabilities payload.fetch(:capabilities) end |
#cursor_policy ⇒ Object
106 107 108 |
# File 'lib/igniter/store/tbackend_adapter_descriptor.rb', line 106 def cursor_policy payload.fetch(:cursor_policy) end |
#descriptor_hash ⇒ Object
78 79 80 |
# File 'lib/igniter/store/tbackend_adapter_descriptor.rb', line 78 def descriptor_hash payload.fetch(:descriptor_hash) end |
#descriptor_registry_hash ⇒ Object
82 83 84 |
# File 'lib/igniter/store/tbackend_adapter_descriptor.rb', line 82 def descriptor_registry_hash payload.fetch(:descriptor_registry_hash) end |
#diagnostics(requirement = {}) ⇒ Object
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/igniter/store/tbackend_adapter_descriptor.rb', line 110 def diagnostics(requirement = {}) requirement = normalize_hash(requirement, :requirement) missing_ops = missing(:required_ops, :supported_tbackend_ops, requirement) missing_hook_methods = missing(:required_hook_methods, :hook_methods, requirement) missing_capabilities = missing(:required_capabilities, :capabilities, requirement) missing_axes = missing(:history_axes, :history_axes, requirement) schema_fingerprint_match = schema_fingerprint_match?(requirement) blocked = missing_ops.any? || missing_hook_methods.any? || missing_capabilities.any? || missing_axes.any? || !schema_fingerprint_match deep_freeze( kind: DIAGNOSTICS_KIND, status: blocked ? "blocked" : "ok", missing_ops: missing_ops, missing_hook_methods: missing_hook_methods, missing_capabilities: missing_capabilities, missing_axes: missing_axes, schema_fingerprint_match: schema_fingerprint_match, descriptor_hash: descriptor_hash, descriptor_registry_hash: descriptor_registry_hash ) end |
#history_axes ⇒ Object
102 103 104 |
# File 'lib/igniter/store/tbackend_adapter_descriptor.rb', line 102 def history_axes payload.fetch(:history_axes) end |
#hook_methods ⇒ Object
94 95 96 |
# File 'lib/igniter/store/tbackend_adapter_descriptor.rb', line 94 def hook_methods payload.fetch(:hook_methods) end |
#ledger_protocol_ops ⇒ Object
86 87 88 |
# File 'lib/igniter/store/tbackend_adapter_descriptor.rb', line 86 def ledger_protocol_ops payload.fetch(:ledger_protocol_ops) end |
#supported_tbackend_ops ⇒ Object
90 91 92 |
# File 'lib/igniter/store/tbackend_adapter_descriptor.rb', line 90 def supported_tbackend_ops payload.fetch(:supported_tbackend_ops) end |
#to_h ⇒ Object
136 137 138 |
# File 'lib/igniter/store/tbackend_adapter_descriptor.rb', line 136 def to_h payload end |