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;
71
72pub mod value {
73 pub use icydb_core::value::{
74 InputValue, InputValueEnum, OutputValue, OutputValueEnum, StorageKey,
75 StorageKeyDecodeError, StorageKeyEncodeError, ValueTag,
76 };
77}
78
79#[doc(hidden)]
80pub mod model {
81 pub mod entity {
82 pub use icydb_core::model::EntityModel;
83 }
84
85 pub mod field {
86 pub use icydb_core::model::{
87 EnumVariantModel, FieldDatabaseDefault, FieldInsertGeneration, FieldKind, FieldModel,
88 FieldStorageDecode, FieldWriteManagement, RelationStrength,
89 };
90 }
91
92 pub mod index {
93 pub use icydb_core::model::{
94 IndexExpression, IndexKeyItem, IndexKeyItemsRef, IndexModel, IndexPredicateMetadata,
95 };
96 }
97
98 pub use entity::EntityModel;
99 pub use field::{FieldDatabaseDefault, FieldModel};
100 pub use index::{IndexExpression, IndexModel};
101}
102
103#[doc(hidden)]
104pub mod metrics {
105 pub use icydb_core::metrics::{
106 EventCounters, EventReport, MetricsSink, metrics_report, metrics_reset_all,
107 };
108}
109
110pub mod visitor {
111 pub use icydb_core::visitor::{
112 Issue, PathSegment, SanitizeFieldDescriptor, ScopedContext, ValidateFieldDescriptor,
113 VisitableFieldDescriptor, VisitorContext, VisitorCore, VisitorError, VisitorIssues,
114 VisitorMutCore, drive_sanitize_fields, drive_validate_fields, drive_visitable_fields,
115 drive_visitable_fields_mut, perform_visit, perform_visit_mut,
116 };
117 pub use icydb_core::{
118 sanitize::{SanitizeWriteContext, SanitizeWriteMode, sanitize, sanitize_with_context},
119 validate::validate,
120 };
121}
122
123pub mod base;
125pub mod db;
126mod error;
127pub mod traits;
128pub use error::{Error, ErrorKind, ErrorOrigin, QueryErrorKind, RuntimeErrorKind};
129
130pub type Create<E> = <E as icydb_core::traits::EntityCreateType>::Create;
132
133#[doc(hidden)]
136pub mod __macro {
137 pub use crate::db::execute_generated_storage_report;
138 pub use icydb_core::__macro::{
139 GeneratedStructuralEnumPayload, GeneratedStructuralMapPayloadSlices,
140 decode_generated_structural_enum_payload_bytes,
141 decode_generated_structural_list_payload_bytes,
142 decode_generated_structural_map_payload_bytes,
143 decode_generated_structural_text_payload_bytes, decode_persisted_many_slot_payload_by_meta,
144 decode_persisted_option_scalar_slot_payload, decode_persisted_option_slot_payload_by_kind,
145 decode_persisted_option_slot_payload_by_meta, decode_persisted_scalar_slot_payload,
146 decode_persisted_slot_payload_by_kind, decode_persisted_slot_payload_by_meta,
147 decode_persisted_structured_many_slot_payload, decode_persisted_structured_slot_payload,
148 decode_schema_runtime_field_slot, encode_generated_structural_enum_payload_bytes,
149 encode_generated_structural_list_payload_bytes,
150 encode_generated_structural_map_payload_bytes,
151 encode_generated_structural_text_payload_bytes, encode_persisted_many_slot_payload_by_meta,
152 encode_persisted_option_scalar_slot_payload, encode_persisted_option_slot_payload_by_meta,
153 encode_persisted_scalar_slot_payload, encode_persisted_slot_payload_by_kind,
154 encode_persisted_slot_payload_by_meta, encode_persisted_structured_many_slot_payload,
155 encode_persisted_structured_slot_payload, encode_schema_runtime_field_slot,
156 generated_persisted_structured_payload_decode_failed,
157 };
158 pub use icydb_core::__macro::{PersistedScalar, ScalarSlotValueRef, ScalarValueRef};
159 #[cfg(feature = "sql")]
160 pub use icydb_core::db::LoweredSqlCommand;
161 pub use icydb_core::db::{
162 DataStore, DbSession as CoreDbSession, EntityRuntimeHooks, IndexStore, SchemaStore,
163 StoreRegistry,
164 };
165 pub use icydb_core::error::InternalError;
166 pub use icydb_core::traits::{
167 EnumValue, FieldProjection, PersistedByKindCodec, PersistedFieldMetaCodec,
168 PersistedFieldSlotCodec, PersistedStructuredFieldCodec, RuntimeValueDecode,
169 RuntimeValueEncode, RuntimeValueKind, RuntimeValueMeta, runtime_value_btree_map_from_value,
170 runtime_value_btree_set_from_value, runtime_value_collection_to_value,
171 runtime_value_from_value, runtime_value_from_vec_into,
172 runtime_value_from_vec_into_btree_map, runtime_value_from_vec_into_btree_set,
173 runtime_value_into, runtime_value_map_collection_to_value, runtime_value_to_value,
174 runtime_value_vec_from_value,
175 };
176 pub use icydb_core::value::{InputValue, Value, ValueEnum};
177}
178
179#[doc(hidden)]
186pub mod __reexports {
187 pub use candid;
188 pub use canic_cdk;
189 pub use canic_memory;
190 pub use ctor;
191 pub use derive_more;
192 pub use icydb_derive;
193 pub use remain;
194 pub use serde;
195}
196
197pub mod prelude {
203 pub use crate::{
204 db,
205 db::{
206 query,
207 query::{
208 FieldRef, FilterExpr, FilterValue, OrderExpr, OrderTerm, asc, count, count_by,
209 desc, exists, field, first, last, max, max_by, min, min_by, sum,
210 },
211 },
212 traits::{
213 Collection as _, EntityKind as _, EntityValue, Inner as _, MapCollection as _,
214 Path as _,
215 },
216 types::*,
217 value::{InputValue, OutputValue},
218 };
219 pub use candid::CandidType;
220 pub use serde::{Deserialize, Serialize};
221}
222
223pub mod design {
229 pub mod prelude {
230 pub use ::candid::CandidType;
231 pub use ::derive_more;
232
233 pub use crate::{
234 base, db,
235 db::query::{
236 FieldRef, count, count_by, exists, first, last, max, max_by, min, min_by, sum,
237 },
238 macros::*,
239 traits::{
240 Collection as _, EntityKind, EntityValue as _, Inner as _, MapCollection as _,
241 Path as _, Sanitize as _, Sanitizer, Serialize as _, Validate as _, ValidateCustom,
242 Validator, Visitable as _,
243 },
244 types::*,
245 value::{InputValue, OutputValue},
246 visitor::VisitorContext,
247 visitor::{SanitizeWriteContext, SanitizeWriteMode},
248 };
249 }
250}
251
252pub const VERSION: &str = env!("CARGO_PKG_VERSION");
262
263#[macro_export]
269macro_rules! start {
270 () => {
271 include!(concat!(env!("OUT_DIR"), "/actor.rs"));
273 };
274}
275
276#[macro_export]
278#[expect(clippy::crate_in_macro_def)]
279macro_rules! db {
280 () => {
281 crate::db()
282 };
283}
284
285pub fn sanitize(node: &mut dyn Visitable) -> Result<(), Error> {
291 icydb_core::sanitize::sanitize(node)
292 .map_err(InternalError::from)
293 .map_err(Error::from)
294}
295
296pub fn validate(node: &dyn Visitable) -> Result<(), Error> {
298 icydb_core::validate::validate(node)
299 .map_err(InternalError::from)
300 .map_err(Error::from)
301}