1pub mod config;
55pub mod core;
56pub mod entities;
57pub mod events;
58pub mod links;
59pub mod server;
60pub mod storage;
61
62pub mod prelude {
64 pub use crate::core::{
66 auth::{AuthContext, AuthPolicy, AuthProvider, NoAuthProvider},
67 entity::{Data, Entity, Link},
68 field::{FieldFormat, FieldValue},
69 link::{LinkAuthConfig, LinkDefinition, LinkEntity},
70 module::{EntityCreator, EntityFetcher, Module},
71 pluralize::Pluralizer,
72 query::{PaginatedResponse, PaginationMeta, QueryParams},
73 service::{DataService, LinkService},
74 store::QueryableStore,
75 validation::{EntityValidationConfig, Validated},
76 };
77
78 pub use crate::{
80 add_filters_for_field, add_validators_for_field, data_fields, entity_fields,
81 impl_data_entity, impl_data_entity_validated, impl_link_entity, link_fields,
82 };
83
84 pub use crate::links::{
86 handlers::{
87 AppState, create_link, delete_link, get_link, list_available_links, list_links,
88 update_link,
89 },
90 registry::{LinkDirection, LinkRouteRegistry, RouteInfo},
91 };
92
93 #[cfg(feature = "dynamodb")]
95 pub use crate::storage::{DynamoDBDataService, DynamoDBLinkService};
96 pub use crate::storage::{InMemoryDataService, InMemoryLinkService};
97 #[cfg(feature = "lmdb")]
98 pub use crate::storage::{LmdbDataService, LmdbLinkService};
99 #[cfg(feature = "mongodb_backend")]
100 pub use crate::storage::{MongoDataService, MongoLinkService};
101 #[cfg(feature = "mysql")]
102 pub use crate::storage::{MysqlDataService, MysqlLinkService};
103 #[cfg(feature = "neo4j")]
104 pub use crate::storage::{Neo4jDataService, Neo4jLinkService};
105 #[cfg(feature = "postgres")]
106 pub use crate::storage::{PostgresDataService, PostgresLinkService};
107 #[cfg(feature = "scylladb")]
108 pub use crate::storage::{ScyllaDataService, ScyllaLinkService};
109
110 pub use crate::config::{
112 EntityAuthConfig, EntityConfig, EventsConfig, LinksConfig, SinkConfig, SinkType,
113 ValidationRule,
114 };
115
116 pub use crate::server::{EntityDescriptor, EntityRegistry, ServerBuilder};
118
119 pub use anyhow::Result;
121 pub use async_trait::async_trait;
122 pub use chrono::{DateTime, Utc};
123 pub use serde::{Deserialize, Serialize};
124 pub use uuid::Uuid;
125
126 pub use axum::{
128 Router,
129 extract::{Path, State},
130 http::HeaderMap,
131 routing::{delete, get, post, put},
132 };
133}