pub mod macros;
pub use macros::log_include_hydration_failure;
pub const STANDARD_ENDPOINT_COUNT: usize = 12;
pub mod config;
pub mod crud;
pub mod entity;
pub mod repository;
pub mod extractors;
pub mod http;
pub mod grpc;
pub mod builder;
pub mod utils;
pub mod persistence;
pub mod specification;
pub mod registry;
pub mod module;
pub mod module_registry;
pub mod domain_service;
pub mod command;
pub mod query;
pub mod value_object;
pub mod aggregate;
pub mod error;
pub mod service;
pub mod violation;
pub mod write_guard;
pub mod usecase;
pub mod validation;
pub mod policy;
pub mod bulk;
pub mod integration;
pub mod cqrs;
pub mod graphql;
pub mod trigger;
pub mod flow;
pub mod projection;
pub mod state_machine;
#[cfg(feature = "openapi")]
pub mod openapi;
pub use trigger::{
TriggerHandler, TriggerEvent, TriggerContext, TriggerContextMut,
ActionExecutor, TriggerRegistry,
};
pub use entity::*;
pub use repository::*;
pub use grpc::*;
pub use builder::*;
pub use config::{
BackboneConfig, ConfigError, ConfigResult, ConfigLoader,
AppConfig, Environment,
ServerConfig,
DatabaseConfig, CacheConfig,
ModulesConfig, SapiensConfig, PostmanConfig, BucketConfig,
SapiensAuthConfig, PasswordHasherConfig, SapiensLockoutConfig,
SmtpConfig, TemplatesConfig, StorageConfig,
LoggingConfig, LoggingFileConfig,
MonitoringConfig,
ContextsConfig, RedisEventBusConfig,
FeaturesConfig, RateLimitingConfig,
SecurityConfig, CsrfConfig, SecurityHeadersConfig,
ConfigurationBus, ConfigValue, ConfigChangeEvent,
};
pub use http::{
CrudService,
BackboneCrudHandler,
BackboneHttpHandler,
AccessScope,
ApiResponse,
PaginatedResponse,
PaginatedApiResponse,
PaginationResponse,
BulkResponse,
BulkCreateRequest,
ListQueryParams,
ListRequest,
UpsertRequest,
FilterOptions,
SortOrder,
BatchIdsRequest,
BulkUpdateItem,
BulkPatchItem,
BulkPatchRequest,
PaginationRequest,
};
#[cfg(feature = "openapi")]
pub use openapi::BackboneComponents;
pub use utils::{
BackboneError, PaginationParams, PaginationMeta as BackbonePaginationMeta,
now, days_ago, days_from_now, hours_ago, hours_from_now, minutes_from_now,
new_id, new_id_string, parse_id, is_valid_uuid,
is_valid_email, is_valid_username, normalize_string,
};
pub use persistence::{
CrudRepository, PersistentEntity, RepositoryError, PartialUpdatable, SearchableRepository, Versioned,
InMemoryRepository,
CrudServiceAdapter, SimpleCrudServiceAdapter, AdapterError,
};
pub use specification::{
Specification,
AndSpecification, OrSpecification, NotSpecification,
SpecificationResult, SpecificationEvaluator,
AlwaysTrue, AlwaysFalse, PredicateSpecification,
predicate,
};
#[cfg(feature = "postgres")]
pub use persistence::{PostgresRepository, PostgresRepositoryBuilder, PostgresEntity};
pub use registry::{
ModuleService,
ServiceRegistry,
ServiceHealth, HealthStatus, RegistryHealth, RegistryStatistics,
ServiceDescriptor,
};
pub use module::{
BackboneModule,
MigrationInfo,
SeedInfo,
};
pub use module_registry::{
ModuleRegistry,
ModuleRegistryError,
ModuleRegistryResult,
};
pub use domain_service::{DomainService, TransactionalDomainService};
pub use command::{Command, CommandHandler, CommandDispatcher, ValidatableCommand, ValidatingCommandHandler};
pub use query::{
Query, QueryHandler, QueryDispatcher,
CacheableQuery, PaginatedQuery, PaginatedQueryResult,
};
pub use value_object::{ValueObject, OptionalValueObject, ValueObjectError};
pub use aggregate::{AggregateRoot, EventSourcedAggregate, InvariantAggregate, AggregateMetadata};
pub use error::{ModuleError, ErrorCategory, ErrorResponse, CommonError};
pub use violation::{code_from_constraint, Violation};
pub use write_guard::{AllowAll, GuardOutcome, WriteCtx, WriteGuard, WriteKind};
pub use service::{
GenericCrudService, ServiceError, ServiceResult,
FromCreateDto, ApplyUpdateDto, ServiceLifecycle, NoOpLifecycle,
};
pub use usecase::{
UseCaseError, UseCaseResult,
UseCaseHooks, DefaultHooks,
UseCaseService, EntityFactory, EntityUpdater,
CreateUseCase, UpdateUseCase, GetUseCase, DeleteUseCase,
ListUseCase, ListParams, ListResult, ListService,
};
pub use validation::{
ValidationError, ValidationErrors, FieldRule, EntityValidator,
RequiredString, MaxLength, NonNegative, OptionalNotBlank, Regex, RequiredUuid,
};
pub use policy::{
PolicyContext, PolicyOutcome, PolicyDecision, DomainPolicy,
PermitAllPolicy, DenyAllPolicy,
AllOfPolicy, AnyOfPolicy, NotPolicy,
};
pub use bulk::{
BulkFailureMode, BulkOperationConfig, BulkItemResult, BulkOperationResult,
BulkOperationProgress, BulkCapableService, GenericBulkService,
};
pub use integration::{
ModuleAdapter, ProjectionAdapter, IntegrationError,
EventBridge, IdentityAdapter, identity_adapter,
};
pub use cqrs::{
GenericCreateCommand, GenericUpdateCommand, GenericDeleteCommand, GenericRestoreCommand,
GenericGetQuery, GenericListQuery, GenericListDeletedQuery,
GenericCommandHandler, GenericQueryHandler,
CqrsService, CqrsReadService,
};
pub use graphql::{
GenericGraphQLResolver, GraphQLCapableService,
GraphQLListResult, GraphQLPaginationInput,
};
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
pub const STANDARD_ENDPOINTS: [&str; 11] = [
"GET /api/v1/{collection}",
"POST /api/v1/{collection}",
"GET /api/v1/{collection}/:id",
"PUT /api/v1/{collection}/:id",
"PATCH /api/v1/{collection}/:id",
"DELETE /api/v1/{collection}/:id",
"POST /api/v1/{collection}/bulk",
"POST /api/v1/{collection}/upsert",
"GET /api/v1/{collection}/trash",
"POST /api/v1/{collection}/:id/restore",
"DELETE /api/v1/{collection}/empty",
];