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