Skip to content

brokkr-models::models::template_labels

Rust

Template Label Module

This module defines structures and methods for managing template labels. Template labels are used for targeting validation - templates with labels can only be instantiated into stacks that have matching labels.

Constraints

  • The template_id must be a valid, non-nil UUID.
  • The label must be a non-empty string.
  • The label must not exceed 64 characters.
  • The label cannot contain whitespace.

pub

Derives: Queryable, Selectable, Identifiable, AsChangeset, Debug, Clone, Serialize, Deserialize, Eq, PartialEq, Hash, ToSchema

Represents a template label in the database.

Name Type Description
id Uuid Unique identifier for the template label.
template_id Uuid ID of the template this label is associated with.
label String The label text (max 64 characters, no whitespace).
created_at DateTime<Utc> Timestamp when the label was created.

pub

Derives: Insertable, Debug, Clone, Serialize, Deserialize, ToSchema

Represents a new template label to be inserted into the database.

Name Type Description
template_id Uuid ID of the template this label is associated with.
label String The label text (max 64 characters, no whitespace).

pub

fn new(template_id: Uuid, label: String) -> Result<Self, String>

Creates a new NewTemplateLabel instance.

Parameters:

Name Type Description
template_id Uuid UUID of the template to associate the label with.
label String The label text. Must be non-empty, max 64 characters, no whitespace.

Returns:

Returns Ok(NewTemplateLabel) if all parameters are valid, otherwise returns an Err with a description of the validation failure.

Source
pub fn new(template_id: Uuid, label: String) -> Result<Self, String> {
// Validate template_id
if template_id.is_nil() {
return Err("Invalid template ID".to_string());
}
// Validate label
if label.trim().is_empty() {
return Err("Label cannot be empty".to_string());
}
// Check label length
if label.len() > 64 {
return Err("Label cannot exceed 64 characters".to_string());
}
// Check whitespace
if label.contains(char::is_whitespace) {
return Err("Label cannot contain whitespace".to_string());
}
Ok(NewTemplateLabel { template_id, label })
}