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