1pub mod macros;
49pub use macros::log_include_hydration_failure;
50
51pub const STANDARD_ENDPOINT_COUNT: usize = 12;
53
54pub mod config;
55pub mod crud;
56pub mod entity;
57pub mod repository;
58pub mod extractors;
59pub mod http;
60pub mod grpc;
61pub mod builder;
62pub mod utils;
63pub mod persistence;
64pub mod specification;
65pub mod registry;
66
67pub mod module;
69pub mod module_registry;
70
71pub mod domain_service;
73pub mod command;
74pub mod query;
75pub mod value_object;
76pub mod aggregate;
77pub mod error;
78
79pub mod service;
81pub mod usecase;
82pub mod validation;
83pub mod policy;
84pub mod bulk;
85pub mod integration;
86pub mod cqrs;
87pub mod graphql;
88
89pub mod trigger;
91pub mod flow;
92pub mod projection;
93pub mod state_machine;
94
95#[cfg(feature = "openapi")]
97pub mod openapi;
98
99pub use trigger::{
100 TriggerHandler, TriggerEvent, TriggerContext, TriggerContextMut,
101 ActionExecutor, TriggerRegistry,
102};
103
104pub use entity::*;
106pub use repository::*;
107pub use grpc::*;
108pub use builder::*;
109
110pub use config::{
112 BackboneConfig, ConfigError, ConfigResult, ConfigLoader,
113 AppConfig, Environment,
115 ServerConfig,
117 DatabaseConfig, CacheConfig,
119 ModulesConfig, SapiensConfig, PostmanConfig, BucketConfig,
121 SapiensAuthConfig, PasswordHasherConfig, SapiensLockoutConfig,
122 SmtpConfig, TemplatesConfig, StorageConfig,
123 LoggingConfig, LoggingFileConfig,
125 MonitoringConfig,
127 ContextsConfig, RedisEventBusConfig,
129 FeaturesConfig, RateLimitingConfig,
131 SecurityConfig, CsrfConfig, SecurityHeadersConfig,
133 ConfigurationBus, ConfigValue, ConfigChangeEvent,
135};
136
137pub use http::{
139 CrudService,
141 BackboneCrudHandler,
142 BackboneHttpHandler,
143 AccessScope,
145 ApiResponse,
147 PaginatedResponse,
148 PaginatedApiResponse,
149 PaginationResponse,
150 BulkResponse,
151 BulkCreateRequest,
152 ListQueryParams,
154 ListRequest,
155 UpsertRequest,
156 FilterOptions,
157 SortOrder,
158 BatchIdsRequest,
159 BulkUpdateItem,
160 BulkPatchItem,
161 BulkPatchRequest,
162 PaginationRequest,
164};
165
166#[cfg(feature = "openapi")]
168pub use openapi::BackboneComponents;
169
170pub use utils::{
172 BackboneError, PaginationParams, PaginationMeta as BackbonePaginationMeta,
173 now, days_ago, days_from_now, hours_ago, hours_from_now, minutes_from_now,
174 new_id, new_id_string, parse_id, is_valid_uuid,
175 is_valid_email, is_valid_username, normalize_string,
176};
177
178pub use persistence::{
180 CrudRepository, PersistentEntity, RepositoryError, PartialUpdatable, SearchableRepository, Versioned,
182 InMemoryRepository,
184 CrudServiceAdapter, SimpleCrudServiceAdapter, AdapterError,
186};
187
188pub use specification::{
190 Specification,
192 AndSpecification, OrSpecification, NotSpecification,
194 SpecificationResult, SpecificationEvaluator,
196 AlwaysTrue, AlwaysFalse, PredicateSpecification,
198 predicate,
200};
201
202#[cfg(feature = "postgres")]
204pub use persistence::{PostgresRepository, PostgresRepositoryBuilder, PostgresEntity};
205
206pub use registry::{
208 ModuleService,
210 ServiceRegistry,
212 ServiceHealth, HealthStatus, RegistryHealth, RegistryStatistics,
214 ServiceDescriptor,
216};
217
218pub use module::{
220 BackboneModule,
221 MigrationInfo,
222 SeedInfo,
223};
224
225pub use module_registry::{
226 ModuleRegistry,
227 ModuleRegistryError,
228 ModuleRegistryResult,
229};
230
231pub use domain_service::{DomainService, TransactionalDomainService};
233
234pub use command::{Command, CommandHandler, CommandDispatcher, ValidatableCommand, ValidatingCommandHandler};
235
236pub use query::{
237 Query, QueryHandler, QueryDispatcher,
238 CacheableQuery, PaginatedQuery, PaginatedQueryResult,
239};
240
241pub use value_object::{ValueObject, OptionalValueObject, ValueObjectError};
242
243pub use aggregate::{AggregateRoot, EventSourcedAggregate, InvariantAggregate, AggregateMetadata};
244
245pub use error::{ModuleError, ErrorCategory, ErrorResponse, CommonError};
246
247pub use service::{
249 GenericCrudService, ServiceError, ServiceResult,
250 FromCreateDto, ApplyUpdateDto, ServiceLifecycle, NoOpLifecycle,
251};
252
253pub use usecase::{
254 UseCaseError, UseCaseResult,
255 UseCaseHooks, DefaultHooks,
256 UseCaseService, EntityFactory, EntityUpdater,
257 CreateUseCase, UpdateUseCase, GetUseCase, DeleteUseCase,
258 ListUseCase, ListParams, ListResult, ListService,
259};
260
261pub use validation::{
262 ValidationError, ValidationErrors, FieldRule, EntityValidator,
263 RequiredString, MaxLength, NonNegative, OptionalNotBlank, Regex, RequiredUuid,
264};
265
266pub use policy::{
267 PolicyContext, PolicyOutcome, PolicyDecision, DomainPolicy,
268 PermitAllPolicy, DenyAllPolicy,
269 AllOfPolicy, AnyOfPolicy, NotPolicy,
270};
271
272pub use bulk::{
273 BulkFailureMode, BulkOperationConfig, BulkItemResult, BulkOperationResult,
274 BulkOperationProgress, BulkCapableService, GenericBulkService,
275};
276
277pub use integration::{
278 ModuleAdapter, ProjectionAdapter, IntegrationError,
279 EventBridge, IdentityAdapter, identity_adapter,
280};
281
282pub use cqrs::{
283 GenericCreateCommand, GenericUpdateCommand, GenericDeleteCommand, GenericRestoreCommand,
285 GenericGetQuery, GenericListQuery, GenericListDeletedQuery,
287 GenericCommandHandler, GenericQueryHandler,
289 CqrsService, CqrsReadService,
291};
292
293pub use graphql::{
294 GenericGraphQLResolver, GraphQLCapableService,
295 GraphQLListResult, GraphQLPaginationInput,
296};
297
298pub const VERSION: &str = env!("CARGO_PKG_VERSION");
303
304pub const STANDARD_ENDPOINTS: [&str; 11] = [
317 "GET /api/v1/{collection}",
318 "POST /api/v1/{collection}",
319 "GET /api/v1/{collection}/:id",
320 "PUT /api/v1/{collection}/:id",
321 "PATCH /api/v1/{collection}/:id",
322 "DELETE /api/v1/{collection}/:id",
323 "POST /api/v1/{collection}/bulk",
324 "POST /api/v1/{collection}/upsert",
325 "GET /api/v1/{collection}/trash",
326 "POST /api/v1/{collection}/:id/restore",
327 "DELETE /api/v1/{collection}/empty",
328];