legion-data 1.4.19 → 1.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2499b458fda547ac0989640906effc26f4c33356a93a26d6aeec200df1b68be0
4
- data.tar.gz: e20518509eed42492608af61577e4dcc7810bb8a8a7b8e68451cd6081672d0a1
3
+ metadata.gz: f2a768704483d4ece2b9b627f9fda041f3e6370ca1da5dccfce4fd8826ff77f4
4
+ data.tar.gz: f5dc70154a82e28c2776b89e1a5a57a32ba62867f0306c19dcdec108748b4787
5
5
  SHA512:
6
- metadata.gz: ca9b03c95aae78c9811d00ba6be7b523138c945224f2ab3b5908cb0b0693868c44cb9c97ea8b53cc37e443ce10d6b9861e495fe64caca112118360c94eaced70
7
- data.tar.gz: 2f57f054e1fe89c1c31bb4ad37446c2220ce2a6038e3338ab1c80faeea549a248866ae95eb9d8a2f0d13d1587cb7e8b4c20b06e09c0f55c8193c88f801e07425
6
+ metadata.gz: 2bfb162a4dc33c7709b8e266d9d58e649ef854b032a6879aedc7a72218c72b89c52f0652cd223d48076e4838b896aebff39c7e04d8c3db062780b0a251e26f8d
7
+ data.tar.gz: 047ad93f9a9f7e090687cce66860b5bb3cc8e1d6f6be73adf3bb3366913113260b86f2c49b16ed5fb6f31777835495cb7392d39df672dc247fb5761fd0541a70
data/CHANGELOG.md CHANGED
@@ -1,8 +1,24 @@
1
1
  # Legion::Data Changelog
2
2
 
3
- ## [1.4.19] - 2026-03-23
3
+ ## [1.5.2] - 2026-03-24
4
4
 
5
5
  ### Fixed
6
+ - TLS spec mock `resolve` methods used `_port:` keyword which mismatched production `port:` call, causing `ArgumentError: unknown keyword: :port` on CI
7
+
8
+ ## [1.5.1] - 2026-03-24
9
+
10
+ ### Changed
11
+ - `Legion::Data::Connection#merge_tls_creds` — now respects explicit `data.tls.enabled` flag; TLS opt-in only (no behavior change when flag is absent or false)
12
+
13
+ ### Added
14
+ - Migration 039: `audit_archive_manifests` table for tracking cold storage uploads (tier, storage_url, date range, entry count, SHA-256 checksum, hash chain anchors)
15
+ - `spec/legion/data/tls_spec.rb` — full coverage for merge_tls_creds feature flag behavior
16
+
17
+ ## [1.5.0] - 2026-03-24
18
+
19
+ ### Fixed
20
+ - Slow query warnings now tagged with `[data][slow-query]` instead of bare timestamps
21
+ - SQL log output uses tagged Legion::Logging::Logger for consistent `[data]` prefix
6
22
  - Fix Style/SymbolArray in conversations migration
7
23
 
8
24
  ## [1.4.18] - 2026-03-23
@@ -7,6 +7,31 @@ module Legion
7
7
  module Connection
8
8
  ADAPTERS = %i[sqlite mysql2 postgres].freeze
9
9
 
10
+ # Wraps a tagged Legion::Logging::Logger for Sequel's logger interface.
11
+ # Prefixes warn-level messages with [slow-query] since Sequel uses warn
12
+ # for queries exceeding log_warn_duration.
13
+ class SlowQueryLogger
14
+ def initialize(tagged_logger)
15
+ @tagged = tagged_logger
16
+ end
17
+
18
+ def warn(message)
19
+ @tagged.warn("[slow-query] #{message}")
20
+ end
21
+
22
+ def info(message)
23
+ @tagged.info(message)
24
+ end
25
+
26
+ def debug(message)
27
+ @tagged.debug(message)
28
+ end
29
+
30
+ def error(message)
31
+ @tagged.error(message)
32
+ end
33
+ end
34
+
10
35
  class << self
11
36
  attr_accessor :sequel
12
37
 
@@ -91,7 +116,10 @@ module Legion
91
116
  return creds if adapter == :sqlite
92
117
  return creds unless defined?(Legion::Crypt::TLS)
93
118
 
94
- tls = Legion::Crypt::TLS.resolve(data_tls_settings, port: port)
119
+ tls_settings = data_tls_settings
120
+ return creds unless tls_settings[:enabled] == true
121
+
122
+ tls = Legion::Crypt::TLS.resolve(tls_settings, port: port)
95
123
  return creds unless tls[:enabled]
96
124
 
97
125
  case adapter
@@ -151,10 +179,15 @@ module Legion
151
179
  def configure_logging
152
180
  return if Legion::Settings[:data][:connection].nil? || Legion::Settings[:data][:connection][:log].nil?
153
181
 
154
- @sequel.logger = Legion::Logging
182
+ @sequel.logger = build_data_logger
155
183
  @sequel.sql_log_level = Legion::Settings[:data][:connection][:sql_log_level]
156
184
  @sequel.log_warn_duration = Legion::Settings[:data][:connection][:log_warn_duration]
157
185
  end
186
+
187
+ def build_data_logger
188
+ tagged = Legion::Logging::Logger.new(lex: 'data')
189
+ SlowQueryLogger.new(tagged)
190
+ end
158
191
  end
159
192
  end
160
193
  end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ Sequel.migration do
4
+ up do
5
+ unless table_exists?(:audit_archive_manifests)
6
+ create_table(:audit_archive_manifests) do
7
+ primary_key :id
8
+ String :tier, null: false, size: 10 # hot, warm, cold
9
+ String :storage_url, null: false, size: 2000
10
+ DateTime :start_date, null: false
11
+ DateTime :end_date, null: false
12
+ Integer :entry_count, null: false
13
+ String :checksum, null: false, size: 64 # SHA-256 hex
14
+ String :first_hash, null: false, size: 64 # record_hash of first entry
15
+ String :last_hash, null: false, size: 64 # record_hash of last entry
16
+ DateTime :archived_at, null: false, default: Sequel::CURRENT_TIMESTAMP
17
+
18
+ index :tier
19
+ index :archived_at
20
+ index %i[start_date end_date]
21
+ end
22
+ end
23
+ end
24
+
25
+ down do
26
+ drop_table(:audit_archive_manifests) if table_exists?(:audit_archive_manifests)
27
+ end
28
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Legion
4
4
  module Data
5
- VERSION = '1.4.19'
5
+ VERSION = '1.5.2'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legion-data
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.19
4
+ version: 1.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity
@@ -137,6 +137,7 @@ files:
137
137
  - lib/legion/data/migrations/036_add_audit_context_snapshot.rb
138
138
  - lib/legion/data/migrations/037_add_apollo_knowledge_domain.rb
139
139
  - lib/legion/data/migrations/038_add_conversations.rb
140
+ - lib/legion/data/migrations/039_add_audit_archive_manifest.rb
140
141
  - lib/legion/data/model.rb
141
142
  - lib/legion/data/models/apollo_access_log.rb
142
143
  - lib/legion/data/models/apollo_entry.rb