Module: Legion::Data
- Extended by:
- Logging::Helper
- Defined in:
- lib/legion/data.rb,
lib/legion/data/rls.rb,
lib/legion/data/local.rb,
lib/legion/data/model.rb,
lib/legion/data/spool.rb,
lib/legion/data/helper.rb,
lib/legion/data/vector.rb,
lib/legion/data/extract.rb,
lib/legion/data/version.rb,
lib/legion/data/archival.rb,
lib/legion/data/archiver.rb,
lib/legion/data/settings.rb,
lib/legion/data/migration.rb,
lib/legion/data/retention.rb,
lib/legion/data/connection.rb,
lib/legion/data/event_store.rb,
lib/legion/data/models/node.rb,
lib/legion/data/models/task.rb,
lib/legion/data/audit_record.rb,
lib/legion/data/models/chain.rb,
lib/legion/data/models/runner.rb,
lib/legion/data/storage_tiers.rb,
lib/legion/data/models/setting.rb,
lib/legion/data/archival/policy.rb,
lib/legion/data/models/function.rb,
lib/legion/data/models/identity.rb,
lib/legion/data/models/task_log.rb,
lib/legion/data/models/audit_log.rb,
lib/legion/data/models/extension.rb,
lib/legion/data/models/principal.rb,
lib/legion/data/encryption/cipher.rb,
lib/legion/data/partition_manager.rb,
lib/legion/data/models/llm/message.rb,
lib/legion/data/models/apollo_entry.rb,
lib/legion/data/models/audit_record.rb,
lib/legion/data/models/relationship.rb,
lib/legion/data/audit_log_hash_chain.rb,
lib/legion/data/extract/handlers/csv.rb,
lib/legion/data/extract/handlers/pdf.rb,
lib/legion/data/extract/handlers/vtt.rb,
lib/legion/data/models/llm/tool_call.rb,
lib/legion/data/extract/handlers/base.rb,
lib/legion/data/extract/handlers/docx.rb,
lib/legion/data/extract/handlers/html.rb,
lib/legion/data/extract/handlers/json.rb,
lib/legion/data/extract/handlers/pptx.rb,
lib/legion/data/extract/handlers/text.rb,
lib/legion/data/extract/handlers/xlsx.rb,
lib/legion/data/extract/type_detector.rb,
lib/legion/data/models/apollo/entries.rb,
lib/legion/data/models/digital_worker.rb,
lib/legion/data/models/identity/group.rb,
lib/legion/data/models/identity_group.rb,
lib/legion/data/event_store/projection.rb,
lib/legion/data/extract/handlers/jsonl.rb,
lib/legion/data/models/apollo/relation.rb,
lib/legion/data/models/apollo_relation.rb,
lib/legion/data/encryption/key_provider.rb,
lib/legion/data/models/apollo/expertise.rb,
lib/legion/data/models/apollo/operation.rb,
lib/legion/data/models/apollo_expertise.rb,
lib/legion/data/models/llm/conversation.rb,
lib/legion/data/encryption/sequel_plugin.rb,
lib/legion/data/models/apollo/access_log.rb,
lib/legion/data/models/apollo_access_log.rb,
lib/legion/data/models/identity/identity.rb,
lib/legion/data/models/identity_provider.rb,
lib/legion/data/models/llm/model_helpers.rb,
lib/legion/data/models/llm/route_attempt.rb,
lib/legion/data/models/rbac_runner_grant.rb,
lib/legion/data/extract/handlers/markdown.rb,
lib/legion/data/models/identity/audit_log.rb,
lib/legion/data/models/identity/principal.rb,
lib/legion/data/models/identity/providers.rb,
lib/legion/data/models/identity_audit_log.rb,
lib/legion/data/models/llm/registry_event.rb,
lib/legion/data/models/llm/security_event.rb,
lib/legion/data/models/rbac/model_helpers.rb,
lib/legion/data/models/rbac/runner_grants.rb,
lib/legion/data/models/extract_step_timing.rb,
lib/legion/data/models/apollo/model_helpers.rb,
lib/legion/data/models/rbac_role_assignment.rb,
lib/legion/data/models/llm/policy_evaluation.rb,
lib/legion/data/models/llm/tool_call_attempt.rb,
lib/legion/data/models/rbac/role_assignments.rb,
lib/legion/data/models/rbac_cross_team_grant.rb,
lib/legion/data/models/identity/model_helpers.rb,
lib/legion/data/models/rbac/cross_team_grants.rb,
lib/legion/data/models/identity_group_membership.rb,
lib/legion/data/models/identity/group_memberships.rb,
lib/legion/data/models/llm/conversation_compaction.rb,
lib/legion/data/models/llm/message_inference_metric.rb,
lib/legion/data/models/llm/message_inference_request.rb,
lib/legion/data/models/llm/message_inference_response.rb
Defined Under Namespace
Modules: Archival, Archiver, AuditLogHashChain, AuditRecord, Connection, Encryption, EventStore, Extract, Helper, Local, Migration, Model, Models, PartitionManager, Retention, Rls, Settings, Spool, StorageTiers, Vector
Constant Summary
collapse
- VERSION =
'1.8.2'
Class Method Summary
collapse
handle_exception
Class Method Details
.can_read?(table_name) ⇒ Boolean
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
# File 'lib/legion/data.rb', line 137
def can_read?(table_name)
return false unless connected?
adapter = Legion::Settings[:data][:adapter]&.to_s
return true if adapter == 'sqlite'
@read_privileges ||= {}
return @read_privileges[table_name] unless @read_privileges[table_name].nil?
@read_privileges[table_name] = connection
.fetch("SELECT has_table_privilege(current_user, ?, 'SELECT') AS can", table_name.to_s)
.first[:can] == true
rescue StandardError => e
handle_exception(e, level: :warn, handled: true, operation: :can_read?, table: table_name)
@read_privileges[table_name] = false if @read_privileges
false
end
|
.can_write?(table_name) ⇒ Boolean
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
# File 'lib/legion/data.rb', line 119
def can_write?(table_name)
return false unless connected?
adapter = Legion::Settings[:data][:adapter]&.to_s
return true if adapter == 'sqlite'
@write_privileges ||= {}
return @write_privileges[table_name] unless @write_privileges[table_name].nil?
@write_privileges[table_name] = connection
.fetch("SELECT has_table_privilege(current_user, ?, 'INSERT') AS can", table_name.to_s)
.first[:can] == true
rescue StandardError => e
handle_exception(e, level: :warn, handled: true, operation: :can_write?, table: table_name)
@write_privileges[table_name] = false if @write_privileges
false
end
|
.connected? ⇒ Boolean
112
113
114
115
116
117
|
# File 'lib/legion/data.rb', line 112
def connected?
Legion::Settings[:data][:connected] == true
rescue StandardError => e
handle_exception(e, level: :debug, handled: true, operation: :connected?)
false
end
|
.connection_setup ⇒ Object
.load_models ⇒ Object
91
92
93
94
95
|
# File 'lib/legion/data.rb', line 91
def load_models
return unless Legion::Settings[:data][:models][:autoload] != false
Legion::Data::Models.load
end
|
.local ⇒ Object
101
102
103
|
# File 'lib/legion/data.rb', line 101
def local
Legion::Data::Local
end
|
.reload_static_cache ⇒ Object
170
171
172
173
174
175
|
# File 'lib/legion/data.rb', line 170
def reload_static_cache
[Model::Extension, Model::Runner, Model::Function].each do |model|
model.load_cache if model.respond_to?(:load_cache)
end
log.info 'Legion::Data static cache reloaded'
end
|
.reset_privileges! ⇒ Object
155
156
157
158
|
# File 'lib/legion/data.rb', line 155
def reset_privileges!
@write_privileges = nil
@read_privileges = nil
end
|
.setup ⇒ Object
45
46
47
48
49
50
51
|
# File 'lib/legion/data.rb', line 45
def setup
log.info 'Legion::Data setup starting'
setup_global
setup_cache
setup_local
log.info 'Legion::Data setup complete'
end
|
.setup_cache ⇒ Object
71
72
73
74
75
76
77
|
# File 'lib/legion/data.rb', line 71
def setup_cache
cache_settings = Legion::Settings[:data][:cache]
setup_static_cache if cache_settings[:static_cache]
setup_external_cache if cache_settings[:auto_enable] && defined?(::Legion::Cache)
rescue StandardError => e
handle_exception(e, level: :error, operation: :setup_cache)
end
|
.setup_external_cache ⇒ Object
177
178
179
180
181
182
183
184
185
186
187
188
189
190
|
# File 'lib/legion/data.rb', line 177
def setup_external_cache
ttl = Legion::Settings[:data][:cache][:ttl] || 60
{
Model::Relationship => 10,
Model::Node => 10,
Model::Setting => ttl
}.each do |model, model_ttl|
model.plugin :caching, ::Legion::Cache, ttl: model_ttl
log.debug("Caching enabled for #{model} (ttl: #{model_ttl})")
rescue StandardError => e
handle_exception(e, level: :warn, operation: :setup_external_cache, model: model.to_s, ttl: model_ttl)
end
log.info 'Legion::Data external cache connected'
end
|
.setup_global ⇒ Object
63
64
65
66
67
68
69
|
# File 'lib/legion/data.rb', line 63
def setup_global
connection_setup
migrate
load_models
rescue StandardError => e
handle_exception(e, level: :fatal, operation: :setup_global)
end
|
.setup_local ⇒ Object
53
54
55
56
57
58
59
60
61
|
# File 'lib/legion/data.rb', line 53
def setup_local
return if Legion::Settings[:data].dig(:local, :enabled) == false
Legion::Data::Local.setup
log.info "Legion::Data::Local connected to #{Legion::Data::Local.db_path}"
rescue StandardError => e
handle_exception(e, level: :fatal, operation: :setup_local)
raise
end
|
.setup_static_cache ⇒ Object
160
161
162
163
164
165
166
167
168
|
# File 'lib/legion/data.rb', line 160
def setup_static_cache
[Model::Extension, Model::Runner, Model::Function].each do |model|
model.plugin :static_cache
log.debug("StaticCache enabled for #{model}")
rescue StandardError => e
handle_exception(e, level: :warn, operation: :setup_static_cache, model: model.to_s)
end
log.info 'Legion::Data static cache loaded'
end
|