From b2a4b84f6d8233f623f92f50a9302120595b356b Mon Sep 17 00:00:00 2001 From: MedzikUser Date: Sun, 24 Apr 2022 14:50:25 +0200 Subject: [PATCH] database (user table): move to `types` from `database` --- Cargo.lock | 3 +++ database/Cargo.toml | 1 + database/src/lib.rs | 4 ++-- database/src/sqlite.rs | 5 ++--- types/Cargo.toml | 5 +++++ types/src/database/mod.rs | 3 +++ {database/src => types/src/database}/user.rs | 3 ++- types/src/lib.rs | 3 +++ 8 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 types/src/database/mod.rs rename {database/src => types/src/database}/user.rs (95%) diff --git a/Cargo.lock b/Cargo.lock index 397c33f..dc5384f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -607,6 +607,7 @@ name = "homedisk-database" version = "0.0.0" dependencies = [ "futures-util", + "homedisk-types", "log", "rust_utilities", "serde", @@ -639,7 +640,9 @@ dependencies = [ "anyhow", "axum", "dirs", + "rust_utilities", "serde", + "sqlx", "thiserror", "toml", "uuid", diff --git a/database/Cargo.toml b/database/Cargo.toml index 2cbc91b..beb45f6 100644 --- a/database/Cargo.toml +++ b/database/Cargo.toml @@ -10,6 +10,7 @@ serde = { version = "1.0.136", features = ["derive"] } sqlx = { version = "0.5.13", features = ["runtime-tokio-rustls", "sqlite"] } uuid = { version = "1.0.0", features = ["v5"] } rust_utilities = { version = "0.2.0", features = ["sha"] } +homedisk-types = { path = "../types", features = ["database"] } [dev-dependencies] tokio = { version = "1.17.0", features = ["full"] } diff --git a/database/src/lib.rs b/database/src/lib.rs index ea184d7..2b161bc 100644 --- a/database/src/lib.rs +++ b/database/src/lib.rs @@ -1,5 +1,5 @@ mod error; mod sqlite; -mod user; -pub use {error::*, sqlite::*, user::*}; +pub use homedisk_types::database::User; +pub use {error::*, sqlite::*}; diff --git a/database/src/sqlite.rs b/database/src/sqlite.rs index 9f31c5f..c3b3c59 100644 --- a/database/src/sqlite.rs +++ b/database/src/sqlite.rs @@ -1,9 +1,8 @@ use futures_util::TryStreamExt; use log::debug; use sqlx::{sqlite::SqliteQueryResult, Executor, Row, SqlitePool}; -use user::User; -use super::{user, Error}; +use super::{Error, User}; #[derive(Debug, Clone)] pub struct Database { @@ -32,7 +31,7 @@ impl Database { /// let user = User::new("username", "password"); /// db.create_user(&user).await?; /// ``` - pub async fn create_user(&self, user: &user::User) -> Result { + pub async fn create_user(&self, user: &User) -> Result { debug!("creating user - {}", user.username); let query = sqlx::query("INSERT INTO user (id, username, password) VALUES (?, ?, ?)") diff --git a/types/Cargo.toml b/types/Cargo.toml index 7e8e2a9..a0241d0 100644 --- a/types/Cargo.toml +++ b/types/Cargo.toml @@ -5,6 +5,7 @@ edition = "2021" [features] config = ["toml", "dirs"] +database = ["rust_utilities", "sqlx"] [dependencies] thiserror = "1.0.30" @@ -17,3 +18,7 @@ axum = { version = "0.5.3", optional = true } # config toml = { version = "0.5.9", optional = true } dirs = { version = "4.0.0", optional = true } + +# database +rust_utilities = { version = "0.2.0", optional = true } +sqlx = { version = "0.5.13", features = ["sqlite"], optional = true } diff --git a/types/src/database/mod.rs b/types/src/database/mod.rs new file mode 100644 index 0000000..09912bd --- /dev/null +++ b/types/src/database/mod.rs @@ -0,0 +1,3 @@ +mod user; + +pub use {user::*}; diff --git a/database/src/user.rs b/types/src/database/user.rs similarity index 95% rename from database/src/user.rs rename to types/src/database/user.rs index 72e1f82..73aae9a 100644 --- a/database/src/user.rs +++ b/types/src/database/user.rs @@ -1,6 +1,7 @@ use rust_utilities::crypto::sha::{encode, Algorithm, CryptographicHash}; use uuid::Uuid; +/// SQL `user` Table #[derive(Debug, sqlx::FromRow)] pub struct User { pub id: String, @@ -14,7 +15,7 @@ impl User { /// This function creates a unique UUID for a user and creates a password hash using SHA-512 /// and returns in the User type /// ``` - /// use homedisk_database::User; + /// use homedisk_types::database::User; /// /// let user = User::new("medzik", "SuperSecretPassword123!"); /// ``` diff --git a/types/src/lib.rs b/types/src/lib.rs index cf9c5ed..a619bd3 100644 --- a/types/src/lib.rs +++ b/types/src/lib.rs @@ -2,3 +2,6 @@ pub mod auth; pub mod config; pub mod errors; pub mod macros; + +#[cfg(feature = "database")] +pub mod database;