diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
index cf1fc59..75f69bb 100644
--- a/.idea/dataSources.xml
+++ b/.idea/dataSources.xml
@@ -5,7 +5,7 @@
postgresql
true
org.postgresql.Driver
- jdbc:postgresql://localhost:32784/postgres
+ jdbc:postgresql://localhost:32769/postgres
$ProjectFileDir$
diff --git a/Cargo.lock b/Cargo.lock
index 46554eb..ea4671d 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -441,18 +441,19 @@ dependencies = [
[[package]]
name = "bon"
-version = "2.0.0"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea8256e3cff531086cc3faf94c1649930ff64bceb2d0e8cc84fc0356d7ee9806"
+checksum = "811d7882589e047896e5974d039dd8823a67973a63d559e6ad1e87ff5c42ed4f"
dependencies = [
"bon-macros",
+ "rustversion",
]
[[package]]
name = "bon-macros"
-version = "2.0.0"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b99838f77c5073bc7846ecce92b64e7e5a5bd152a8ec392facf90ee4d90b4b35"
+checksum = "d8e745a763e579a5ce70130e66f9dd35abf77cfeb9f418f305aeab8d1ae54c43"
dependencies = [
"darling",
"ident_case",
@@ -1509,7 +1510,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
name = "lib"
version = "1.4.3"
dependencies = [
+ "async-trait",
"axum",
+ "bon",
"chrono",
"deadpool-diesel",
"derive_more",
@@ -1517,9 +1520,12 @@ dependencies = [
"diesel-async",
"diesel-crud-derive",
"diesel-crud-trait",
+ "diesel_async_migrations",
"into-response-derive",
"mime",
"serde",
+ "serde_json",
+ "testcontainers-modules",
"thiserror",
"tokio",
"tower 0.5.0",
@@ -2841,15 +2847,14 @@ dependencies = [
[[package]]
name = "tower-http"
-version = "0.5.2"
+version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5"
+checksum = "8437150ab6bbc8c5f0f519e3d5ed4aa883a83dd4cdd3d1b21f9482936046cb97"
dependencies = [
"bitflags 2.6.0",
"bytes",
"http",
"http-body",
- "http-body-util",
"pin-project-lite",
"tower-layer",
"tower-service",
diff --git a/Cargo.toml b/Cargo.toml
index 8996b1f..a51d48f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -45,6 +45,7 @@ lib = { path = "../lib", features = ["axum", "serde", "derive", "diesel", "time"
#lib = { git = "https://github.com/emberal/rust-lib", tag = "1.4.3", features = ["axum", "serde", "derive"] }
[dev-dependencies]
+lib = { path = "../lib", features = ["test"] }
rstest = "0.22.0"
testcontainers-modules = { version = "0.10.0", features = ["postgres"] }
async-std = { version = "1.12.0", features = ["attributes"] }
diff --git a/src/database.rs b/src/database.rs
index b559a62..f48ef8e 100644
--- a/src/database.rs
+++ b/src/database.rs
@@ -1,35 +1,10 @@
use crate::config;
-use crate::error::AppError;
-use axum::async_trait;
use deadpool_diesel::postgres::BuildError;
-use deadpool_diesel::Status;
-use diesel_async::pooled_connection::deadpool::{Object, Pool};
-use diesel_async::pooled_connection::AsyncDieselConnectionManager;
-use diesel_async::AsyncPgConnection;
-
-pub type PgPool = Pool;
-
-#[async_trait]
-pub trait GetConnection: Clone + Send + Sync {
- async fn get(&self) -> Result