Rewritten diesel_crud to be more flexible
This commit is contained in:
@ -10,3 +10,7 @@ homepage.workspace = true
|
||||
diesel = { workspace = true }
|
||||
diesel-async = { workspace = true }
|
||||
lib = { path = "../../../lib", features = ["diesel", "derive"] }
|
||||
|
||||
[dev-dependencies]
|
||||
tokio = { version = "1.39", features = ["macros"] }
|
||||
dotenvy_macro = "0.15"
|
||||
|
@ -1,11 +1,8 @@
|
||||
#![allow(unused)]
|
||||
use diesel::{AsChangeset, Insertable, Queryable, Selectable};
|
||||
use diesel_async::pooled_connection::deadpool::Pool;
|
||||
use diesel_async::pooled_connection::AsyncDieselConnectionManager;
|
||||
use diesel_async::AsyncPgConnection;
|
||||
use diesel_async::{AsyncConnection, AsyncPgConnection};
|
||||
use dotenvy_macro::dotenv;
|
||||
use lib::diesel_crud_derive::{
|
||||
DieselCrud, DieselCrudCreate, DieselCrudDelete, DieselCrudList, DieselCrudRead,
|
||||
DieselCrudUpdate,
|
||||
DieselCrudCreate, DieselCrudDelete, DieselCrudList, DieselCrudRead, DieselCrudUpdate,
|
||||
};
|
||||
use lib::diesel_crud_trait::DieselCrudCreate;
|
||||
|
||||
@ -16,67 +13,40 @@ diesel::table! {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Queryable, Selectable, Insertable, AsChangeset)]
|
||||
#[derive(
|
||||
Queryable,
|
||||
Selectable,
|
||||
Insertable,
|
||||
AsChangeset,
|
||||
DieselCrudCreate,
|
||||
DieselCrudDelete,
|
||||
DieselCrudList,
|
||||
DieselCrudRead,
|
||||
DieselCrudUpdate,
|
||||
)]
|
||||
#[diesel_crud(insert = InsertUser)]
|
||||
#[diesel(table_name = user)]
|
||||
struct User {
|
||||
#[diesel_crud(pk)]
|
||||
email: String,
|
||||
}
|
||||
|
||||
#[derive(Insertable)]
|
||||
#[derive(Clone, Insertable)]
|
||||
#[diesel(table_name = user)]
|
||||
struct InsertUser {
|
||||
email: String,
|
||||
}
|
||||
|
||||
#[derive(DieselCrud)]
|
||||
#[diesel_crud(table = user, entity = User, pk = String, pk_field = email, create = InsertUser, update = User)]
|
||||
struct TestService {
|
||||
pool: Pool<AsyncPgConnection>,
|
||||
}
|
||||
|
||||
#[derive(DieselCrudCreate, DieselCrudRead, DieselCrudUpdate, DieselCrudDelete, DieselCrudList)]
|
||||
#[diesel_crud(table = user, entity = User, pk = String, pk_field = email, create = InsertUser, update = User)]
|
||||
struct TestServiceSeparate {
|
||||
pool: Pool<AsyncPgConnection>,
|
||||
}
|
||||
|
||||
#[derive(DieselCrudCreate)]
|
||||
#[diesel_crud(table = user, entity = User, create = InsertUser)]
|
||||
struct TestServiceCreate {
|
||||
pool: Pool<AsyncPgConnection>,
|
||||
}
|
||||
|
||||
#[derive(DieselCrudRead)]
|
||||
#[diesel_crud(table = user, entity = User, pk = String)]
|
||||
struct TestServiceRead {
|
||||
pool: Pool<AsyncPgConnection>,
|
||||
}
|
||||
|
||||
#[derive(DieselCrudUpdate)]
|
||||
#[diesel_crud(table = user, update = User)]
|
||||
struct TestServiceUpdate {
|
||||
pool: Pool<AsyncPgConnection>,
|
||||
}
|
||||
|
||||
#[derive(DieselCrudDelete)]
|
||||
#[diesel_crud(table = user, pk = String, pk_field = email)]
|
||||
struct TestServiceDelete {
|
||||
pool: Pool<AsyncPgConnection>,
|
||||
}
|
||||
|
||||
#[derive(DieselCrudList)]
|
||||
#[diesel_crud(table = user, entity = User)]
|
||||
struct TestServiceList {
|
||||
pool: Pool<AsyncPgConnection>,
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_insert_user() {
|
||||
let config = AsyncDieselConnectionManager::<AsyncPgConnection>::new("");
|
||||
let pool = Pool::builder(config).max_size(10).build().unwrap();
|
||||
|
||||
let service = TestServiceCreate { pool };
|
||||
service.create(&InsertUser {
|
||||
email: "test".to_string(),
|
||||
});
|
||||
#[tokio::test]
|
||||
async fn test_insert_user() {
|
||||
let database_url = dotenv!("DATABASE_URL");
|
||||
let mut conn = AsyncPgConnection::establish(database_url).await.unwrap();
|
||||
conn.begin_test_transaction().await.unwrap();
|
||||
let _user = User::create(
|
||||
InsertUser {
|
||||
email: "test".to_string(),
|
||||
},
|
||||
&mut conn,
|
||||
)
|
||||
.await;
|
||||
}
|
||||
|
Reference in New Issue
Block a user