MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / validate_view_name

Function validate_view_name

atomic-cli/src/commands/view/new.rs:94–134  ·  view source on GitHub ↗

Validate a view name. View names must: - Not be empty - Not exceed 255 characters - Not contain invalid characters (/, \, :, *, ?, ", <, >, |, space, null) - Not start or end with a dot - Not be "." or ".." # Arguments `name` - The view name to validate # Returns `Ok(())` if the name is valid, or an error describing why it's invalid.

(name: &str)

Source from the content-addressed store, hash-verified

92///
93/// `Ok(())` if the name is valid, or an error describing why it's invalid.
94fn validate_view_name(name: &str) -> Result<(), String> {
95 // Check for empty name
96 if name.is_empty() {
97 return Err("View name cannot be empty".to_string());
98 }
99
100 // Check length
101 if name.len() > MAX_VIEW_NAME_LENGTH {
102 return Err(format!(
103 "View name cannot exceed {} characters",
104 MAX_VIEW_NAME_LENGTH
105 ));
106 }
107
108 // Check for invalid characters
109 for c in INVALID_CHARS {
110 if name.contains(*c) {
111 let char_desc = match c {
112 ' ' => "spaces".to_string(),
113 '\0' => "null characters".to_string(),
114 _ => format!("'{}'", c),
115 };
116 return Err(format!("View name cannot contain {}", char_desc));
117 }
118 }
119
120 // Check for reserved names
121 if name == "." || name == ".." {
122 return Err("View name cannot be '.' or '..'".to_string());
123 }
124
125 // Check for leading/trailing dots
126 if name.starts_with('.') {
127 return Err("View name cannot start with a dot".to_string());
128 }
129 if name.ends_with('.') {
130 return Err("View name cannot end with a dot".to_string());
131 }
132
133 Ok(())
134}
135
136// New Command
137

Callers 3

runMethod · 0.70
test_empty_nameFunction · 0.70
test_name_too_longFunction · 0.70

Calls 3

is_emptyMethod · 0.45
lenMethod · 0.45
containsMethod · 0.45

Tested by 2

test_empty_nameFunction · 0.56
test_name_too_longFunction · 0.56