Class: DecisionAgent::Versioning::Adapter
- Inherits:
-
Object
- Object
- DecisionAgent::Versioning::Adapter
- Defined in:
- lib/decision_agent/versioning/adapter.rb
Overview
Abstract base class for version storage adapters Allows framework-agnostic versioning with pluggable storage backends
Direct Known Subclasses
Instance Method Summary collapse
-
#activate_version(version_id:) ⇒ Hash
Activate a specific version.
-
#compare_versions(version_id_1:, version_id_2:) ⇒ Hash
Compare two versions.
-
#create_tag(model_id:, version_id:, name:) ⇒ Hash
Create (or update) a named tag pointing to a specific version.
-
#create_version(rule_id:, content:, metadata: {}) ⇒ Hash
Create a new version for a rule.
-
#delete_tag(model_id:, name:) ⇒ Boolean
Delete a tag by name.
-
#delete_version(version_id:) ⇒ Boolean
Delete a specific version.
-
#get_active_version(rule_id:) ⇒ Hash?
Get the active version for a rule.
-
#get_tag(model_id:, name:) ⇒ Hash?
Retrieve a tag by name for a given model.
-
#get_version(version_id:) ⇒ Hash?
Get a specific version by ID.
-
#get_version_by_number(rule_id:, version_number:) ⇒ Hash?
Get a specific version by rule_id and version_number.
-
#list_all_versions(limit: nil) ⇒ Array<Hash>
List all versions across all rules.
-
#list_tags(model_id:) ⇒ Array<Hash>
List all tags for a given model.
-
#list_versions(rule_id:, limit: nil) ⇒ Array<Hash>
List all versions for a specific rule.
Instance Method Details
#activate_version(version_id:) ⇒ Hash
Activate a specific version
57 58 59 |
# File 'lib/decision_agent/versioning/adapter.rb', line 57 def activate_version(version_id:) raise NotImplementedError, "#{self.class} must implement #activate_version" end |
#compare_versions(version_id_1:, version_id_2:) ⇒ Hash
Compare two versions
65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/decision_agent/versioning/adapter.rb', line 65 def compare_versions(version_id_1:, version_id_2:) v1 = get_version(version_id: version_id_1) v2 = get_version(version_id: version_id_2) return nil if v1.nil? || v2.nil? { version_1: v1, version_2: v2, differences: calculate_diff(v1[:content], v2[:content]) } end |
#create_tag(model_id:, version_id:, name:) ⇒ Hash
Create (or update) a named tag pointing to a specific version. Tags are unique per model; calling this with an existing name re-points the tag.
91 92 93 |
# File 'lib/decision_agent/versioning/adapter.rb', line 91 def create_tag(model_id:, version_id:, name:) raise NotImplementedError, "#{self.class} must implement #create_tag" end |
#create_version(rule_id:, content:, metadata: {}) ⇒ Hash
Create a new version for a rule
13 14 15 |
# File 'lib/decision_agent/versioning/adapter.rb', line 13 def create_version(rule_id:, content:, metadata: {}) raise NotImplementedError, "#{self.class} must implement #create_version" end |
#delete_tag(model_id:, name:) ⇒ Boolean
Delete a tag by name.
114 115 116 |
# File 'lib/decision_agent/versioning/adapter.rb', line 114 def delete_tag(model_id:, name:) raise NotImplementedError, "#{self.class} must implement #delete_tag" end |
#delete_version(version_id:) ⇒ Boolean
Delete a specific version
81 82 83 |
# File 'lib/decision_agent/versioning/adapter.rb', line 81 def delete_version(version_id:) raise NotImplementedError, "#{self.class} must implement #delete_version" end |
#get_active_version(rule_id:) ⇒ Hash?
Get the active version for a rule
50 51 52 |
# File 'lib/decision_agent/versioning/adapter.rb', line 50 def get_active_version(rule_id:) raise NotImplementedError, "#{self.class} must implement #get_active_version" end |
#get_tag(model_id:, name:) ⇒ Hash?
Retrieve a tag by name for a given model.
99 100 101 |
# File 'lib/decision_agent/versioning/adapter.rb', line 99 def get_tag(model_id:, name:) raise NotImplementedError, "#{self.class} must implement #get_tag" end |
#get_version(version_id:) ⇒ Hash?
Get a specific version by ID
35 36 37 |
# File 'lib/decision_agent/versioning/adapter.rb', line 35 def get_version(version_id:) raise NotImplementedError, "#{self.class} must implement #get_version" end |
#get_version_by_number(rule_id:, version_number:) ⇒ Hash?
Get a specific version by rule_id and version_number
43 44 45 |
# File 'lib/decision_agent/versioning/adapter.rb', line 43 def get_version_by_number(rule_id:, version_number:) raise NotImplementedError, "#{self.class} must implement #get_version_by_number" end |
#list_all_versions(limit: nil) ⇒ Array<Hash>
List all versions across all rules
28 29 30 |
# File 'lib/decision_agent/versioning/adapter.rb', line 28 def list_all_versions(limit: nil) raise NotImplementedError, "#{self.class} must implement #list_all_versions" end |
#list_tags(model_id:) ⇒ Array<Hash>
List all tags for a given model.
106 107 108 |
# File 'lib/decision_agent/versioning/adapter.rb', line 106 def (model_id:) raise NotImplementedError, "#{self.class} must implement #list_tags" end |
#list_versions(rule_id:, limit: nil) ⇒ Array<Hash>
List all versions for a specific rule
21 22 23 |
# File 'lib/decision_agent/versioning/adapter.rb', line 21 def list_versions(rule_id:, limit: nil) raise NotImplementedError, "#{self.class} must implement #list_versions" end |