extern crate self as icydb;
use icydb_core::{error::InternalError, traits::Visitable};
pub use icydb_build as build;
pub use icydb_build::build;
pub use icydb_schema as schema;
pub use icydb_schema_derive as macros;
#[doc(hidden)]
pub use icydb_core::{types, value};
#[doc(hidden)]
pub mod model {
pub mod entity {
pub use icydb_core::model::EntityModel;
}
pub mod field {
pub use icydb_core::model::{
EnumVariantModel, FieldInsertGeneration, FieldKind, FieldModel, FieldStorageDecode,
FieldWriteManagement, RelationStrength,
};
}
pub mod index {
pub use icydb_core::model::{
IndexExpression, IndexKeyItem, IndexKeyItemsRef, IndexModel, IndexPredicateMetadata,
};
}
pub use entity::EntityModel;
pub use field::FieldModel;
pub use index::{IndexExpression, IndexModel};
}
#[doc(hidden)]
pub mod metrics {
pub use icydb_core::metrics::{
EventCounters, EventReport, MetricsSink, metrics_report, metrics_reset_all,
};
}
pub mod visitor {
pub use icydb_core::visitor::{
Issue, PathSegment, SanitizeFieldDescriptor, ScopedContext, ValidateFieldDescriptor,
VisitableFieldDescriptor, VisitorContext, VisitorCore, VisitorError, VisitorIssues,
VisitorMutCore, drive_sanitize_fields, drive_validate_fields, drive_visitable_fields,
drive_visitable_fields_mut, perform_visit, perform_visit_mut,
};
pub use icydb_core::{
sanitize::{SanitizeWriteContext, SanitizeWriteMode, sanitize, sanitize_with_context},
validate::validate,
};
}
pub mod base;
pub mod db;
pub mod error;
pub mod traits;
pub use error::Error;
pub type Create<E> = <E as icydb_core::traits::EntityCreateType>::Create;
#[doc(hidden)]
pub mod __macro {
pub use crate::db::execute_generated_storage_report;
#[cfg(feature = "sql")]
pub use icydb_core::db::LoweredSqlCommand;
pub use icydb_core::db::{
DataStore, DbSession as CoreDbSession, EntityRuntimeHooks, IndexStore, StoreRegistry,
};
}
#[doc(hidden)]
pub mod __reexports {
pub use candid;
pub use canic_cdk;
pub use canic_memory;
pub use ctor;
pub use derive_more;
pub use icydb_derive;
pub use remain;
pub use serde;
}
pub mod prelude {
pub use crate::{
db,
db::{
query,
query::{
FilterExpr, SortExpr,
builder::{
FieldRef, count, count_by, exists, first, last, max, max_by, min, min_by, sum,
},
predicate::Predicate,
},
},
traits::{
Collection as _, EntityKind as _, EntityValue, Inner as _, MapCollection as _,
Path as _,
},
types::*,
value::Value,
};
pub use candid::CandidType;
pub use serde::{Deserialize, Serialize};
}
pub mod design {
pub mod prelude {
pub use ::candid::CandidType;
pub use ::derive_more;
pub use crate::{
base, db,
db::query::builder::{
FieldRef, count, count_by, exists, first, last, max, max_by, min, min_by, sum,
},
macros::*,
traits::{
Collection as _, EntityKind, EntityValue as _, FieldValue as _, Inner as _,
MapCollection as _, Path as _, Sanitize as _, Sanitizer, Serialize as _,
Validate as _, ValidateCustom, Validator, Visitable as _,
},
types::*,
value::Value,
visitor::VisitorContext,
visitor::{SanitizeWriteContext, SanitizeWriteMode},
};
}
}
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
#[macro_export]
macro_rules! start {
() => {
include!(concat!(env!("OUT_DIR"), "/actor.rs"));
};
}
#[macro_export]
#[expect(clippy::crate_in_macro_def)]
macro_rules! db {
() => {
crate::db()
};
}
pub fn sanitize(node: &mut dyn Visitable) -> Result<(), Error> {
icydb_core::sanitize::sanitize(node)
.map_err(InternalError::from)
.map_err(Error::from)
}
pub fn validate(node: &dyn Visitable) -> Result<(), Error> {
icydb_core::validate::validate(node)
.map_err(InternalError::from)
.map_err(Error::from)
}