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

Function try_parse

nodedb-sql/src/ddl_ast/parse/rls.rs:9–40  ·  view source on GitHub ↗
(
    upper: &str,
    parts: &[&str],
    trimmed: &str,
)

Source from the content-addressed store, hash-verified

7use crate::error::SqlError;
8
9pub(super) fn try_parse(
10 upper: &str,
11 parts: &[&str],
12 trimmed: &str,
13) -> Option<Result<NodedbStatement, SqlError>> {
14 (|| -> Result<Option<NodedbStatement>, SqlError> {
15 if upper.starts_with("CREATE RLS POLICY ") {
16 return Ok(Some(parse_create_rls_policy(upper, parts, trimmed)));
17 }
18 if upper.starts_with("DROP RLS POLICY ") {
19 let if_exists = upper.contains("IF EXISTS");
20 let name = match extract_name_after_if_exists(parts, "POLICY") {
21 None => return Ok(None),
22 Some(r) => r?,
23 };
24 let collection = extract_after_keyword(parts, "ON").unwrap_or_default();
25 return Ok(Some(NodedbStatement::Policy(PolicyStmt::DropRlsPolicy {
26 name,
27 collection,
28 if_exists,
29 })));
30 }
31 if upper.starts_with("SHOW RLS POLI") {
32 let collection = parts.get(3).map(|s| s.to_string());
33 return Ok(Some(NodedbStatement::Policy(PolicyStmt::ShowRlsPolicies {
34 collection,
35 })));
36 }
37 Ok(None)
38 })()
39 .transpose()
40}
41
42/// `CREATE RLS POLICY <name> ON <collection> FOR <type> USING (<predicate>)
43/// [RESTRICTIVE] [TENANT <id>] [ON DENY ...]`

Callers 2

parseFunction · 0.70

Calls 6

parse_create_rls_policyFunction · 0.85
extract_after_keywordFunction · 0.85
to_stringMethod · 0.80
containsMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected