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