From fc078306394ea305dd5ef89c7387e04cfdeba86b Mon Sep 17 00:00:00 2001 From: Austin Bonander Date: Fri, 22 Nov 2019 10:30:16 +0000 Subject: [PATCH] implement facade crate so macros can be used from same namespace --- .gitignore | 9 ++ Cargo.toml | 38 +++--- sqlx-core/Cargo.toml | 41 ++++++ {src => sqlx-core/src}/backend.rs | 0 {src => sqlx-core/src}/compiled.rs | 0 {src => sqlx-core/src}/connection.rs | 0 {src => sqlx-core/src}/describe.rs | 0 {src => sqlx-core/src}/deserialize.rs | 0 {src => sqlx-core/src}/error.rs | 0 {src => sqlx-core/src}/executor.rs | 0 {src => sqlx-core/src}/io/buf.rs | 0 {src => sqlx-core/src}/io/buf_mut.rs | 0 {src => sqlx-core/src}/io/buf_stream.rs | 0 {src => sqlx-core/src}/io/byte_str.rs | 0 {src => sqlx-core/src}/io/mod.rs | 0 sqlx-core/src/lib.rs | 116 +++++++++++++++++ {src => sqlx-core/src}/macros.rs | 0 {src => sqlx-core/src}/mariadb/backend.rs | 0 {src => sqlx-core/src}/mariadb/connection.rs | 0 {src => sqlx-core/src}/mariadb/error.rs | 0 {src => sqlx-core/src}/mariadb/establish.rs | 0 {src => sqlx-core/src}/mariadb/io/buf_ext.rs | 0 .../src}/mariadb/io/buf_mut_ext.rs | 0 {src => sqlx-core/src}/mariadb/io/mod.rs | 0 {src => sqlx-core/src}/mariadb/mod.rs | 0 .../mariadb/protocol/binary/com_stmt_close.rs | 0 .../mariadb/protocol/binary/com_stmt_exec.rs | 0 .../mariadb/protocol/binary/com_stmt_fetch.rs | 0 .../protocol/binary/com_stmt_prepare.rs | 0 .../protocol/binary/com_stmt_prepare_ok.rs | 0 .../mariadb/protocol/binary/com_stmt_reset.rs | 0 .../src}/mariadb/protocol/binary/mod.rs | 0 .../src}/mariadb/protocol/capabilities.rs | 0 .../protocol/connect/auth_switch_request.rs | 0 .../src}/mariadb/protocol/connect/initial.rs | 0 .../src}/mariadb/protocol/connect/mod.rs | 0 .../src}/mariadb/protocol/connect/response.rs | 0 .../mariadb/protocol/connect/ssl_request.rs | 0 .../src}/mariadb/protocol/encode.rs | 0 .../src}/mariadb/protocol/error_code.rs | 0 .../src}/mariadb/protocol/field.rs | 0 .../src}/mariadb/protocol/mod.rs | 0 .../mariadb/protocol/response/column_count.rs | 0 .../mariadb/protocol/response/column_def.rs | 0 .../src}/mariadb/protocol/response/eof.rs | 0 .../src}/mariadb/protocol/response/err.rs | 0 .../src}/mariadb/protocol/response/mod.rs | 0 .../src}/mariadb/protocol/response/ok.rs | 0 .../src}/mariadb/protocol/response/row.rs | 0 .../src}/mariadb/protocol/server_status.rs | 0 .../src}/mariadb/protocol/text/com_debug.rs | 0 .../src}/mariadb/protocol/text/com_init_db.rs | 0 .../src}/mariadb/protocol/text/com_ping.rs | 0 .../mariadb/protocol/text/com_process_kill.rs | 0 .../src}/mariadb/protocol/text/com_query.rs | 0 .../src}/mariadb/protocol/text/com_quit.rs | 0 .../mariadb/protocol/text/com_reset_conn.rs | 0 .../mariadb/protocol/text/com_set_option.rs | 0 .../src}/mariadb/protocol/text/com_sleep.rs | 0 .../mariadb/protocol/text/com_statistics.rs | 0 .../src}/mariadb/protocol/text/mod.rs | 0 .../src}/mariadb/protocol/types.rs | 0 {src => sqlx-core/src}/mariadb/query.rs | 0 {src => sqlx-core/src}/mariadb/row.rs | 0 .../src}/mariadb/types/binary.rs | 0 .../src}/mariadb/types/boolean.rs | 0 .../src}/mariadb/types/character.rs | 0 {src => sqlx-core/src}/mariadb/types/mod.rs | 0 .../src}/mariadb/types/numeric.rs | 0 {src => sqlx-core/src}/pool.rs | 0 {src => sqlx-core/src}/postgres/backend.rs | 0 {src => sqlx-core/src}/postgres/connection.rs | 0 {src => sqlx-core/src}/postgres/error.rs | 0 {src => sqlx-core/src}/postgres/mod.rs | 0 .../src}/postgres/protocol/authentication.rs | 0 .../postgres/protocol/backend_key_data.rs | 0 .../src}/postgres/protocol/bind.rs | 0 .../src}/postgres/protocol/cancel_request.rs | 0 .../src}/postgres/protocol/close.rs | 0 .../postgres/protocol/command_complete.rs | 0 .../src}/postgres/protocol/copy_data.rs | 0 .../src}/postgres/protocol/copy_done.rs | 0 .../src}/postgres/protocol/copy_fail.rs | 0 .../src}/postgres/protocol/data_row.rs | 0 .../src}/postgres/protocol/decode.rs | 0 .../src}/postgres/protocol/describe.rs | 0 .../src}/postgres/protocol/encode.rs | 0 .../src}/postgres/protocol/execute.rs | 0 .../src}/postgres/protocol/flush.rs | 0 .../src}/postgres/protocol/message.rs | 0 .../src}/postgres/protocol/mod.rs | 0 .../protocol/notification_response.rs | 0 .../protocol/parameter_description.rs | 0 .../postgres/protocol/parameter_status.rs | 0 .../src}/postgres/protocol/parse.rs | 0 .../postgres/protocol/password_message.rs | 0 .../src}/postgres/protocol/query.rs | 0 .../src}/postgres/protocol/ready_for_query.rs | 0 .../src}/postgres/protocol/response.rs | 0 .../src}/postgres/protocol/row_description.rs | 0 .../src}/postgres/protocol/startup_message.rs | 0 .../src}/postgres/protocol/sync.rs | 0 .../src}/postgres/protocol/terminate.rs | 0 {src => sqlx-core/src}/postgres/query.rs | 0 {src => sqlx-core/src}/postgres/raw.rs | 0 {src => sqlx-core/src}/postgres/row.rs | 0 .../src}/postgres/types/binary.rs | 0 .../src}/postgres/types/boolean.rs | 0 .../src}/postgres/types/character.rs | 0 {src => sqlx-core/src}/postgres/types/mod.rs | 0 .../src}/postgres/types/numeric.rs | 0 {src => sqlx-core/src}/postgres/types/uuid.rs | 0 {src => sqlx-core/src}/query.rs | 0 {src => sqlx-core/src}/row.rs | 0 {src => sqlx-core/src}/serialize.rs | 0 {src => sqlx-core/src}/sql.rs | 0 {src => sqlx-core/src}/types.rs | 0 {src => sqlx-core/src}/url.rs | 0 sqlx-macros/Cargo.toml | 4 +- sqlx-macros/src/lib.rs | 8 +- src/lib.rs | 119 +----------------- tests/sql-macro-test.rs | 8 +- 122 files changed, 197 insertions(+), 146 deletions(-) create mode 100644 sqlx-core/Cargo.toml rename {src => sqlx-core/src}/backend.rs (100%) rename {src => sqlx-core/src}/compiled.rs (100%) rename {src => sqlx-core/src}/connection.rs (100%) rename {src => sqlx-core/src}/describe.rs (100%) rename {src => sqlx-core/src}/deserialize.rs (100%) rename {src => sqlx-core/src}/error.rs (100%) rename {src => sqlx-core/src}/executor.rs (100%) rename {src => sqlx-core/src}/io/buf.rs (100%) rename {src => sqlx-core/src}/io/buf_mut.rs (100%) rename {src => sqlx-core/src}/io/buf_stream.rs (100%) rename {src => sqlx-core/src}/io/byte_str.rs (100%) rename {src => sqlx-core/src}/io/mod.rs (100%) create mode 100644 sqlx-core/src/lib.rs rename {src => sqlx-core/src}/macros.rs (100%) rename {src => sqlx-core/src}/mariadb/backend.rs (100%) rename {src => sqlx-core/src}/mariadb/connection.rs (100%) rename {src => sqlx-core/src}/mariadb/error.rs (100%) rename {src => sqlx-core/src}/mariadb/establish.rs (100%) rename {src => sqlx-core/src}/mariadb/io/buf_ext.rs (100%) rename {src => sqlx-core/src}/mariadb/io/buf_mut_ext.rs (100%) rename {src => sqlx-core/src}/mariadb/io/mod.rs (100%) rename {src => sqlx-core/src}/mariadb/mod.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/binary/com_stmt_close.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/binary/com_stmt_exec.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/binary/com_stmt_fetch.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/binary/com_stmt_prepare.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/binary/com_stmt_prepare_ok.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/binary/com_stmt_reset.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/binary/mod.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/capabilities.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/connect/auth_switch_request.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/connect/initial.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/connect/mod.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/connect/response.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/connect/ssl_request.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/encode.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/error_code.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/field.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/mod.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/response/column_count.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/response/column_def.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/response/eof.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/response/err.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/response/mod.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/response/ok.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/response/row.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/server_status.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/text/com_debug.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/text/com_init_db.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/text/com_ping.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/text/com_process_kill.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/text/com_query.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/text/com_quit.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/text/com_reset_conn.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/text/com_set_option.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/text/com_sleep.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/text/com_statistics.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/text/mod.rs (100%) rename {src => sqlx-core/src}/mariadb/protocol/types.rs (100%) rename {src => sqlx-core/src}/mariadb/query.rs (100%) rename {src => sqlx-core/src}/mariadb/row.rs (100%) rename {src => sqlx-core/src}/mariadb/types/binary.rs (100%) rename {src => sqlx-core/src}/mariadb/types/boolean.rs (100%) rename {src => sqlx-core/src}/mariadb/types/character.rs (100%) rename {src => sqlx-core/src}/mariadb/types/mod.rs (100%) rename {src => sqlx-core/src}/mariadb/types/numeric.rs (100%) rename {src => sqlx-core/src}/pool.rs (100%) rename {src => sqlx-core/src}/postgres/backend.rs (100%) rename {src => sqlx-core/src}/postgres/connection.rs (100%) rename {src => sqlx-core/src}/postgres/error.rs (100%) rename {src => sqlx-core/src}/postgres/mod.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/authentication.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/backend_key_data.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/bind.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/cancel_request.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/close.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/command_complete.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/copy_data.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/copy_done.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/copy_fail.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/data_row.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/decode.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/describe.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/encode.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/execute.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/flush.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/message.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/mod.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/notification_response.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/parameter_description.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/parameter_status.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/parse.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/password_message.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/query.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/ready_for_query.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/response.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/row_description.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/startup_message.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/sync.rs (100%) rename {src => sqlx-core/src}/postgres/protocol/terminate.rs (100%) rename {src => sqlx-core/src}/postgres/query.rs (100%) rename {src => sqlx-core/src}/postgres/raw.rs (100%) rename {src => sqlx-core/src}/postgres/row.rs (100%) rename {src => sqlx-core/src}/postgres/types/binary.rs (100%) rename {src => sqlx-core/src}/postgres/types/boolean.rs (100%) rename {src => sqlx-core/src}/postgres/types/character.rs (100%) rename {src => sqlx-core/src}/postgres/types/mod.rs (100%) rename {src => sqlx-core/src}/postgres/types/numeric.rs (100%) rename {src => sqlx-core/src}/postgres/types/uuid.rs (100%) rename {src => sqlx-core/src}/query.rs (100%) rename {src => sqlx-core/src}/row.rs (100%) rename {src => sqlx-core/src}/serialize.rs (100%) rename {src => sqlx-core/src}/sql.rs (100%) rename {src => sqlx-core/src}/types.rs (100%) rename {src => sqlx-core/src}/url.rs (100%) diff --git a/.gitignore b/.gitignore index ca1cc0c5..abf7d2ca 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,12 @@ Cargo.lock # Environment .env + + +#Added by cargo +# +#already existing elements are commented out + +/target +**/*.rs.bk +#Cargo.lock diff --git a/Cargo.toml b/Cargo.toml index 91b9c2f8..c40f8748 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,8 @@ +# This is the sqlx facade crate [workspace] members = [ ".", + "sqlx-core", "sqlx-macros", "examples/tide" ] @@ -12,36 +14,26 @@ license = "MIT OR Apache-2.0" description = "The Rust SQL Toolkit." edition = "2018" authors = [ - "Ryan Leckey " + "Ryan Leckey ", + "Austin Bonander " ] [features] -default = [] -unstable = [] -postgres = [] -mariadb = [] +default = ["macros"] +unstable = ["sqlx-core/unstable"] +postgres = ["sqlx-core/postgres", "sqlx-macros/postgres"] +mariadb = ["sqlx-core/mariadb", "sqlx-macros/mariadb"] +macros = ["sqlx-macros", "proc-macro-hack"] +uuid = ["sqlx-core/uuid", "sqlx-macros/uuid"] [dependencies] -async-std = { version = "1.1.0", features = ["attributes"] } -async-stream = "0.2.0" -async-trait = "0.1.18" -bitflags = "1.2.1" -byteorder = { version = "1.3.2", default-features = false } -bytes = "0.4.12" -crossbeam-queue = "0.2.0" -crossbeam-utils = { version = "0.7.0", default-features = false } -futures-channel = "0.3.1" -futures-core = "0.3.1" -futures-util = "0.3.1" -log = "0.4.8" -md-5 = "0.8.0" -memchr = "2.2.1" -url = "2.1.0" -uuid = { version = "0.8.1", optional = true } +sqlx-core = { version = "0.1.1-pre", path = "sqlx-core" } +sqlx-macros = { version = "0.1.0", path = "sqlx-macros", optional = true } +proc-macro-hack = { version = "0.5", optional = true } [dev-dependencies] +async-std = { version = "1.1.0", features = ["attributes"] } matches = "0.1.8" -sqlx-macros = { path = "sqlx-macros/", features = ["postgres", "mariadb", "uuid"] } criterion = "0.3.0" [profile.release] @@ -50,7 +42,7 @@ codegen-units = 1 [[test]] name = "sql-macro-test" -required-features = ["uuid"] +required-features = ["postgres", "uuid", "macros"] [[bench]] name = "postgres_protocol" diff --git a/sqlx-core/Cargo.toml b/sqlx-core/Cargo.toml new file mode 100644 index 00000000..8020b3fa --- /dev/null +++ b/sqlx-core/Cargo.toml @@ -0,0 +1,41 @@ +[package] +name = "sqlx-core" +version = "0.1.1-pre" +license = "MIT OR Apache-2.0" +description = "The Rust SQL Toolkit." +edition = "2018" +authors = [ + "Ryan Leckey ", + "Austin Bonander " +] + +[features] +default = [] +unstable = [] +postgres = [] +mariadb = [] + +[dependencies] +async-std = { version = "1.1.0", features = ["attributes"] } +async-stream = "0.2.0" +async-trait = "0.1.18" +bitflags = "1.2.1" +byteorder = { version = "1.3.2", default-features = false } +bytes = "0.4.12" +crossbeam-queue = "0.2.0" +crossbeam-utils = { version = "0.7.0", default-features = false } +futures-channel = "0.3.1" +futures-core = "0.3.1" +futures-util = "0.3.1" +log = "0.4.8" +md-5 = "0.8.0" +memchr = "2.2.1" +url = "2.1.0" +uuid = { version = "0.8.1", optional = true } + +[dev-dependencies] +matches = "0.1.8" + +[profile.release] +lto = true +codegen-units = 1 diff --git a/src/backend.rs b/sqlx-core/src/backend.rs similarity index 100% rename from src/backend.rs rename to sqlx-core/src/backend.rs diff --git a/src/compiled.rs b/sqlx-core/src/compiled.rs similarity index 100% rename from src/compiled.rs rename to sqlx-core/src/compiled.rs diff --git a/src/connection.rs b/sqlx-core/src/connection.rs similarity index 100% rename from src/connection.rs rename to sqlx-core/src/connection.rs diff --git a/src/describe.rs b/sqlx-core/src/describe.rs similarity index 100% rename from src/describe.rs rename to sqlx-core/src/describe.rs diff --git a/src/deserialize.rs b/sqlx-core/src/deserialize.rs similarity index 100% rename from src/deserialize.rs rename to sqlx-core/src/deserialize.rs diff --git a/src/error.rs b/sqlx-core/src/error.rs similarity index 100% rename from src/error.rs rename to sqlx-core/src/error.rs diff --git a/src/executor.rs b/sqlx-core/src/executor.rs similarity index 100% rename from src/executor.rs rename to sqlx-core/src/executor.rs diff --git a/src/io/buf.rs b/sqlx-core/src/io/buf.rs similarity index 100% rename from src/io/buf.rs rename to sqlx-core/src/io/buf.rs diff --git a/src/io/buf_mut.rs b/sqlx-core/src/io/buf_mut.rs similarity index 100% rename from src/io/buf_mut.rs rename to sqlx-core/src/io/buf_mut.rs diff --git a/src/io/buf_stream.rs b/sqlx-core/src/io/buf_stream.rs similarity index 100% rename from src/io/buf_stream.rs rename to sqlx-core/src/io/buf_stream.rs diff --git a/src/io/byte_str.rs b/sqlx-core/src/io/byte_str.rs similarity index 100% rename from src/io/byte_str.rs rename to sqlx-core/src/io/byte_str.rs diff --git a/src/io/mod.rs b/sqlx-core/src/io/mod.rs similarity index 100% rename from src/io/mod.rs rename to sqlx-core/src/io/mod.rs diff --git a/sqlx-core/src/lib.rs b/sqlx-core/src/lib.rs new file mode 100644 index 00000000..8f336df8 --- /dev/null +++ b/sqlx-core/src/lib.rs @@ -0,0 +1,116 @@ +#[macro_use] +mod macros; + +#[macro_use] +pub mod error; + +#[cfg(any(feature = "postgres", feature = "mariadb"))] +#[macro_use] +mod io; + +mod backend; +pub mod deserialize; + +#[cfg(any(feature = "postgres", feature = "mariadb"))] +mod url; + +#[macro_use] +mod row; + +mod connection; +mod executor; +mod pool; + +#[macro_use] +pub mod query; + +pub mod serialize; +mod sql; +pub mod types; + +mod describe; + +mod compiled; + +#[doc(inline)] +pub use self::{ + backend::Backend, + compiled::CompiledSql, + connection::Connection, + deserialize::FromSql, + error::{Error, Result}, + executor::Executor, + pool::Pool, + row::{FromSqlRow, Row}, + serialize::ToSql, + sql::{query, SqlQuery}, + types::HasSqlType, +}; + +#[doc(hidden)] +pub use types::HasTypeMetadata; + +#[cfg(feature = "mariadb")] +pub mod mariadb; + +#[cfg(feature = "mariadb")] +#[doc(inline)] +pub use mariadb::MariaDb; + +#[cfg(feature = "postgres")] +pub mod postgres; + +#[cfg(feature = "postgres")] +#[doc(inline)] +pub use self::postgres::Postgres; + +use std::marker::PhantomData; + +// These types allow the `sqlx_macros::sql!()` macro to polymorphically compare a +// given parameter's type to an expected parameter type even if the former +// is behind a reference or in `Option` + +#[doc(hidden)] +pub struct TyCons(PhantomData); + +impl TyCons { + pub fn new(_t: &T) -> TyCons { + TyCons(PhantomData) + } +} + +#[doc(hidden)] +pub trait TyConsExt: Sized { + type Cons; + fn ty_cons(self) -> Self::Cons { + panic!("should not be run, only for type resolution") + } +} + +impl TyCons> { + pub fn ty_cons(self) -> T { + panic!("should not be run, only for type resolution") + } +} + +impl TyConsExt for TyCons<&'_ T> { + type Cons = T; +} + +impl TyConsExt for TyCons> { + type Cons = T; +} + +impl TyConsExt for &'_ TyCons { + type Cons = T; +} + +#[test] +fn test_tycons_ext() { + if false { + let _: u64 = TyCons::new(&Some(5u64)).ty_cons(); + let _: u64 = TyCons::new(&Some(&5u64)).ty_cons(); + let _: u64 = TyCons::new(&&5u64).ty_cons(); + let _: u64 = TyCons::new(&5u64).ty_cons(); + } +} diff --git a/src/macros.rs b/sqlx-core/src/macros.rs similarity index 100% rename from src/macros.rs rename to sqlx-core/src/macros.rs diff --git a/src/mariadb/backend.rs b/sqlx-core/src/mariadb/backend.rs similarity index 100% rename from src/mariadb/backend.rs rename to sqlx-core/src/mariadb/backend.rs diff --git a/src/mariadb/connection.rs b/sqlx-core/src/mariadb/connection.rs similarity index 100% rename from src/mariadb/connection.rs rename to sqlx-core/src/mariadb/connection.rs diff --git a/src/mariadb/error.rs b/sqlx-core/src/mariadb/error.rs similarity index 100% rename from src/mariadb/error.rs rename to sqlx-core/src/mariadb/error.rs diff --git a/src/mariadb/establish.rs b/sqlx-core/src/mariadb/establish.rs similarity index 100% rename from src/mariadb/establish.rs rename to sqlx-core/src/mariadb/establish.rs diff --git a/src/mariadb/io/buf_ext.rs b/sqlx-core/src/mariadb/io/buf_ext.rs similarity index 100% rename from src/mariadb/io/buf_ext.rs rename to sqlx-core/src/mariadb/io/buf_ext.rs diff --git a/src/mariadb/io/buf_mut_ext.rs b/sqlx-core/src/mariadb/io/buf_mut_ext.rs similarity index 100% rename from src/mariadb/io/buf_mut_ext.rs rename to sqlx-core/src/mariadb/io/buf_mut_ext.rs diff --git a/src/mariadb/io/mod.rs b/sqlx-core/src/mariadb/io/mod.rs similarity index 100% rename from src/mariadb/io/mod.rs rename to sqlx-core/src/mariadb/io/mod.rs diff --git a/src/mariadb/mod.rs b/sqlx-core/src/mariadb/mod.rs similarity index 100% rename from src/mariadb/mod.rs rename to sqlx-core/src/mariadb/mod.rs diff --git a/src/mariadb/protocol/binary/com_stmt_close.rs b/sqlx-core/src/mariadb/protocol/binary/com_stmt_close.rs similarity index 100% rename from src/mariadb/protocol/binary/com_stmt_close.rs rename to sqlx-core/src/mariadb/protocol/binary/com_stmt_close.rs diff --git a/src/mariadb/protocol/binary/com_stmt_exec.rs b/sqlx-core/src/mariadb/protocol/binary/com_stmt_exec.rs similarity index 100% rename from src/mariadb/protocol/binary/com_stmt_exec.rs rename to sqlx-core/src/mariadb/protocol/binary/com_stmt_exec.rs diff --git a/src/mariadb/protocol/binary/com_stmt_fetch.rs b/sqlx-core/src/mariadb/protocol/binary/com_stmt_fetch.rs similarity index 100% rename from src/mariadb/protocol/binary/com_stmt_fetch.rs rename to sqlx-core/src/mariadb/protocol/binary/com_stmt_fetch.rs diff --git a/src/mariadb/protocol/binary/com_stmt_prepare.rs b/sqlx-core/src/mariadb/protocol/binary/com_stmt_prepare.rs similarity index 100% rename from src/mariadb/protocol/binary/com_stmt_prepare.rs rename to sqlx-core/src/mariadb/protocol/binary/com_stmt_prepare.rs diff --git a/src/mariadb/protocol/binary/com_stmt_prepare_ok.rs b/sqlx-core/src/mariadb/protocol/binary/com_stmt_prepare_ok.rs similarity index 100% rename from src/mariadb/protocol/binary/com_stmt_prepare_ok.rs rename to sqlx-core/src/mariadb/protocol/binary/com_stmt_prepare_ok.rs diff --git a/src/mariadb/protocol/binary/com_stmt_reset.rs b/sqlx-core/src/mariadb/protocol/binary/com_stmt_reset.rs similarity index 100% rename from src/mariadb/protocol/binary/com_stmt_reset.rs rename to sqlx-core/src/mariadb/protocol/binary/com_stmt_reset.rs diff --git a/src/mariadb/protocol/binary/mod.rs b/sqlx-core/src/mariadb/protocol/binary/mod.rs similarity index 100% rename from src/mariadb/protocol/binary/mod.rs rename to sqlx-core/src/mariadb/protocol/binary/mod.rs diff --git a/src/mariadb/protocol/capabilities.rs b/sqlx-core/src/mariadb/protocol/capabilities.rs similarity index 100% rename from src/mariadb/protocol/capabilities.rs rename to sqlx-core/src/mariadb/protocol/capabilities.rs diff --git a/src/mariadb/protocol/connect/auth_switch_request.rs b/sqlx-core/src/mariadb/protocol/connect/auth_switch_request.rs similarity index 100% rename from src/mariadb/protocol/connect/auth_switch_request.rs rename to sqlx-core/src/mariadb/protocol/connect/auth_switch_request.rs diff --git a/src/mariadb/protocol/connect/initial.rs b/sqlx-core/src/mariadb/protocol/connect/initial.rs similarity index 100% rename from src/mariadb/protocol/connect/initial.rs rename to sqlx-core/src/mariadb/protocol/connect/initial.rs diff --git a/src/mariadb/protocol/connect/mod.rs b/sqlx-core/src/mariadb/protocol/connect/mod.rs similarity index 100% rename from src/mariadb/protocol/connect/mod.rs rename to sqlx-core/src/mariadb/protocol/connect/mod.rs diff --git a/src/mariadb/protocol/connect/response.rs b/sqlx-core/src/mariadb/protocol/connect/response.rs similarity index 100% rename from src/mariadb/protocol/connect/response.rs rename to sqlx-core/src/mariadb/protocol/connect/response.rs diff --git a/src/mariadb/protocol/connect/ssl_request.rs b/sqlx-core/src/mariadb/protocol/connect/ssl_request.rs similarity index 100% rename from src/mariadb/protocol/connect/ssl_request.rs rename to sqlx-core/src/mariadb/protocol/connect/ssl_request.rs diff --git a/src/mariadb/protocol/encode.rs b/sqlx-core/src/mariadb/protocol/encode.rs similarity index 100% rename from src/mariadb/protocol/encode.rs rename to sqlx-core/src/mariadb/protocol/encode.rs diff --git a/src/mariadb/protocol/error_code.rs b/sqlx-core/src/mariadb/protocol/error_code.rs similarity index 100% rename from src/mariadb/protocol/error_code.rs rename to sqlx-core/src/mariadb/protocol/error_code.rs diff --git a/src/mariadb/protocol/field.rs b/sqlx-core/src/mariadb/protocol/field.rs similarity index 100% rename from src/mariadb/protocol/field.rs rename to sqlx-core/src/mariadb/protocol/field.rs diff --git a/src/mariadb/protocol/mod.rs b/sqlx-core/src/mariadb/protocol/mod.rs similarity index 100% rename from src/mariadb/protocol/mod.rs rename to sqlx-core/src/mariadb/protocol/mod.rs diff --git a/src/mariadb/protocol/response/column_count.rs b/sqlx-core/src/mariadb/protocol/response/column_count.rs similarity index 100% rename from src/mariadb/protocol/response/column_count.rs rename to sqlx-core/src/mariadb/protocol/response/column_count.rs diff --git a/src/mariadb/protocol/response/column_def.rs b/sqlx-core/src/mariadb/protocol/response/column_def.rs similarity index 100% rename from src/mariadb/protocol/response/column_def.rs rename to sqlx-core/src/mariadb/protocol/response/column_def.rs diff --git a/src/mariadb/protocol/response/eof.rs b/sqlx-core/src/mariadb/protocol/response/eof.rs similarity index 100% rename from src/mariadb/protocol/response/eof.rs rename to sqlx-core/src/mariadb/protocol/response/eof.rs diff --git a/src/mariadb/protocol/response/err.rs b/sqlx-core/src/mariadb/protocol/response/err.rs similarity index 100% rename from src/mariadb/protocol/response/err.rs rename to sqlx-core/src/mariadb/protocol/response/err.rs diff --git a/src/mariadb/protocol/response/mod.rs b/sqlx-core/src/mariadb/protocol/response/mod.rs similarity index 100% rename from src/mariadb/protocol/response/mod.rs rename to sqlx-core/src/mariadb/protocol/response/mod.rs diff --git a/src/mariadb/protocol/response/ok.rs b/sqlx-core/src/mariadb/protocol/response/ok.rs similarity index 100% rename from src/mariadb/protocol/response/ok.rs rename to sqlx-core/src/mariadb/protocol/response/ok.rs diff --git a/src/mariadb/protocol/response/row.rs b/sqlx-core/src/mariadb/protocol/response/row.rs similarity index 100% rename from src/mariadb/protocol/response/row.rs rename to sqlx-core/src/mariadb/protocol/response/row.rs diff --git a/src/mariadb/protocol/server_status.rs b/sqlx-core/src/mariadb/protocol/server_status.rs similarity index 100% rename from src/mariadb/protocol/server_status.rs rename to sqlx-core/src/mariadb/protocol/server_status.rs diff --git a/src/mariadb/protocol/text/com_debug.rs b/sqlx-core/src/mariadb/protocol/text/com_debug.rs similarity index 100% rename from src/mariadb/protocol/text/com_debug.rs rename to sqlx-core/src/mariadb/protocol/text/com_debug.rs diff --git a/src/mariadb/protocol/text/com_init_db.rs b/sqlx-core/src/mariadb/protocol/text/com_init_db.rs similarity index 100% rename from src/mariadb/protocol/text/com_init_db.rs rename to sqlx-core/src/mariadb/protocol/text/com_init_db.rs diff --git a/src/mariadb/protocol/text/com_ping.rs b/sqlx-core/src/mariadb/protocol/text/com_ping.rs similarity index 100% rename from src/mariadb/protocol/text/com_ping.rs rename to sqlx-core/src/mariadb/protocol/text/com_ping.rs diff --git a/src/mariadb/protocol/text/com_process_kill.rs b/sqlx-core/src/mariadb/protocol/text/com_process_kill.rs similarity index 100% rename from src/mariadb/protocol/text/com_process_kill.rs rename to sqlx-core/src/mariadb/protocol/text/com_process_kill.rs diff --git a/src/mariadb/protocol/text/com_query.rs b/sqlx-core/src/mariadb/protocol/text/com_query.rs similarity index 100% rename from src/mariadb/protocol/text/com_query.rs rename to sqlx-core/src/mariadb/protocol/text/com_query.rs diff --git a/src/mariadb/protocol/text/com_quit.rs b/sqlx-core/src/mariadb/protocol/text/com_quit.rs similarity index 100% rename from src/mariadb/protocol/text/com_quit.rs rename to sqlx-core/src/mariadb/protocol/text/com_quit.rs diff --git a/src/mariadb/protocol/text/com_reset_conn.rs b/sqlx-core/src/mariadb/protocol/text/com_reset_conn.rs similarity index 100% rename from src/mariadb/protocol/text/com_reset_conn.rs rename to sqlx-core/src/mariadb/protocol/text/com_reset_conn.rs diff --git a/src/mariadb/protocol/text/com_set_option.rs b/sqlx-core/src/mariadb/protocol/text/com_set_option.rs similarity index 100% rename from src/mariadb/protocol/text/com_set_option.rs rename to sqlx-core/src/mariadb/protocol/text/com_set_option.rs diff --git a/src/mariadb/protocol/text/com_sleep.rs b/sqlx-core/src/mariadb/protocol/text/com_sleep.rs similarity index 100% rename from src/mariadb/protocol/text/com_sleep.rs rename to sqlx-core/src/mariadb/protocol/text/com_sleep.rs diff --git a/src/mariadb/protocol/text/com_statistics.rs b/sqlx-core/src/mariadb/protocol/text/com_statistics.rs similarity index 100% rename from src/mariadb/protocol/text/com_statistics.rs rename to sqlx-core/src/mariadb/protocol/text/com_statistics.rs diff --git a/src/mariadb/protocol/text/mod.rs b/sqlx-core/src/mariadb/protocol/text/mod.rs similarity index 100% rename from src/mariadb/protocol/text/mod.rs rename to sqlx-core/src/mariadb/protocol/text/mod.rs diff --git a/src/mariadb/protocol/types.rs b/sqlx-core/src/mariadb/protocol/types.rs similarity index 100% rename from src/mariadb/protocol/types.rs rename to sqlx-core/src/mariadb/protocol/types.rs diff --git a/src/mariadb/query.rs b/sqlx-core/src/mariadb/query.rs similarity index 100% rename from src/mariadb/query.rs rename to sqlx-core/src/mariadb/query.rs diff --git a/src/mariadb/row.rs b/sqlx-core/src/mariadb/row.rs similarity index 100% rename from src/mariadb/row.rs rename to sqlx-core/src/mariadb/row.rs diff --git a/src/mariadb/types/binary.rs b/sqlx-core/src/mariadb/types/binary.rs similarity index 100% rename from src/mariadb/types/binary.rs rename to sqlx-core/src/mariadb/types/binary.rs diff --git a/src/mariadb/types/boolean.rs b/sqlx-core/src/mariadb/types/boolean.rs similarity index 100% rename from src/mariadb/types/boolean.rs rename to sqlx-core/src/mariadb/types/boolean.rs diff --git a/src/mariadb/types/character.rs b/sqlx-core/src/mariadb/types/character.rs similarity index 100% rename from src/mariadb/types/character.rs rename to sqlx-core/src/mariadb/types/character.rs diff --git a/src/mariadb/types/mod.rs b/sqlx-core/src/mariadb/types/mod.rs similarity index 100% rename from src/mariadb/types/mod.rs rename to sqlx-core/src/mariadb/types/mod.rs diff --git a/src/mariadb/types/numeric.rs b/sqlx-core/src/mariadb/types/numeric.rs similarity index 100% rename from src/mariadb/types/numeric.rs rename to sqlx-core/src/mariadb/types/numeric.rs diff --git a/src/pool.rs b/sqlx-core/src/pool.rs similarity index 100% rename from src/pool.rs rename to sqlx-core/src/pool.rs diff --git a/src/postgres/backend.rs b/sqlx-core/src/postgres/backend.rs similarity index 100% rename from src/postgres/backend.rs rename to sqlx-core/src/postgres/backend.rs diff --git a/src/postgres/connection.rs b/sqlx-core/src/postgres/connection.rs similarity index 100% rename from src/postgres/connection.rs rename to sqlx-core/src/postgres/connection.rs diff --git a/src/postgres/error.rs b/sqlx-core/src/postgres/error.rs similarity index 100% rename from src/postgres/error.rs rename to sqlx-core/src/postgres/error.rs diff --git a/src/postgres/mod.rs b/sqlx-core/src/postgres/mod.rs similarity index 100% rename from src/postgres/mod.rs rename to sqlx-core/src/postgres/mod.rs diff --git a/src/postgres/protocol/authentication.rs b/sqlx-core/src/postgres/protocol/authentication.rs similarity index 100% rename from src/postgres/protocol/authentication.rs rename to sqlx-core/src/postgres/protocol/authentication.rs diff --git a/src/postgres/protocol/backend_key_data.rs b/sqlx-core/src/postgres/protocol/backend_key_data.rs similarity index 100% rename from src/postgres/protocol/backend_key_data.rs rename to sqlx-core/src/postgres/protocol/backend_key_data.rs diff --git a/src/postgres/protocol/bind.rs b/sqlx-core/src/postgres/protocol/bind.rs similarity index 100% rename from src/postgres/protocol/bind.rs rename to sqlx-core/src/postgres/protocol/bind.rs diff --git a/src/postgres/protocol/cancel_request.rs b/sqlx-core/src/postgres/protocol/cancel_request.rs similarity index 100% rename from src/postgres/protocol/cancel_request.rs rename to sqlx-core/src/postgres/protocol/cancel_request.rs diff --git a/src/postgres/protocol/close.rs b/sqlx-core/src/postgres/protocol/close.rs similarity index 100% rename from src/postgres/protocol/close.rs rename to sqlx-core/src/postgres/protocol/close.rs diff --git a/src/postgres/protocol/command_complete.rs b/sqlx-core/src/postgres/protocol/command_complete.rs similarity index 100% rename from src/postgres/protocol/command_complete.rs rename to sqlx-core/src/postgres/protocol/command_complete.rs diff --git a/src/postgres/protocol/copy_data.rs b/sqlx-core/src/postgres/protocol/copy_data.rs similarity index 100% rename from src/postgres/protocol/copy_data.rs rename to sqlx-core/src/postgres/protocol/copy_data.rs diff --git a/src/postgres/protocol/copy_done.rs b/sqlx-core/src/postgres/protocol/copy_done.rs similarity index 100% rename from src/postgres/protocol/copy_done.rs rename to sqlx-core/src/postgres/protocol/copy_done.rs diff --git a/src/postgres/protocol/copy_fail.rs b/sqlx-core/src/postgres/protocol/copy_fail.rs similarity index 100% rename from src/postgres/protocol/copy_fail.rs rename to sqlx-core/src/postgres/protocol/copy_fail.rs diff --git a/src/postgres/protocol/data_row.rs b/sqlx-core/src/postgres/protocol/data_row.rs similarity index 100% rename from src/postgres/protocol/data_row.rs rename to sqlx-core/src/postgres/protocol/data_row.rs diff --git a/src/postgres/protocol/decode.rs b/sqlx-core/src/postgres/protocol/decode.rs similarity index 100% rename from src/postgres/protocol/decode.rs rename to sqlx-core/src/postgres/protocol/decode.rs diff --git a/src/postgres/protocol/describe.rs b/sqlx-core/src/postgres/protocol/describe.rs similarity index 100% rename from src/postgres/protocol/describe.rs rename to sqlx-core/src/postgres/protocol/describe.rs diff --git a/src/postgres/protocol/encode.rs b/sqlx-core/src/postgres/protocol/encode.rs similarity index 100% rename from src/postgres/protocol/encode.rs rename to sqlx-core/src/postgres/protocol/encode.rs diff --git a/src/postgres/protocol/execute.rs b/sqlx-core/src/postgres/protocol/execute.rs similarity index 100% rename from src/postgres/protocol/execute.rs rename to sqlx-core/src/postgres/protocol/execute.rs diff --git a/src/postgres/protocol/flush.rs b/sqlx-core/src/postgres/protocol/flush.rs similarity index 100% rename from src/postgres/protocol/flush.rs rename to sqlx-core/src/postgres/protocol/flush.rs diff --git a/src/postgres/protocol/message.rs b/sqlx-core/src/postgres/protocol/message.rs similarity index 100% rename from src/postgres/protocol/message.rs rename to sqlx-core/src/postgres/protocol/message.rs diff --git a/src/postgres/protocol/mod.rs b/sqlx-core/src/postgres/protocol/mod.rs similarity index 100% rename from src/postgres/protocol/mod.rs rename to sqlx-core/src/postgres/protocol/mod.rs diff --git a/src/postgres/protocol/notification_response.rs b/sqlx-core/src/postgres/protocol/notification_response.rs similarity index 100% rename from src/postgres/protocol/notification_response.rs rename to sqlx-core/src/postgres/protocol/notification_response.rs diff --git a/src/postgres/protocol/parameter_description.rs b/sqlx-core/src/postgres/protocol/parameter_description.rs similarity index 100% rename from src/postgres/protocol/parameter_description.rs rename to sqlx-core/src/postgres/protocol/parameter_description.rs diff --git a/src/postgres/protocol/parameter_status.rs b/sqlx-core/src/postgres/protocol/parameter_status.rs similarity index 100% rename from src/postgres/protocol/parameter_status.rs rename to sqlx-core/src/postgres/protocol/parameter_status.rs diff --git a/src/postgres/protocol/parse.rs b/sqlx-core/src/postgres/protocol/parse.rs similarity index 100% rename from src/postgres/protocol/parse.rs rename to sqlx-core/src/postgres/protocol/parse.rs diff --git a/src/postgres/protocol/password_message.rs b/sqlx-core/src/postgres/protocol/password_message.rs similarity index 100% rename from src/postgres/protocol/password_message.rs rename to sqlx-core/src/postgres/protocol/password_message.rs diff --git a/src/postgres/protocol/query.rs b/sqlx-core/src/postgres/protocol/query.rs similarity index 100% rename from src/postgres/protocol/query.rs rename to sqlx-core/src/postgres/protocol/query.rs diff --git a/src/postgres/protocol/ready_for_query.rs b/sqlx-core/src/postgres/protocol/ready_for_query.rs similarity index 100% rename from src/postgres/protocol/ready_for_query.rs rename to sqlx-core/src/postgres/protocol/ready_for_query.rs diff --git a/src/postgres/protocol/response.rs b/sqlx-core/src/postgres/protocol/response.rs similarity index 100% rename from src/postgres/protocol/response.rs rename to sqlx-core/src/postgres/protocol/response.rs diff --git a/src/postgres/protocol/row_description.rs b/sqlx-core/src/postgres/protocol/row_description.rs similarity index 100% rename from src/postgres/protocol/row_description.rs rename to sqlx-core/src/postgres/protocol/row_description.rs diff --git a/src/postgres/protocol/startup_message.rs b/sqlx-core/src/postgres/protocol/startup_message.rs similarity index 100% rename from src/postgres/protocol/startup_message.rs rename to sqlx-core/src/postgres/protocol/startup_message.rs diff --git a/src/postgres/protocol/sync.rs b/sqlx-core/src/postgres/protocol/sync.rs similarity index 100% rename from src/postgres/protocol/sync.rs rename to sqlx-core/src/postgres/protocol/sync.rs diff --git a/src/postgres/protocol/terminate.rs b/sqlx-core/src/postgres/protocol/terminate.rs similarity index 100% rename from src/postgres/protocol/terminate.rs rename to sqlx-core/src/postgres/protocol/terminate.rs diff --git a/src/postgres/query.rs b/sqlx-core/src/postgres/query.rs similarity index 100% rename from src/postgres/query.rs rename to sqlx-core/src/postgres/query.rs diff --git a/src/postgres/raw.rs b/sqlx-core/src/postgres/raw.rs similarity index 100% rename from src/postgres/raw.rs rename to sqlx-core/src/postgres/raw.rs diff --git a/src/postgres/row.rs b/sqlx-core/src/postgres/row.rs similarity index 100% rename from src/postgres/row.rs rename to sqlx-core/src/postgres/row.rs diff --git a/src/postgres/types/binary.rs b/sqlx-core/src/postgres/types/binary.rs similarity index 100% rename from src/postgres/types/binary.rs rename to sqlx-core/src/postgres/types/binary.rs diff --git a/src/postgres/types/boolean.rs b/sqlx-core/src/postgres/types/boolean.rs similarity index 100% rename from src/postgres/types/boolean.rs rename to sqlx-core/src/postgres/types/boolean.rs diff --git a/src/postgres/types/character.rs b/sqlx-core/src/postgres/types/character.rs similarity index 100% rename from src/postgres/types/character.rs rename to sqlx-core/src/postgres/types/character.rs diff --git a/src/postgres/types/mod.rs b/sqlx-core/src/postgres/types/mod.rs similarity index 100% rename from src/postgres/types/mod.rs rename to sqlx-core/src/postgres/types/mod.rs diff --git a/src/postgres/types/numeric.rs b/sqlx-core/src/postgres/types/numeric.rs similarity index 100% rename from src/postgres/types/numeric.rs rename to sqlx-core/src/postgres/types/numeric.rs diff --git a/src/postgres/types/uuid.rs b/sqlx-core/src/postgres/types/uuid.rs similarity index 100% rename from src/postgres/types/uuid.rs rename to sqlx-core/src/postgres/types/uuid.rs diff --git a/src/query.rs b/sqlx-core/src/query.rs similarity index 100% rename from src/query.rs rename to sqlx-core/src/query.rs diff --git a/src/row.rs b/sqlx-core/src/row.rs similarity index 100% rename from src/row.rs rename to sqlx-core/src/row.rs diff --git a/src/serialize.rs b/sqlx-core/src/serialize.rs similarity index 100% rename from src/serialize.rs rename to sqlx-core/src/serialize.rs diff --git a/src/sql.rs b/sqlx-core/src/sql.rs similarity index 100% rename from src/sql.rs rename to sqlx-core/src/sql.rs diff --git a/src/types.rs b/sqlx-core/src/types.rs similarity index 100% rename from src/types.rs rename to sqlx-core/src/types.rs diff --git a/src/url.rs b/sqlx-core/src/url.rs similarity index 100% rename from src/url.rs rename to sqlx-core/src/url.rs diff --git a/sqlx-macros/Cargo.toml b/sqlx-macros/Cargo.toml index e37eb45a..42304424 100644 --- a/sqlx-macros/Cargo.toml +++ b/sqlx-macros/Cargo.toml @@ -11,11 +11,11 @@ proc-macro = true async-std = "1.1.0" dotenv = "0.15.0" futures = "0.3.1" +proc-macro-hack = "0.5" proc-macro2 = "1.0.6" -sqlx = { path = "../" } +sqlx = { version = "0.1.1-pre", path = "../sqlx-core", package = "sqlx-core" } syn = "1.0.8" quote = "1.0.2" -tokio = { version = "0.2.0-alpha.4" } url = "2.1.0" [features] diff --git a/sqlx-macros/src/lib.rs b/sqlx-macros/src/lib.rs index de3df772..d5d1a74b 100644 --- a/sqlx-macros/src/lib.rs +++ b/sqlx-macros/src/lib.rs @@ -4,6 +4,8 @@ use proc_macro::TokenStream; use proc_macro2::Span; +use proc_macro_hack::proc_macro_hack; + use quote::{quote, quote_spanned, format_ident, ToTokens}; use syn::{ @@ -59,8 +61,8 @@ impl Parse for MacroInput { } } -#[proc_macro] -pub fn sql(input: TokenStream) -> TokenStream { +#[proc_macro_hack] +pub fn query(input: TokenStream) -> TokenStream { let input = parse_macro_input!(input as MacroInput); eprintln!("expanding macro"); @@ -111,7 +113,7 @@ async fn process_sql(input: MacroInput) -> Result { async fn process_sql_with( input: MacroInput, - conn: sqlx::Connection, + mut conn: sqlx::Connection, ) -> Result where ::TypeId: Display, diff --git a/src/lib.rs b/src/lib.rs index 8f336df8..7bb974f1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,116 +1,9 @@ -#[macro_use] -mod macros; - -#[macro_use] -pub mod error; - -#[cfg(any(feature = "postgres", feature = "mariadb"))] -#[macro_use] -mod io; - -mod backend; -pub mod deserialize; - -#[cfg(any(feature = "postgres", feature = "mariadb"))] -mod url; - -#[macro_use] -mod row; - -mod connection; -mod executor; -mod pool; - -#[macro_use] -pub mod query; - -pub mod serialize; -mod sql; -pub mod types; - -mod describe; - -mod compiled; +#[cfg(feature = "macros")] +use proc_macro_hack::proc_macro_hack; #[doc(inline)] -pub use self::{ - backend::Backend, - compiled::CompiledSql, - connection::Connection, - deserialize::FromSql, - error::{Error, Result}, - executor::Executor, - pool::Pool, - row::{FromSqlRow, Row}, - serialize::ToSql, - sql::{query, SqlQuery}, - types::HasSqlType, -}; +pub use sqlx_core::*; -#[doc(hidden)] -pub use types::HasTypeMetadata; - -#[cfg(feature = "mariadb")] -pub mod mariadb; - -#[cfg(feature = "mariadb")] -#[doc(inline)] -pub use mariadb::MariaDb; - -#[cfg(feature = "postgres")] -pub mod postgres; - -#[cfg(feature = "postgres")] -#[doc(inline)] -pub use self::postgres::Postgres; - -use std::marker::PhantomData; - -// These types allow the `sqlx_macros::sql!()` macro to polymorphically compare a -// given parameter's type to an expected parameter type even if the former -// is behind a reference or in `Option` - -#[doc(hidden)] -pub struct TyCons(PhantomData); - -impl TyCons { - pub fn new(_t: &T) -> TyCons { - TyCons(PhantomData) - } -} - -#[doc(hidden)] -pub trait TyConsExt: Sized { - type Cons; - fn ty_cons(self) -> Self::Cons { - panic!("should not be run, only for type resolution") - } -} - -impl TyCons> { - pub fn ty_cons(self) -> T { - panic!("should not be run, only for type resolution") - } -} - -impl TyConsExt for TyCons<&'_ T> { - type Cons = T; -} - -impl TyConsExt for TyCons> { - type Cons = T; -} - -impl TyConsExt for &'_ TyCons { - type Cons = T; -} - -#[test] -fn test_tycons_ext() { - if false { - let _: u64 = TyCons::new(&Some(5u64)).ty_cons(); - let _: u64 = TyCons::new(&Some(&5u64)).ty_cons(); - let _: u64 = TyCons::new(&&5u64).ty_cons(); - let _: u64 = TyCons::new(&5u64).ty_cons(); - } -} +#[cfg(feature = "macros")] +#[proc_macro_hack(fake_call_site)] +pub use sqlx_macros::query; diff --git a/tests/sql-macro-test.rs b/tests/sql-macro-test.rs index 99647acf..c0e4096f 100644 --- a/tests/sql-macro-test.rs +++ b/tests/sql-macro-test.rs @@ -1,13 +1,11 @@ -#![feature(proc_macro_hygiene)] - #[async_std::test] async fn test_sqlx_macro() -> sqlx::Result<()> { - let conn = + let mut conn = sqlx::Connection::::establish("postgres://postgres@127.0.0.1/sqlx_test") .await?; let uuid: sqlx::types::Uuid = "256ba9c8-0048-11ea-b0f0-8f04859d047e".parse().unwrap(); - let accounts = sqlx_macros::sql!("SELECT * from accounts where id = $1", None) - .fetch_one(&conn) + let accounts = sqlx::query!("SELECT * from accounts where id != $1", None) + .fetch_optional(&mut conn) .await?; println!("accounts: {:?}", accounts);