Skip to content

Commit 1c7b3d0

Browse files
feat: new derive feature flag (#3113)
* feat: new derive feature flag * doc: add new derive flag to readme * fix: macros feature flag cfg
1 parent 7102a7a commit 1c7b3d0

File tree

7 files changed

+25
-6
lines changed

7 files changed

+25
-6
lines changed

Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@ rustdoc-args = ["--cfg", "docsrs"]
5353

5454
[features]
5555
default = ["any", "macros", "migrate", "json"]
56-
macros = ["sqlx-macros"]
56+
57+
derive = ["sqlx-macros/derive"]
58+
macros = ["derive", "sqlx-macros/macros"]
5759
migrate = ["sqlx-core/migrate", "sqlx-macros?/migrate", "sqlx-mysql?/migrate", "sqlx-postgres?/migrate", "sqlx-sqlite?/migrate"]
5860

5961
# intended mainly for CI and docs

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,8 @@ be removed in the future.
175175

176176
- `any`: Add support for the `Any` database driver, which can proxy to a database driver at runtime.
177177

178+
- `derive`: Add support for the derive family macros, those are `FromRow`, `Type`, `Encode`, `Decode`.
179+
178180
- `macros`: Add support for the `query*!` macros, which allows compile-time checked queries.
179181

180182
- `migrate`: Add support for the migration management and `migrate!` macro, which allow compile-time embedded migrations.

sqlx-macros-core/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ _tls-native-tls = ["sqlx-core/_tls-native-tls"]
1818
_tls-rustls = ["sqlx-core/_tls-rustls"]
1919

2020
# SQLx features
21+
derive = []
22+
macros = []
2123
migrate = ["sqlx-core/migrate"]
2224

2325
# database

sqlx-macros-core/src/lib.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
feature(track_path)
2020
)]
2121

22+
#[cfg(feature = "macros")]
2223
use crate::query::QueryDriver;
2324

2425
pub type Error = Box<dyn std::error::Error>;
@@ -28,15 +29,19 @@ pub type Result<T> = std::result::Result<T, Error>;
2829
mod common;
2930
mod database;
3031

32+
#[cfg(feature = "derive")]
3133
pub mod derives;
34+
#[cfg(feature = "macros")]
3235
pub mod query;
3336

37+
#[cfg(feature = "macros")]
3438
// The compiler gives misleading help messages about `#[cfg(test)]` when this is just named `test`.
3539
pub mod test_attr;
3640

3741
#[cfg(feature = "migrate")]
3842
pub mod migrate;
3943

44+
#[cfg(feature = "macros")]
4045
pub const FOSS_DRIVERS: &[QueryDriver] = &[
4146
#[cfg(feature = "mysql")]
4247
QueryDriver::new::<sqlx_mysql::MySql>(),

sqlx-macros/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ _tls-native-tls = ["sqlx-macros-core/_tls-native-tls"]
2121
_tls-rustls = ["sqlx-macros-core/_tls-rustls"]
2222

2323
# SQLx features
24+
derive = ["sqlx-macros-core/derive"]
25+
macros = ["sqlx-macros-core/macros"]
2426
migrate = ["sqlx-macros-core/migrate"]
2527

2628
# database

sqlx-macros/src/lib.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use quote::quote;
44

55
use sqlx_macros_core::*;
66

7+
#[cfg(feature = "macros")]
78
#[proc_macro]
89
pub fn expand_query(input: TokenStream) -> TokenStream {
910
let input = syn::parse_macro_input!(input as query::QueryMacroInput);
@@ -21,6 +22,7 @@ pub fn expand_query(input: TokenStream) -> TokenStream {
2122
}
2223
}
2324

25+
#[cfg(feature = "derive")]
2426
#[proc_macro_derive(Encode, attributes(sqlx))]
2527
pub fn derive_encode(tokenstream: TokenStream) -> TokenStream {
2628
let input = syn::parse_macro_input!(tokenstream as syn::DeriveInput);
@@ -30,6 +32,7 @@ pub fn derive_encode(tokenstream: TokenStream) -> TokenStream {
3032
}
3133
}
3234

35+
#[cfg(feature = "derive")]
3336
#[proc_macro_derive(Decode, attributes(sqlx))]
3437
pub fn derive_decode(tokenstream: TokenStream) -> TokenStream {
3538
let input = syn::parse_macro_input!(tokenstream as syn::DeriveInput);
@@ -39,6 +42,7 @@ pub fn derive_decode(tokenstream: TokenStream) -> TokenStream {
3942
}
4043
}
4144

45+
#[cfg(feature = "derive")]
4246
#[proc_macro_derive(Type, attributes(sqlx))]
4347
pub fn derive_type(tokenstream: TokenStream) -> TokenStream {
4448
let input = syn::parse_macro_input!(tokenstream as syn::DeriveInput);
@@ -48,6 +52,7 @@ pub fn derive_type(tokenstream: TokenStream) -> TokenStream {
4852
}
4953
}
5054

55+
#[cfg(feature = "derive")]
5156
#[proc_macro_derive(FromRow, attributes(sqlx))]
5257
pub fn derive_from_row(input: TokenStream) -> TokenStream {
5358
let input = syn::parse_macro_input!(input as syn::DeriveInput);
@@ -77,6 +82,7 @@ pub fn migrate(input: TokenStream) -> TokenStream {
7782
}
7883
}
7984

85+
#[cfg(feature = "macros")]
8086
#[proc_macro_attribute]
8187
pub fn test(args: TokenStream, input: TokenStream) -> TokenStream {
8288
let input = syn::parse_macro_input!(input as syn::ItemFn);

src/lib.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,12 @@ pub use sqlx_sqlite::{self as sqlite, Sqlite, SqliteConnection, SqliteExecutor,
4949
#[cfg_attr(docsrs, doc(cfg(feature = "any")))]
5050
pub use crate::any::{reexports::*, Any, AnyExecutor};
5151

52-
#[cfg(feature = "macros")]
52+
#[cfg(any(feature = "derive", feature = "macros"))]
5353
#[doc(hidden)]
5454
pub extern crate sqlx_macros;
5555

5656
// derives
57-
#[cfg(feature = "macros")]
57+
#[cfg(feature = "derive")]
5858
#[doc(hidden)]
5959
pub use sqlx_macros::{FromRow, Type};
6060

@@ -103,7 +103,7 @@ pub use sqlx_core::rt as __rt;
103103
pub mod types {
104104
pub use sqlx_core::types::*;
105105

106-
#[cfg(feature = "macros")]
106+
#[cfg(feature = "derive")]
107107
#[doc(hidden)]
108108
pub use sqlx_macros::Type;
109109
}
@@ -112,7 +112,7 @@ pub mod types {
112112
pub mod encode {
113113
pub use sqlx_core::encode::{Encode, IsNull};
114114

115-
#[cfg(feature = "macros")]
115+
#[cfg(feature = "derive")]
116116
#[doc(hidden)]
117117
pub use sqlx_macros::Encode;
118118
}
@@ -123,7 +123,7 @@ pub use self::encode::Encode;
123123
pub mod decode {
124124
pub use sqlx_core::decode::Decode;
125125

126-
#[cfg(feature = "macros")]
126+
#[cfg(feature = "derive")]
127127
#[doc(hidden)]
128128
pub use sqlx_macros::Decode;
129129
}

0 commit comments

Comments
 (0)