reifydb_catalog/materialized/load/
mod.rs

1// Copyright (c) reifydb.com 2025
2// This file is licensed under the AGPL-3.0-or-later, see license.md file
3
4pub mod dictionary;
5pub mod flow;
6pub mod namespace;
7pub mod operator_retention_policy;
8pub mod primary_key;
9pub mod source_retention_policy;
10pub mod table;
11pub mod view;
12
13pub(crate) use dictionary::load_dictionaries;
14pub(crate) use flow::load_flows;
15pub(crate) use namespace::load_namespaces;
16pub(crate) use operator_retention_policy::load_operator_retention_policies;
17pub(crate) use primary_key::load_primary_keys;
18use reifydb_core::interface::QueryTransaction;
19pub(crate) use source_retention_policy::load_source_retention_policies;
20pub(crate) use table::load_tables;
21pub(crate) use view::load_views;
22
23use crate::MaterializedCatalog;
24
25/// Loads catalog data from storage and populates a MaterializedCatalog
26pub struct MaterializedCatalogLoader;
27
28impl MaterializedCatalogLoader {
29	/// Load all catalog data from storage into the MaterializedCatalog
30	pub async fn load_all(qt: &mut impl QueryTransaction, catalog: &MaterializedCatalog) -> crate::Result<()> {
31		load_namespaces(qt, catalog).await?;
32		// Load primary keys first so they're available when loading
33		// tables/views
34		load_primary_keys(qt, catalog).await?;
35
36		load_tables(qt, catalog).await?;
37		load_views(qt, catalog).await?;
38		load_flows(qt, catalog).await?;
39
40		// Load retention policies
41		load_source_retention_policies(qt, catalog).await?;
42		load_operator_retention_policies(qt, catalog).await?;
43
44		// Load dictionaries
45		load_dictionaries(qt, catalog).await?;
46
47		Ok(())
48	}
49}