Skip to main content

laminar_core/
catalog.rs

1//! Feature-neutral catalog identity types.
2
3use serde::{Deserialize, Serialize};
4
5/// Exclusive owner of a user catalog identifier.
6#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
7#[serde(rename_all = "snake_case")]
8pub enum CatalogObjectKind {
9    /// Ingest source.
10    Source,
11    /// Output sink.
12    Sink,
13    /// Reference table.
14    Table,
15    /// Lookup table.
16    LookupTable,
17    /// Streaming query output.
18    Stream,
19    /// Materialized streaming view.
20    MaterializedView,
21}
22
23impl std::fmt::Display for CatalogObjectKind {
24    fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
25        formatter.write_str(match self {
26            Self::Source => "source",
27            Self::Sink => "sink",
28            Self::Table => "table",
29            Self::LookupTable => "lookup table",
30            Self::Stream => "stream",
31            Self::MaterializedView => "materialized view",
32        })
33    }
34}