Skip to main content

backbone_orm/
lib.rs

1//! Backbone Framework ORM
2//!
3//! Database layer with PostgreSQL support and generic repository patterns.
4//!
5//! # Features
6//!
7//! - PostgreSQL repository with migrations
8//! - Query builder for type-safe queries
9//! - Connection pooling
10//! - Database seeding utilities
11//! - In-memory store for testing
12
13pub mod repository;
14pub mod secret_registry;
15pub mod company_scope;
16pub mod org_scope;
17pub mod audit_context;
18pub mod generic_repository;
19pub mod migrations;
20pub mod query_builder;
21pub mod connection;
22pub mod seeding;
23pub mod raw_query;
24pub mod filter;
25pub mod in_memory;
26
27// Include test modules
28#[cfg(test)]
29mod repository_tests;
30#[cfg(test)]
31mod migrations_tests;
32#[cfg(test)]
33mod query_builder_tests;
34#[cfg(test)]
35mod seeding_tests;
36#[cfg(test)]
37mod raw_query_tests;
38#[cfg(test)]
39mod qualify_relation_tests;
40
41// Re-export commonly used types
42pub use repository::*;
43pub use company_scope::{current_company, with_company_scope};
44pub use org_scope::{
45    current_org_scope, resolve_org_scope, with_org_request_scope, with_org_request_scope_and_audit,
46    OrgScope, OrgScopeError,
47};
48pub use audit_context::{RequestAuditContext, AUDIT_CONTEXT_VARS};
49pub use generic_repository::{
50    and_conditions, fetch_by_ids_as_json, strip_client_company_filters, company_fence,
51    qualify_relation_table, EntityRepoMeta, GenericCrudRepository, HardDelete, MissingCompanyScope,
52    SoftDelete,
53};
54pub use migrations::*;
55pub use query_builder::*;
56pub use connection::*;
57pub use seeding::*;
58pub use raw_query::*;
59// Re-export filter module types with aliases to avoid conflicts with repository types
60// The repository's FilterCondition/SortDirection are kept for backward compatibility
61pub use filter::{
62    QueryFilter,
63    FilterOperator as QueryFilterOperator,
64    FilterCondition as QueryFilterCondition,
65    FilterValue,
66    FilterLogical,
67    SortDirection as FilterSortDirection,
68    SortSpec,
69    FilterableEntity,
70    parse_filters,
71    is_valid_field,
72    sanitize_field_name,
73};
74pub use in_memory::InMemoryStore;
75
76/// ORM version
77pub const VERSION: &str = env!("CARGO_PKG_VERSION");
78
79/// Database connection traits and utilities
80pub use sqlx::postgres::PgPool;
81pub use sqlx::postgres::PgPoolOptions;
82
83/// PostgreSQL specific types
84pub use sqlx::types::chrono::NaiveDateTime;
85pub use sqlx::types::uuid::Uuid;