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(" INSERT INTO \#{table_name}\n (project_dir, provider_name, model_name, replacement, reason, detected_at)\n VALUES (?, ?, ?, ?, ?, ?)\n ON CONFLICT(project_dir, provider_name, model_name) DO UPDATE SET\n replacement = excluded.replacement,\n reason = excluded.reason,\n detected_at = excluded.detected_at\n SQL\n\n Aidp.log_info(\"deprecated_models_repo\", \"added_deprecated_model\",\n provider: provider_name, model: model_name, replacement: replacement)\n true\nrescue => e\n Aidp.log_error(\"deprecated_models_repo\", \"add_failed\",\n provider: provider_name, model: model_name, error: e.message)\n false\nend\n", [project_dir, provider_name, model_name, replacement, reason, ]) |
#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(" SELECT 1 FROM \#{table_name}\n WHERE project_dir = ? AND provider_name = ? AND model_name = ?\n SQL\n\n !result.nil?\nend\n", [project_dir, provider_name, model_name]) |
#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(" SELECT model_name FROM \#{table_name}\n WHERE project_dir = ? AND provider_name = ?\n ORDER BY model_name\n SQL\n\n rows.map { |row| row[\"model_name\"] }\nend\n", [project_dir, provider_name]) |
#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(" SELECT replacement, reason, detected_at\n FROM \#{table_name}\n WHERE project_dir = ? AND provider_name = ? AND model_name = ?\n SQL\n\n return nil unless row\n\n {\n replacement: row[\"replacement\"],\n reason: row[\"reason\"],\n detected_at: row[\"detected_at\"]\n }\nend\n", [project_dir, provider_name, model_name]) |
#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(" SELECT provider_name, model_name, replacement, reason, detected_at\n FROM \#{table_name}\n WHERE project_dir = ?\n ORDER BY provider_name, model_name\n SQL\n\n rows.map do |row|\n {\n provider: row[\"provider_name\"],\n model: row[\"model_name\"],\n replacement: row[\"replacement\"],\n reason: row[\"reason\"],\n detected_at: row[\"detected_at\"]\n }\n end\nend\n", [project_dir]) |
#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(" DELETE FROM \#{table_name}\n WHERE project_dir = ? AND provider_name = ? AND model_name = ?\n SQL\n\n Aidp.log_info(\"deprecated_models_repo\", \"removed_deprecated_model\",\n provider: provider_name, model: model_name)\nend\n", [project_dir, provider_name, model_name]) |
#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(" SELECT replacement FROM \#{table_name}\n WHERE project_dir = ? AND provider_name = ? AND model_name = ?\n SQL\nend\n", [project_dir, provider_name, model_name]) |
#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(" SELECT DISTINCT provider_name FROM \#{table_name}\n WHERE project_dir = ?\n ORDER BY provider_name\n SQL\n\n providers = providers_rows.map { |row| row[\"provider_name\"] }\n\n by_provider = {}\n providers.each do |provider|\n count = query_value(<<~SQL, [project_dir, provider])\n SELECT COUNT(*) FROM \#{table_name}\n WHERE project_dir = ? AND provider_name = ?\n SQL\n by_provider[provider] = count || 0\n end\n\n total = by_provider.values.sum\n\n {\n providers: providers,\n total_deprecated: total,\n by_provider: by_provider\n }\nend\n", [project_dir]) |
#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(" SELECT provider_name, model_name, replacement\n FROM \#{table_name}\n WHERE project_dir = ? AND replacement IS NOT NULL\n ORDER BY provider_name, model_name\n SQL\n\n rows.map do |row|\n {\n provider: row[\"provider_name\"],\n model: row[\"model_name\"],\n replacement: row[\"replacement\"]\n }\n end\nend\n", [project_dir]) |