mz_expr/scalar/func/impls/
catalog.rs1use mz_catalog_decode::{audit_log, create_sql, durable};
14use mz_expr_derive::sqlfunc;
15use mz_repr::ArrayRustType;
16use mz_repr::adt::jsonb::{Jsonb, JsonbRef};
17use mz_repr::adt::mz_acl_item::MzAclItem;
18
19use crate::EvalError;
20
21fn catalog_err(e: String) -> EvalError {
22 EvalError::InvalidCatalogJson(e.into())
23}
24
25fn to_jsonb(val: serde_json::Value) -> Jsonb {
26 Jsonb::from_serde_json(val).expect("valid JSONB")
27}
28
29#[sqlfunc]
30fn parse_catalog_id<'a>(a: JsonbRef<'a>) -> Result<String, EvalError> {
31 durable::catalog_id(a).map_err(catalog_err)
32}
33
34#[sqlfunc]
35fn parse_catalog_privileges<'a>(a: JsonbRef<'a>) -> Result<ArrayRustType<MzAclItem>, EvalError> {
36 durable::privileges(a)
37 .map(ArrayRustType)
38 .map_err(catalog_err)
39}
40
41#[sqlfunc]
44fn parse_catalog_acl_mode<'a>(a: JsonbRef<'a>) -> Result<String, EvalError> {
45 durable::acl_mode(a)
46 .map(|mode| mode.to_string())
47 .map_err(catalog_err)
48}
49
50#[sqlfunc]
51fn parse_catalog_audit_log_details<'a>(a: JsonbRef<'a>) -> Result<Jsonb, EvalError> {
52 audit_log::details(a).map_err(catalog_err)
53}
54
55#[sqlfunc]
56fn parse_catalog_create_sql<'a>(a: &'a str) -> Result<Jsonb, EvalError> {
57 create_sql::item_details(a)
58 .map(to_jsonb)
59 .map_err(catalog_err)
60}
61
62#[sqlfunc]
63fn parse_catalog_item_references<'a>(a: &'a str) -> Result<Jsonb, EvalError> {
64 create_sql::item_references(a)
65 .map(to_jsonb)
66 .map_err(catalog_err)
67}
68
69#[sqlfunc]
70fn parse_postgres_source_details<'a>(a: &'a str) -> Result<Jsonb, EvalError> {
71 create_sql::postgres_source_details(a)
72 .map(to_jsonb)
73 .map_err(catalog_err)
74}
75
76#[sqlfunc]
77fn parse_kafka_source_details<'a>(a: &'a str) -> Result<Jsonb, EvalError> {
78 create_sql::kafka_source_details(a)
79 .map(to_jsonb)
80 .map_err(catalog_err)
81}
82
83#[sqlfunc]
84fn parse_source_export_details<'a>(a: &'a str) -> Result<Jsonb, EvalError> {
85 create_sql::source_export_details(a)
86 .map(to_jsonb)
87 .map_err(catalog_err)
88}
89
90#[sqlfunc]
91fn parse_connection_details<'a>(a: &'a str) -> Result<Jsonb, EvalError> {
92 create_sql::connection_details(a)
93 .map(to_jsonb)
94 .map_err(catalog_err)
95}