Skip to main content

good_ormning/
lib.rs

1#![cfg_attr(all(feature = "pg", feature = "sqlite"), doc = include_str!("../readme.md"))]
2
3#[cfg(feature = "pg")]
4pub mod pg;
5#[cfg(feature = "sqlite")]
6pub mod sqlite;
7pub mod runtime;
8
9pub use good_ormning_core::{
10    utils,
11    graphmigrate,
12    QueryResCount,
13};
14
15/// Create a module containing the generated code for a database.
16///
17/// # Parameters
18///
19/// * `$vis` - (Optional) Visibility of the module (e.g., `pub`).
20///
21/// * `$mod_name` - The name of the module to create.
22///
23/// * `$db_name` - (Optional) The database name string literal. Must match the name
24///   passed to `generate`.
25///
26/// # Example
27///
28/// ```rust,ignore
29/// good_module!(dbm);
30/// good_module!(pub my_db, "custom_db");
31/// ```
32#[macro_export]
33macro_rules! good_module{
34    ($vis: vis $mod_name: ident) => {
35        #[allow(unused)] $vis mod $mod_name {
36            include!(concat!(env!("OUT_DIR"), "/good_ormning_.rs"));
37        }
38    };
39    ($vis: vis $mod_name: ident, $db_name: literal) => {
40        #[allow(unused)] $vis mod $mod_name {
41            include!(concat!(env!("OUT_DIR"), "/good_ormning_", $db_name, ".rs"));
42        }
43    };
44}
45
46#[cfg(feature = "pg")]
47pub use crate::pg::{
48    PgType,
49    PgFieldTypeBuilder,
50    pg_type_i32,
51    pg_type_i64,
52    pg_type_u32,
53    pg_type_f32,
54    pg_type_f64,
55    pg_type_bool,
56    pg_type_bytes,
57    pg_type_str,
58    GenerateArgs as PgGenerateArgs,
59};
60#[cfg(all(feature = "pg", feature = "chrono"))]
61pub use crate::pg::pg_type_utctime_s_chrono;
62#[cfg(all(feature = "pg", feature = "jiff"))]
63pub use crate::pg::pg_type_utctime_s_jiff;
64#[cfg(feature = "sqlite")]
65pub use crate::sqlite::{
66    SqliteType,
67    SqliteFieldTypeBuilder,
68    sqlite_type_i32,
69    sqlite_type_i64,
70    sqlite_type_u32,
71    sqlite_type_f32,
72    sqlite_type_f64,
73    sqlite_type_bool,
74    sqlite_type_bytes,
75    sqlite_type_str,
76    GenerateArgs as SqliteGenerateArgs,
77};
78#[cfg(all(feature = "sqlite", feature = "chrono"))]
79pub use crate::sqlite::sqlite_type_utctime_s_chrono;
80#[cfg(all(feature = "sqlite", feature = "jiff"))]
81pub use crate::sqlite::sqlite_type_utctime_s_jiff;