1extern crate self as icydb;
60
61use icydb_core::{error::InternalError, traits::Visitable};
62pub use icydb_build as build;
64pub use icydb_build::build;
65pub use icydb_schema as schema;
66pub use icydb_schema_derive as macros;
67
68#[doc(hidden)]
70pub use icydb_core::{types, value};
71
72#[doc(hidden)]
73pub mod model {
74 pub mod entity {
75 pub use icydb_core::model::EntityModel;
76 }
77
78 pub mod field {
79 pub use icydb_core::model::{
80 EnumVariantModel, FieldInsertGeneration, FieldKind, FieldModel, FieldStorageDecode,
81 FieldWriteManagement, RelationStrength,
82 };
83 }
84
85 pub mod index {
86 pub use icydb_core::model::{
87 IndexExpression, IndexKeyItem, IndexKeyItemsRef, IndexModel, IndexPredicateMetadata,
88 };
89 }
90
91 pub use entity::EntityModel;
92 pub use field::FieldModel;
93 pub use index::{IndexExpression, IndexModel};
94}
95
96#[doc(hidden)]
97pub mod metrics {
98 pub use icydb_core::metrics::{
99 EventCounters, EventReport, MetricsSink, metrics_report, metrics_reset_all,
100 };
101}
102
103pub mod visitor {
104 pub use icydb_core::visitor::{
105 Issue, PathSegment, SanitizeFieldDescriptor, ScopedContext, ValidateFieldDescriptor,
106 VisitableFieldDescriptor, VisitorContext, VisitorCore, VisitorError, VisitorIssues,
107 VisitorMutCore, drive_sanitize_fields, drive_validate_fields, drive_visitable_fields,
108 drive_visitable_fields_mut, perform_visit, perform_visit_mut,
109 };
110 pub use icydb_core::{
111 sanitize::{SanitizeWriteContext, SanitizeWriteMode, sanitize, sanitize_with_context},
112 validate::validate,
113 };
114}
115
116pub mod base;
118pub mod db;
119pub mod error;
120pub mod traits;
121pub use error::Error;
122
123pub type Create<E> = <E as icydb_core::traits::EntityCreateType>::Create;
125
126#[doc(hidden)]
129pub mod __macro {
130 pub use crate::db::execute_generated_storage_report;
131 #[cfg(feature = "sql")]
132 pub use icydb_core::db::LoweredSqlCommand;
133 pub use icydb_core::db::{
134 DataStore, DbSession as CoreDbSession, EntityRuntimeHooks, IndexStore, StoreRegistry,
135 };
136}
137
138#[doc(hidden)]
145pub mod __reexports {
146 pub use candid;
147 pub use canic_cdk;
148 pub use canic_memory;
149 pub use ctor;
150 pub use derive_more;
151 pub use icydb_derive;
152 pub use remain;
153 pub use serde;
154}
155
156pub mod prelude {
162 pub use crate::{
163 db,
164 db::{
165 query,
166 query::{
167 FilterExpr, SortExpr,
168 builder::{
169 FieldRef, count, count_by, exists, first, last, max, max_by, min, min_by, sum,
170 },
171 predicate::Predicate,
172 },
173 },
174 traits::{
175 Collection as _, EntityKind as _, EntityValue, Inner as _, MapCollection as _,
176 Path as _,
177 },
178 types::*,
179 value::Value,
180 };
181 pub use candid::CandidType;
182 pub use serde::{Deserialize, Serialize};
183}
184
185pub mod design {
191 pub mod prelude {
192 pub use ::candid::CandidType;
193 pub use ::derive_more;
194
195 pub use crate::{
196 base, db,
197 db::query::builder::{
198 FieldRef, count, count_by, exists, first, last, max, max_by, min, min_by, sum,
199 },
200 macros::*,
201 traits::{
202 Collection as _, EntityKind, EntityValue as _, FieldValue as _, Inner as _,
203 MapCollection as _, Path as _, Sanitize as _, Sanitizer, Serialize as _,
204 Validate as _, ValidateCustom, Validator, Visitable as _,
205 },
206 types::*,
207 value::Value,
208 visitor::VisitorContext,
209 visitor::{SanitizeWriteContext, SanitizeWriteMode},
210 };
211 }
212}
213
214pub const VERSION: &str = env!("CARGO_PKG_VERSION");
223
224#[macro_export]
230macro_rules! start {
231 () => {
232 include!(concat!(env!("OUT_DIR"), "/actor.rs"));
234 };
235}
236
237#[macro_export]
239#[expect(clippy::crate_in_macro_def)]
240macro_rules! db {
241 () => {
242 crate::db()
243 };
244}
245
246pub fn sanitize(node: &mut dyn Visitable) -> Result<(), Error> {
252 icydb_core::sanitize::sanitize(node)
253 .map_err(InternalError::from)
254 .map_err(Error::from)
255}
256
257pub fn validate(node: &dyn Visitable) -> Result<(), Error> {
259 icydb_core::validate::validate(node)
260 .map_err(InternalError::from)
261 .map_err(Error::from)
262}