1#![cfg_attr(test, allow(clippy::expect_used, clippy::unwrap_used))]
44
45extern crate self as valence_core;
46
47pub mod actor;
48pub mod actor_policy;
49pub mod admin_entity_delete;
50pub mod backend;
51pub mod batch;
52pub mod compiled_query;
53pub mod compiled_query_factory;
54pub mod connection;
55pub mod currency;
56pub mod database_retry;
57pub mod datetime_unix;
58pub mod deletion;
59pub mod entity;
60pub mod error;
61pub mod evaluator;
62pub mod iter;
63pub mod json_as;
64pub mod known_engines;
65pub mod model;
66pub mod owner_ref;
67pub mod ownership;
68pub mod ports;
69pub mod privacy;
70pub mod privacy_policies;
71pub mod query;
72pub mod query_compiler;
73pub mod query_compiler_registry;
74pub mod read_cache;
75pub mod record_id;
76pub mod redact;
77pub mod reference;
78pub mod register_logical;
79pub mod registry;
80pub mod request_cache;
81pub mod router;
82pub mod router_key;
83pub mod row_json;
84pub mod runtime;
85pub mod safe_ident;
86pub mod schema;
87pub mod schema_api;
88pub mod schema_types;
89pub mod side_effect;
90pub mod storage_layout;
91pub mod trait_registry;
92pub mod trait_schema;
93pub mod ttl;
94pub mod validation;
95
96#[cfg(feature = "instrumentation")]
97pub mod instrumentation;
98
99#[doc(hidden)]
101pub mod __internal {
102 pub use crate::compiled_query::CompiledQuery;
103 pub use crate::query_compiler::QueryCompiler;
104}
105
106pub use actor::Actor;
107pub use actor_policy::{
108 is_system_shaped_actor, ActorJsonPolicy, ActorTrust, RejectExternalSystemActor,
109};
110pub use admin_entity_delete::{queue_delete_entity, queue_delete_entity_returning_run_id};
111#[cfg(feature = "compiler-indradb")]
112pub use backend::IndraQueryCompiler;
113#[cfg(feature = "compiler-mongodb")]
114pub use backend::MongoQueryCompiler;
115#[cfg(feature = "compiler-redis")]
116pub use backend::RedisQueryCompiler;
117#[cfg(feature = "compiler-sql")]
118pub use backend::SqlQueryCompiler;
119#[cfg(feature = "compiler-surreal")]
120pub use backend::SurrealQueryCompiler;
121pub use backend::{BackendCapabilities, DatabaseBackend};
122pub use batch::BatchCreatable;
123pub use compiled_query::CompiledQuery;
124pub use connection::{
125 extract_id_from_record, extract_id_from_record_display, extract_id_from_select_value,
126 id_from_model, Cardinality, IdHolder, OnDelete,
127};
128pub use currency::{Currency, CurrencyCode, CurrencyError, ParseCurrencyCodeError};
129pub use database_retry::retry_on_database_tx_conflict;
130pub use deletion::{
131 apply_deletion_node, check_dag_delete_privacy, check_dag_delete_privacy_with_registry,
132 dispatch, is_deletion_dispatcher_registered, register_deletion_dispatcher,
133 register_noop_deletion_dispatcher_for_tests, DeletionRequest, DeletionService,
134};
135#[doc(hidden)]
136pub use deletion::{
137 dispatch_queued_delete_side_effects, DeleteSideEffectDescriptor, DeleteSideEffectDispatchFn,
138};
139pub use entity::ValenceEntity;
140pub use error::{Error, Result};
141pub use evaluator::{
142 Database, DatabaseEvaluator, DatabaseFromEngine, ResolverContext, DEFAULT_IN_MEMORY,
143 DEFAULT_IN_MEMORY_ROUTER_KEY,
144};
145pub use iter::{
146 find_iter_descriptor, iter_descriptors_for_table, IterDescriptor, IterEvaluation,
147 IterExecuteFn, IterShouldRunFn,
148};
149pub use known_engines::KnownEngines;
150pub use model::{FieldOperation, Model, PrivacyError, SchemaMetadata};
151pub use owner_ref::{OwnerKind, OwnerRef, OwnershipConfig};
152pub use ownership::OwnershipService;
153pub use ports::actor::{ActorContext, ActorFactory, JsonActorContext, JsonActorFactory};
154pub use ports::endpoints::{
155 DatabaseEndpointResolver, EnvEndpointResolver, NoopEndpointResolver, StaticEndpointResolver,
156};
157pub use ports::secrets::{EnvSecretProvider, NoOpSecretProvider, SecretProvider};
158pub use privacy::{
159 privacy_bypass_active, PolicyEvaluator, PrivacyEvaluator, PrivacyOperation, PrivacyRule,
160 PRIVACY_BYPASS_ENV, PRIVACY_BYPASS_FORCE_ON_ENV,
161};
162pub use query::{
163 DateTimePredicate, HopSource, HopType, IdOnlyRecord, IntPredicate, NullPredicate, QueryCore,
164 RecordPredicate, SortDirection, StringPredicate, MAX_QUERY_LIMIT, MAX_QUERY_OFFSET,
165};
166pub use query_compiler::QueryCompiler;
167pub use query_compiler_registry::{
168 compile_for_engine, global_compiler_registry, QueryCompilerRegistry,
169};
170pub use read_cache::{
171 clear_for_test, get_record_via_cache, get_record_with_ownership_bundle_via_cache, invalidate,
172 invalidate_for_backend, read_cache_enabled,
173};
174pub use record_id::RecordId;
175pub use redact::{redact_credentials_in_text, redact_endpoint};
176pub use reference::{Reference, ReferencedEntity, WithReference};
177pub use register_logical::{
178 register_backend_logical_names, register_backend_logical_names_slices,
179 RegisterBackendLogicalNamesOptions,
180};
181pub use request_cache::RequestPermissionCache;
182pub use router::DatabaseRouter;
183pub use router_key::router_key;
184pub use runtime::{
185 RouterValenceFactory, RouterValenceFactoryConfig, Valence, ValenceBuilder, ValenceFactory,
186};
187pub use schema::{
188 schema_connections_for_table, SchemaConnectionsOverlayInit, SchemaMetadataInit,
189 SchemaMetadataStruct, SchemaRegistry,
190};
191pub use schema_api::{
192 ForeignKeyRef, Schema, SchemaConnection, SchemaEdge, SchemaField, SchemaMeta, SchemaPolicies,
193 SchemaPolicyRule, SchemaPolicyRules, SchemaPrivacy,
194};
195pub use schema_types::{FieldType, JsonAsSerdeError, Role, Validator};
196pub use side_effect::{FieldChange, Mutation, MutationKind, SideEffect};
197pub use storage_layout::{
198 AdditiveOp, FieldStorage, LayoutDiff, LayoutField, SqlColumnType, StorageLayout,
199 SurrealFieldType,
200};
201pub use trait_registry::TraitRegistry;
202pub use trait_schema::{
203 TraitDefinition, TraitDefinitionInit, TraitFieldDef, TraitImplementor, TraitPolicies,
204 TraitPolicyRules,
205};
206pub use ttl::{
207 list_ttl_table_names, prepare_create_content, reset_ttl_warn_state_for_tests,
208 ttl_warn_emit_count_for_tests, BackendTtlCapability, SchemaTtlPolicy, EXPIRE_AT_FIELD,
209};
210pub use valence_telemetry::{ConsoleSink, NoOpSink, TelemetrySink};
211
212#[cfg(feature = "instrumentation")]
213pub use instrumentation::{wrap_backend, InstrumentedBackend, MutationTimer};
214
215pub use inventory;