Class: Aidp::Database::Repositories::DeprecatedModelsRepository
- Inherits:
-
Aidp::Database::Repository
- Object
- Aidp::Database::Repository
- Aidp::Database::Repositories::DeprecatedModelsRepository
- Defined in:
- lib/aidp/database/repositories/deprecated_models_repository.rb
Overview
Repository for deprecated models cache Replaces: .aidp/deprecated_models.json
Tracks models that have been deprecated by providers at runtime
Instance Attribute Summary
Attributes inherited from Aidp::Database::Repository
Instance Method Summary collapse
-
#add(provider_name:, model_name:, replacement: nil, reason: nil) ⇒ Boolean
Add a deprecated model to the cache.
-
#clear! ⇒ Object
Clear all deprecations for project.
-
#deprecated?(provider_name:, model_name:) ⇒ Boolean
Check if a model is deprecated.
-
#deprecated_models(provider_name:) ⇒ Array<String>
Get all deprecated models for a provider.
-
#info(provider_name:, model_name:) ⇒ Hash?
Get full deprecation info for a model.
-
#initialize(project_dir: Dir.pwd) ⇒ DeprecatedModelsRepository
constructor
A new instance of DeprecatedModelsRepository.
-
#list_all ⇒ Array<Hash>
List all deprecated models with full info.
-
#remove(provider_name:, model_name:) ⇒ Object
Remove a model from the deprecated cache.
-
#replacement_for(provider_name:, model_name:) ⇒ String?
Get replacement model for a deprecated model.
-
#stats ⇒ Hash
Get cache statistics.
-
#with_replacements ⇒ Array<Hash>
Find deprecated models with replacements.
Constructor Details
#initialize(project_dir: Dir.pwd) ⇒ DeprecatedModelsRepository
Returns a new instance of DeprecatedModelsRepository.
13 14 15 |
# File 'lib/aidp/database/repositories/deprecated_models_repository.rb', line 13 def initialize(project_dir: Dir.pwd) super(project_dir: project_dir, table_name: "deprecated_models") end |
Instance Method Details
#add(provider_name:, model_name:, replacement: nil, reason: nil) ⇒ Boolean
Add a deprecated model to the cache
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/aidp/database/repositories/deprecated_models_repository.rb', line 24 def add(provider_name:, model_name:, replacement: nil, reason: nil) Aidp.log_debug("deprecated_models_repo", "add", provider: provider_name, model: model_name, replacement: replacement) execute(<<~SQL, [project_dir, provider_name, model_name, replacement, reason, ]) INSERT INTO #{table_name} (project_dir, provider_name, model_name, replacement, reason, detected_at) VALUES (?, ?, ?, ?, ?, ?) ON CONFLICT(project_dir, provider_name, model_name) DO UPDATE SET replacement = excluded.replacement, reason = excluded.reason, detected_at = excluded.detected_at SQL Aidp.log_info("deprecated_models_repo", "added_deprecated_model", provider: provider_name, model: model_name, replacement: replacement) true rescue => e Aidp.log_error("deprecated_models_repo", "add_failed", provider: provider_name, model: model_name, error: e.) false end |
#clear! ⇒ Object
Clear all deprecations for project
126 127 128 129 130 |
# File 'lib/aidp/database/repositories/deprecated_models_repository.rb', line 126 def clear! Aidp.log_debug("deprecated_models_repo", "clear") delete_by_project Aidp.log_info("deprecated_models_repo", "cleared_all") end |
#deprecated?(provider_name:, model_name:) ⇒ Boolean
Check if a model is deprecated
52 53 54 55 56 57 58 59 |
# File 'lib/aidp/database/repositories/deprecated_models_repository.rb', line 52 def deprecated?(provider_name:, model_name:) result = query_value(<<~SQL, [project_dir, provider_name, model_name]) SELECT 1 FROM #{table_name} WHERE project_dir = ? AND provider_name = ? AND model_name = ? SQL !result.nil? end |
#deprecated_models(provider_name:) ⇒ Array<String>
Get all deprecated models for a provider
77 78 79 80 81 82 83 84 85 |
# File 'lib/aidp/database/repositories/deprecated_models_repository.rb', line 77 def deprecated_models(provider_name:) rows = query(<<~SQL, [project_dir, provider_name]) SELECT model_name FROM #{table_name} WHERE project_dir = ? AND provider_name = ? ORDER BY model_name SQL rows.map { |row| row["model_name"] } end |
#info(provider_name:, model_name:) ⇒ Hash?
Get full deprecation info for a model
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/aidp/database/repositories/deprecated_models_repository.rb', line 92 def info(provider_name:, model_name:) row = query_one(<<~SQL, [project_dir, provider_name, model_name]) SELECT replacement, reason, detected_at FROM #{table_name} WHERE project_dir = ? AND provider_name = ? AND model_name = ? SQL return nil unless row { replacement: row["replacement"], reason: row["reason"], detected_at: row["detected_at"] } end |
#list_all ⇒ Array<Hash>
List all deprecated models with full info
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 |
# File 'lib/aidp/database/repositories/deprecated_models_repository.rb', line 165 def list_all rows = query(<<~SQL, [project_dir]) SELECT provider_name, model_name, replacement, reason, detected_at FROM #{table_name} WHERE project_dir = ? ORDER BY provider_name, model_name SQL rows.map do |row| { provider: row["provider_name"], model: row["model_name"], replacement: row["replacement"], reason: row["reason"], detected_at: row["detected_at"] } end end |
#remove(provider_name:, model_name:) ⇒ Object
Remove a model from the deprecated cache
112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/aidp/database/repositories/deprecated_models_repository.rb', line 112 def remove(provider_name:, model_name:) Aidp.log_debug("deprecated_models_repo", "remove", provider: provider_name, model: model_name) execute(<<~SQL, [project_dir, provider_name, model_name]) DELETE FROM #{table_name} WHERE project_dir = ? AND provider_name = ? AND model_name = ? SQL Aidp.log_info("deprecated_models_repo", "removed_deprecated_model", provider: provider_name, model: model_name) end |
#replacement_for(provider_name:, model_name:) ⇒ String?
Get replacement model for a deprecated model
66 67 68 69 70 71 |
# File 'lib/aidp/database/repositories/deprecated_models_repository.rb', line 66 def replacement_for(provider_name:, model_name:) query_value(<<~SQL, [project_dir, provider_name, model_name]) SELECT replacement FROM #{table_name} WHERE project_dir = ? AND provider_name = ? AND model_name = ? SQL end |
#stats ⇒ Hash
Get cache statistics
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'lib/aidp/database/repositories/deprecated_models_repository.rb', line 135 def stats providers_rows = query(<<~SQL, [project_dir]) SELECT DISTINCT provider_name FROM #{table_name} WHERE project_dir = ? ORDER BY provider_name SQL providers = providers_rows.map { |row| row["provider_name"] } by_provider = {} providers.each do |provider| count = query_value(<<~SQL, [project_dir, provider]) SELECT COUNT(*) FROM #{table_name} WHERE project_dir = ? AND provider_name = ? SQL by_provider[provider] = count || 0 end total = by_provider.values.sum { providers: providers, total_deprecated: total, by_provider: by_provider } end |
#with_replacements ⇒ Array<Hash>
Find deprecated models with replacements
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
# File 'lib/aidp/database/repositories/deprecated_models_repository.rb', line 187 def with_replacements rows = query(<<~SQL, [project_dir]) SELECT provider_name, model_name, replacement FROM #{table_name} WHERE project_dir = ? AND replacement IS NOT NULL ORDER BY provider_name, model_name SQL rows.map do |row| { provider: row["provider_name"], model: row["model_name"], replacement: row["replacement"] } end end |