extern crate self as icydb;
use icydb_core::{error::InternalError, visitor::Visitable};
pub use icydb_schema as schema;
pub use icydb_schema_derive as macros;
#[doc(hidden)]
pub use icydb_core::types;
pub mod value {
pub use icydb_core::value::{
Collection, InputValue, InputValueEnum, MapCollection, OutputValue, OutputValueEnum,
ValueTag,
};
}
#[doc(hidden)]
pub mod model {
pub mod entity {
pub use icydb_core::model::{
EntityModel, PrimaryKeyModel, PrimaryKeyModelFieldIter, PrimaryKeyModelFields,
RelationEdgeModel,
};
}
pub mod field {
pub use icydb_core::model::{
DEFAULT_BIG_INT_MAX_BYTES, EnumVariantModel, FieldDatabaseDefault,
FieldInsertGeneration, FieldKind, FieldModel, FieldStorageDecode, FieldWriteManagement,
RelationStrength,
};
}
pub mod index {
pub use icydb_core::model::{
IndexExpression, IndexKeyItem, IndexKeyItemsRef, IndexModel, IndexPredicateMetadata,
};
}
pub use entity::{EntityModel, PrimaryKeyModel};
pub use field::{FieldDatabaseDefault, FieldModel};
pub use index::{IndexExpression, IndexModel};
}
#[doc(hidden)]
pub mod metrics {
pub use icydb_core::metrics::{
CompactEntityMetrics, CompactEventCounters, CompactMetric, CompactMetricsReport,
EntitySummary, EventCounters, EventOps, EventReport, MetricRatio, MetricsSink,
compact_metric_code, compact_metrics_report, metrics_report, metrics_reset_all,
};
}
pub mod visitor {
pub use icydb_core::visitor::{
Issue, PathSegment, Sanitize, SanitizeAuto, SanitizeCustom, SanitizeFieldDescriptor,
Sanitizer, ScopedContext, Validate, ValidateAuto, ValidateCustom, ValidateFieldDescriptor,
Validator, Visitable, 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;
#[cfg(not(target_arch = "wasm32"))]
pub mod build {
pub use icydb_build::build_with_options;
pub use icydb_build::{BuildOptions, BuildSqlUpdatePolicy, generate_with_options};
pub use icydb_config::{
ConfigError, GeneratedBuildTarget, GeneratedCanisterConfig, GeneratedIcydbConfig,
GeneratedMetricsMode, GeneratedMetricsPolicy, GeneratedSqlIntrospectionPolicy,
GeneratedSqlUpdatePolicy, ResolvedIcydbConfig, build_configured_canister,
emit_config_for_build_script, emit_configured_canister_for_build_script,
load_resolved_icydb_toml, resolve_existing_icydb_toml,
};
}
pub mod db;
pub mod diagnostic {
pub use icydb_diagnostic_code::{
Diagnostic, DiagnosticCode, DiagnosticDetail, ErrorClass, ErrorCode, ErrorOrigin,
QueryErrorKind, QueryProjectionCode, QueryReadAdmissionCode, QueryResultShapeCode,
RuntimeBoundaryCode, RuntimeErrorKind, SchemaDdlAdmissionCode, SqlFeatureCode,
SqlLoweringCode, SqlSurfaceMismatchCode, SqlWriteBoundaryCode,
};
}
mod error;
pub mod traits;
pub use error::{Error, ErrorKind, ErrorOrigin, QueryErrorKind, RuntimeErrorKind};
pub use icydb_diagnostic_code::ErrorCode;
pub type Create<E> = <E as icydb_core::traits::EntityCreateType>::Create;
#[doc(hidden)]
pub mod __macro {
pub use crate::db::execute_generated_storage_report;
pub use icydb_core::__macro::decode_generated_runtime_field_value;
pub use icydb_core::__macro::{
GeneratedStructuralMapPayloadSlices, decode_generated_structural_list_payload_bytes,
decode_generated_structural_map_payload_bytes,
decode_generated_structural_text_payload_bytes,
decode_persisted_option_scalar_slot_payload, decode_persisted_option_slot_payload_by_kind,
decode_persisted_scalar_slot_payload, decode_persisted_slot_payload_by_kind,
decode_persisted_structured_many_slot_payload, decode_persisted_structured_slot_payload,
encode_generated_structural_list_payload_bytes,
encode_generated_structural_map_payload_bytes,
encode_generated_structural_text_payload_bytes,
encode_persisted_option_scalar_slot_payload, encode_persisted_scalar_slot_payload,
encode_persisted_slot_payload_by_kind, encode_persisted_structured_many_slot_payload,
encode_persisted_structured_slot_payload,
generated_persisted_structured_payload_decode_failed,
};
pub use icydb_core::__macro::{PersistedScalar, ScalarSlotValueRef, ScalarValueRef};
pub use icydb_core::__macro::{
bootstrap_default_memory_manager, ic_memory_declaration, ic_memory_key, ic_memory_range,
};
pub use icydb_core::db::{
CompositePrimaryKeyValue, CompositePrimaryKeyValueError, DataStore,
DbSession as CoreDbSession, EntityKeyBytes, EntityKeyBytesError, EntityRuntimeHooks,
IndexStore, JournalTailStore, KeyValueCodec, PersistedRow, PrimaryKeyComponent,
PrimaryKeyDecode, PrimaryKeyEncode, PrimaryKeyEncodeError, PrimaryKeyValue,
ScalarRelationTargetKey, ScalarRelationTargetKeyMatchesDeclaredPrimitive, SchemaStore,
SlotReader, StoreAllocationIdentities, StoreAllocationIdentity, StoreRegistry,
StoreRuntimeStorageCapabilities, validate_entity_key_bytes_buffer,
};
#[cfg(feature = "sql")]
pub use icydb_core::db::{
LoweredSqlCommand, identifiers_tail_match, sql_statement_dispatch,
sql_statement_entity_name,
};
pub use icydb_core::error::{ErrorClass, ErrorOrigin, InternalError};
pub use icydb_core::traits::{
AuthoredFieldProjection, EntityValue, FieldProjection, PersistedByKindCodec,
PersistedStructuredFieldCodec,
};
pub use icydb_core::value::{InputValue, InputValueEnum, Value, ValueEnum};
pub use icydb_core::value::{
RuntimeEnumContext, RuntimeEnumSelection, RuntimeValueDecode, RuntimeValueEncode,
RuntimeValueKind, RuntimeValueMeta, runtime_value_btree_map_from_value,
runtime_value_btree_set_from_value, runtime_value_collection_to_value,
runtime_value_from_value, runtime_value_from_value_with_enum_context,
runtime_value_from_value_with_optional_enum_context, runtime_value_from_vec_into,
runtime_value_from_vec_into_btree_map, runtime_value_from_vec_into_btree_set,
runtime_value_into, runtime_value_map_collection_to_value, runtime_value_to_value,
runtime_value_vec_from_value,
};
}
#[doc(hidden)]
pub mod __reexports {
pub use candid;
pub use ctor;
pub use derive_more;
pub use ic_cdk;
pub use ic_memory;
pub use icydb_derive;
pub use remain;
pub use serde;
}
pub mod prelude {
pub use crate::{
db,
db::{
query,
query::{
FieldRef, FilterExpr, FilterValue, OrderExpr, OrderTerm, asc, count, count_by,
desc, exists, field, first, last, max, max_by, min, min_by, sum,
},
},
traits::{
Collection as _, Entity as _, EntityKind as _, Inner as _, MapCollection as _,
Path as _,
},
types::*,
value::{InputValue, OutputValue},
};
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::{
FieldRef, count, count_by, exists, first, last, max, max_by, min, min_by, sum,
},
macros::*,
traits::{
Collection as _, Entity as _, EntityKind, Inner as _, MapCollection as _,
Path as _, Sanitize as _, Sanitizer, Serialize as _, Validate as _, ValidateCustom,
Validator, Visitable as _,
},
types::*,
value::{InputValue, OutputValue},
visitor::{Issue, 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)
}
#[cfg(all(test, not(target_arch = "wasm32")))]
mod tests {
use crate::build;
#[test]
fn build_facade_exports_configured_and_manual_entrypoints() {
let options = build::BuildOptions::default()
.with_metrics_enabled(true)
.with_sql_update_policy(Some(build::BuildSqlUpdatePolicy::PublicPrimaryKeyOnly));
assert!(options.metrics_enabled());
assert_eq!(
options.sql_update_policy(),
Some(build::BuildSqlUpdatePolicy::PublicPrimaryKeyOnly)
);
assert_eq!(
build::GeneratedBuildTarget::default(),
build::GeneratedBuildTarget::Unknown
);
}
#[allow(dead_code)]
fn build_facade_macros_resolve() -> Result<(), Box<dyn std::error::Error>> {
build::build_configured_canister!((), "crate::Canister", "canister");
build::build_with_options!("crate::Canister", build::BuildOptions::default());
Ok(())
}
}