MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / parse_alter_database

Function parse_alter_database

nodedb-sql/src/ddl_ast/parse/database/alter.rs:22–59  ·  view source on GitHub ↗
(
    parts: &[&str],
    original: &str,
)

Source from the content-addressed store, hash-verified

20pub const MAX_IDLE_TIMEOUT_SECS: u64 = 365 * 24 * 60 * 60;
21
22pub(super) fn parse_alter_database(
23 parts: &[&str],
24 original: &str,
25) -> Result<NodedbStatement, SqlError> {
26 let name = parts
27 .get(2)
28 .copied()
29 .ok_or_else(|| SqlError::Parse {
30 detail: "ALTER DATABASE requires a name".into(),
31 })?
32 .trim_matches('"')
33 .to_string();
34
35 let verb = parts
36 .get(3)
37 .copied()
38 .ok_or_else(|| SqlError::Parse {
39 detail: "ALTER DATABASE requires an operation keyword".into(),
40 })?
41 .to_uppercase();
42
43 let operation = match verb.as_str() {
44 "RENAME" => parse_rename(parts)?,
45 "SET" => parse_set(parts, original)?,
46 "MATERIALIZE" => AlterDatabaseOperation::Materialize,
47 "PROMOTE" => AlterDatabaseOperation::Promote,
48 other => {
49 return Err(SqlError::Parse {
50 detail: format!("ALTER DATABASE: unknown operation '{other}'"),
51 });
52 }
53 };
54
55 Ok(NodedbStatement::Database(DatabaseStmt::AlterDatabase {
56 name,
57 operation,
58 }))
59}
60
61fn parse_rename(parts: &[&str]) -> Result<AlterDatabaseOperation, SqlError> {
62 let to_kw = parts.get(4).map(|w| w.to_uppercase()).unwrap_or_default();

Callers 1

try_parseFunction · 0.85

Calls 5

parse_renameFunction · 0.85
parse_setFunction · 0.85
to_stringMethod · 0.80
getMethod · 0.45
as_strMethod · 0.45

Tested by

no test coverage detected