1extern crate self as icydb;
60
61use icydb_core::{error::InternalError, traits::Visitable};
62pub use icydb_build as build;
64pub use icydb_build::build_with_options;
65pub use icydb_schema as schema;
66pub use icydb_schema_derive as macros;
67
68#[doc(hidden)]
70pub use icydb_core::types;
71
72pub mod value {
73 pub use icydb_core::value::{
74 InputValue, InputValueEnum, OutputValue, OutputValueEnum, ValueTag,
75 };
76}
77
78#[doc(hidden)]
79pub mod model {
80 pub mod entity {
81 pub use icydb_core::model::{
82 EntityModel, PrimaryKeyModel, PrimaryKeyModelFieldIter, PrimaryKeyModelFields,
83 RelationEdgeModel,
84 };
85 }
86
87 pub mod field {
88 pub use icydb_core::model::{
89 DEFAULT_BIG_INT_MAX_BYTES, EnumVariantModel, FieldDatabaseDefault,
90 FieldInsertGeneration, FieldKind, FieldModel, FieldStorageDecode, FieldWriteManagement,
91 RelationStrength,
92 };
93 }
94
95 pub mod index {
96 pub use icydb_core::model::{
97 IndexExpression, IndexKeyItem, IndexKeyItemsRef, IndexModel, IndexPredicateMetadata,
98 };
99 }
100
101 pub use entity::{EntityModel, PrimaryKeyModel};
102 pub use field::{FieldDatabaseDefault, FieldModel};
103 pub use index::{IndexExpression, IndexModel};
104}
105
106#[doc(hidden)]
107pub mod metrics {
108 pub use icydb_core::metrics::{
109 EntitySummary, EventCounters, EventOps, EventReport, MetricsSink, metrics_report,
110 metrics_reset_all,
111 };
112}
113
114pub mod visitor {
115 pub use icydb_core::visitor::{
116 Issue, PathSegment, SanitizeFieldDescriptor, ScopedContext, ValidateFieldDescriptor,
117 VisitableFieldDescriptor, VisitorContext, VisitorCore, VisitorError, VisitorIssues,
118 VisitorMutCore, drive_sanitize_fields, drive_validate_fields, drive_visitable_fields,
119 drive_visitable_fields_mut, perform_visit, perform_visit_mut,
120 };
121 pub use icydb_core::{
122 sanitize::{SanitizeWriteContext, SanitizeWriteMode, sanitize, sanitize_with_context},
123 validate::validate,
124 };
125}
126
127pub mod base;
129pub mod db;
130mod error;
131pub mod traits;
132pub use error::{Error, ErrorKind, ErrorOrigin, QueryErrorKind, RuntimeErrorKind};
133
134pub type Create<E> = <E as icydb_core::traits::EntityCreateType>::Create;
136
137#[doc(hidden)]
140pub mod __macro {
141 pub use crate::db::execute_generated_storage_report;
142 pub use icydb_core::__macro::{
143 GeneratedStructuralEnumPayload, GeneratedStructuralMapPayloadSlices,
144 decode_generated_structural_enum_payload_bytes,
145 decode_generated_structural_list_payload_bytes,
146 decode_generated_structural_map_payload_bytes,
147 decode_generated_structural_text_payload_bytes, decode_persisted_many_slot_payload_by_meta,
148 decode_persisted_option_scalar_slot_payload, decode_persisted_option_slot_payload_by_kind,
149 decode_persisted_option_slot_payload_by_meta, decode_persisted_scalar_slot_payload,
150 decode_persisted_slot_payload_by_kind, decode_persisted_slot_payload_by_meta,
151 decode_persisted_structured_many_slot_payload, decode_persisted_structured_slot_payload,
152 decode_schema_runtime_field_slot, encode_generated_structural_enum_payload_bytes,
153 encode_generated_structural_list_payload_bytes,
154 encode_generated_structural_map_payload_bytes,
155 encode_generated_structural_text_payload_bytes, encode_persisted_many_slot_payload_by_meta,
156 encode_persisted_option_scalar_slot_payload, encode_persisted_option_slot_payload_by_meta,
157 encode_persisted_scalar_slot_payload, encode_persisted_slot_payload_by_kind,
158 encode_persisted_slot_payload_by_meta, encode_persisted_structured_many_slot_payload,
159 encode_persisted_structured_slot_payload, encode_schema_runtime_field_slot,
160 generated_persisted_structured_payload_decode_failed,
161 };
162 pub use icydb_core::__macro::{PersistedScalar, ScalarSlotValueRef, ScalarValueRef};
163 pub use icydb_core::__macro::{
164 bootstrap_default_memory_manager, ic_memory_declaration, ic_memory_key, ic_memory_range,
165 };
166 pub use icydb_core::db::{
167 CompositePrimaryKeyValue, CompositePrimaryKeyValueError, DataStore,
168 DbSession as CoreDbSession, EntityRuntimeHooks, IndexStore, PersistedRow,
169 PrimaryKeyComponent, PrimaryKeyValue, SchemaStore, SlotReader, SlotWriter,
170 StoreAllocationIdentities, StoreAllocationIdentity, StoreRegistry,
171 };
172 #[cfg(feature = "sql")]
173 pub use icydb_core::db::{
174 LoweredSqlCommand, identifiers_tail_match, sql_statement_entity_name,
175 };
176 pub use icydb_core::error::{ErrorClass, ErrorOrigin, InternalError};
177 pub use icydb_core::traits::{
178 EntityKeyBytes, EntityValue, EnumValue, FieldProjection, KeyValueCodec,
179 PersistedByKindCodec, PersistedFieldMetaCodec, PersistedFieldSlotCodec,
180 PersistedStructuredFieldCodec, PrimaryKeyCodec, PrimaryKeyDecode, PrimaryKeyEncodeError,
181 RuntimeValueDecode, RuntimeValueEncode, RuntimeValueKind, RuntimeValueMeta,
182 ScalarRelationTargetKey, ScalarRelationTargetKeyMatchesDeclaredPrimitive,
183 runtime_value_btree_map_from_value, runtime_value_btree_set_from_value,
184 runtime_value_collection_to_value, runtime_value_from_value, runtime_value_from_vec_into,
185 runtime_value_from_vec_into_btree_map, runtime_value_from_vec_into_btree_set,
186 runtime_value_into, runtime_value_map_collection_to_value, runtime_value_to_value,
187 runtime_value_vec_from_value,
188 };
189 pub use icydb_core::value::{InputValue, Value, ValueEnum};
190}
191
192#[doc(hidden)]
199pub mod __reexports {
200 pub use candid;
201 pub use ctor;
202 pub use derive_more;
203 pub use ic_cdk;
204 pub use ic_memory;
205 pub use icydb_derive;
206 pub use remain;
207 pub use serde;
208}
209
210pub mod prelude {
216 pub use crate::{
217 db,
218 db::{
219 query,
220 query::{
221 FieldRef, FilterExpr, FilterValue, OrderExpr, OrderTerm, asc, count, count_by,
222 desc, exists, field, first, last, max, max_by, min, min_by, sum,
223 },
224 },
225 traits::{
226 Collection as _, Entity as _, EntityKind as _, Inner as _, MapCollection as _,
227 Path as _,
228 },
229 types::*,
230 value::{InputValue, OutputValue},
231 };
232 pub use candid::CandidType;
233 pub use serde::{Deserialize, Serialize};
234}
235
236pub mod design {
242 pub mod prelude {
243 pub use ::candid::CandidType;
244 pub use ::derive_more;
245
246 pub use crate::{
247 base, db,
248 db::query::{
249 FieldRef, count, count_by, exists, first, last, max, max_by, min, min_by, sum,
250 },
251 macros::*,
252 traits::{
253 Collection as _, Entity as _, EntityKind, Inner as _, MapCollection as _,
254 Path as _, Sanitize as _, Sanitizer, Serialize as _, Validate as _, ValidateCustom,
255 Validator, Visitable as _,
256 },
257 types::*,
258 value::{InputValue, OutputValue},
259 visitor::VisitorContext,
260 visitor::{SanitizeWriteContext, SanitizeWriteMode},
261 };
262 }
263}
264
265pub const VERSION: &str = env!("CARGO_PKG_VERSION");
275
276#[macro_export]
282macro_rules! start {
283 () => {
284 include!(concat!(env!("OUT_DIR"), "/actor.rs"));
286 };
287}
288
289#[macro_export]
291#[expect(clippy::crate_in_macro_def)]
292macro_rules! db {
293 () => {
294 crate::db()
295 };
296}
297
298pub fn sanitize(node: &mut dyn Visitable) -> Result<(), Error> {
304 icydb_core::sanitize::sanitize(node)
305 .map_err(InternalError::from)
306 .map_err(Error::from)
307}
308
309pub fn validate(node: &dyn Visitable) -> Result<(), Error> {
311 icydb_core::validate::validate(node)
312 .map_err(InternalError::from)
313 .map_err(Error::from)
314}