brokkr-models::models::agent_annotations
Rust
Agent Annotation Module
This module defines structures and methods for managing agent annotations in the system.
Data Model
Agent annotations are key-value pairs associated with agents. They are stored in the agent_annotations table
with the following structure:
id: UUID, primary keyagent_id: UUID, foreign key referencing theagentstablekey: VARCHAR(255), the annotation keyvalue: TEXT, the annotation value
Usage
Agent annotations can be used to add metadata to agents. This metadata can be used for filtering, grouping, or providing additional information about the agent that doesn’t fit into the main agent structure.
Constraints
- The
agent_idmust be a valid, non-nil UUID. - Both
keyandvaluemust be non-empty strings. keyandvaluemust not exceed 64 characters.- Neither
keynorvaluecan contain whitespace.
Structs
Section titled “Structs”struct AgentAnnotation
Section titled “struct AgentAnnotation”pub
Derives: Queryable, Selectable, Identifiable, AsChangeset, Debug, Clone, Serialize, Deserialize, Eq, PartialEq, Hash, ToSchema
Represents an agent annotation in the database.
Fields
Section titled “Fields”| Name | Type | Description |
|---|---|---|
id |
Uuid |
Unique identifier for the annotation. |
agent_id |
Uuid |
ID of the agent this annotation belongs to. |
key |
String |
Key of the annotation (max 64 characters, no whitespace). |
value |
String |
Value of the annotation (max 64 characters, no whitespace). |
struct NewAgentAnnotation
Section titled “struct NewAgentAnnotation”pub
Derives: Insertable, Debug, Clone, Serialize, Deserialize, ToSchema
Represents a new agent annotation to be inserted into the database.
Fields
Section titled “Fields”| Name | Type | Description |
|---|---|---|
agent_id |
Uuid |
ID of the agent this annotation belongs to. |
key |
String |
Key of the annotation (max 64 characters, no whitespace). |
value |
String |
Value of the annotation (max 64 characters, no whitespace). |
Methods
Section titled “Methods”pub
fn new( agent_id: Uuid, key: String, value: String,) -> Result<Self, String>Creates a new NewAgentAnnotation instance.
Parameters:
| Name | Type | Description |
|---|---|---|
agent_id |
Uuid |
UUID of the agent to associate the annotation with. |
key |
String |
The key for the annotation. Must be non-empty, max 64 characters, and contain no whitespace. |
value |
String |
The value for the annotation. Must be non-empty, max 64 characters, and contain no whitespace. |
Returns:
Returns Ok(NewAgentAnnotation) if all parameters are valid, otherwise returns an Err with a description of the validation failure.
Source
pub fn new(agent_id: Uuid, key: String, value: String) -> Result<Self, String> { // Validate agent_id if agent_id.is_nil() { return Err("Invalid agent ID".to_string()); }
// Validate key if key.is_empty() { return Err("Key cannot be empty".to_string()); } if key.len() > 64 { return Err("Key cannot exceed 64 characters".to_string()); } if key.contains(char::is_whitespace) { return Err("Key cannot contain whitespace".to_string()); }
// Validate value if value.is_empty() { return Err("Value cannot be empty".to_string()); } if value.len() > 64 { return Err("Value cannot exceed 64 characters".to_string()); } if value.contains(char::is_whitespace) { return Err("Value cannot contain whitespace".to_string()); }
Ok(NewAgentAnnotation { agent_id, key, value, }) }