Skip to content

Commit 6b27efa

Browse files
Wadjetzwoshilapinleovalais
committed
editoast: make DbConnection type opaque
Co-authored-by: Jean SIMARD <[email protected]> Co-authored-by: Léo VALAIS <[email protected]>
1 parent 5e3ca65 commit 6b27efa

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+1097
-1165
lines changed

editoast/editoast_derive/src/model.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ fn create_functions(config: &Config) -> TokenStream {
8484
quote! {
8585
#[async_trait::async_trait]
8686
impl crate::models::Create for #model_name {
87-
async fn create_conn(self, conn: &mut editoast_models::DbConnection) -> crate::error::Result<Self> {
87+
async fn create_conn(self, conn: &mut editoast_models::DieselConnection) -> crate::error::Result<Self> {
8888
use #table::table;
8989
use diesel_async::RunQueryDsl;
9090

@@ -126,7 +126,7 @@ fn retrieve_functions(config: &Config) -> TokenStream {
126126
quote! {
127127
#[async_trait::async_trait]
128128
impl crate::models::Retrieve for #model_name {
129-
async fn retrieve_conn(conn: &mut editoast_models::DbConnection, obj_id: i64) -> crate::error::Result<Option<Self>> {
129+
async fn retrieve_conn(conn: &mut editoast_models::DieselConnection, obj_id: i64) -> crate::error::Result<Option<Self>> {
130130
use #table::table;
131131
use #table::dsl;
132132
use diesel_async::RunQueryDsl;
@@ -174,7 +174,7 @@ fn delete_functions(config: &Config) -> TokenStream {
174174
quote! {
175175
#[async_trait::async_trait]
176176
impl crate::models::Delete for #model_name {
177-
async fn delete_conn(conn: &mut editoast_models::DbConnection, obj_id: i64) -> crate::error::Result<bool> {
177+
async fn delete_conn(conn: &mut editoast_models::DieselConnection, obj_id: i64) -> crate::error::Result<bool> {
178178
use #table::table;
179179
use #table::dsl;
180180
use diesel_async::RunQueryDsl;
@@ -207,7 +207,7 @@ fn update_functions(config: &Config) -> TokenStream {
207207
quote! {
208208
#[async_trait::async_trait]
209209
impl crate::models::Update for #model_name {
210-
async fn update_conn(self, conn: &mut editoast_models::DbConnection, obj_id: i64) -> crate::error::Result<Option<Self>> {
210+
async fn update_conn(self, conn: &mut editoast_models::DieselConnection, obj_id: i64) -> crate::error::Result<Option<Self>> {
211211
use #table::table;
212212

213213
match diesel::update(table.find(obj_id)).set(&self).get_result(conn).await

editoast/editoast_derive/src/modelv2/codegen/count_impl.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ impl ToTokens for CountImpl {
2828
use diesel::QueryDsl;
2929
use diesel_async::RunQueryDsl;
3030
use futures_util::stream::TryStreamExt;
31+
use std::ops::DerefMut;
3132

3233
let mut query = #table_mod::table.select(diesel::dsl::count_star()).into_boxed();
3334

@@ -48,7 +49,7 @@ impl ToTokens for CountImpl {
4849
}
4950
}
5051

51-
Ok(query.get_result::<i64>(conn).await? as u64)
52+
Ok(query.get_result::<i64>(conn.write().await.deref_mut()).await? as u64)
5253
}
5354
}
5455

editoast/editoast_derive/src/modelv2/codegen/create_batch_impl.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ impl ToTokens for CreateBatchImpl {
3838
) -> crate::error::Result<C> {
3939
use crate::modelsv2::Model;
4040
use #table_mod::dsl;
41+
use std::ops::DerefMut;
4142
use diesel::prelude::*;
4243
use diesel_async::RunQueryDsl;
4344
use futures_util::stream::TryStreamExt;
@@ -50,7 +51,7 @@ impl ToTokens for CreateBatchImpl {
5051
chunk => {
5152
diesel::insert_into(dsl::#table_name)
5253
.values(chunk)
53-
.load_stream::<#row>(conn)
54+
.load_stream::<#row>(conn.write().await.deref_mut())
5455
.await
5556
.map(|s| s.map_ok(<#model as Model>::from_row).try_collect::<Vec<_>>())?
5657
.await?

editoast/editoast_derive/src/modelv2/codegen/create_batch_with_key_impl.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ impl ToTokens for CreateBatchWithKeyImpl {
4343
) -> crate::error::Result<C> {
4444
use crate::models::Identifiable;
4545
use crate::modelsv2::Model;
46+
use std::ops::DerefMut;
4647
use #table_mod::dsl;
4748
use diesel::prelude::*;
4849
use diesel_async::RunQueryDsl;
@@ -56,7 +57,7 @@ impl ToTokens for CreateBatchWithKeyImpl {
5657
chunk => {
5758
diesel::insert_into(dsl::#table_name)
5859
.values(chunk)
59-
.load_stream::<#row>(conn)
60+
.load_stream::<#row>(conn.write().await.deref_mut())
6061
.await
6162
.map(|s| {
6263
s.map_ok(|row| {

editoast/editoast_derive/src/modelv2/codegen/create_impl.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,10 @@ impl ToTokens for CreateImpl {
2828
conn: &mut editoast_models::DbConnection,
2929
) -> crate::error::Result<#model> {
3030
use diesel_async::RunQueryDsl;
31+
use std::ops::DerefMut;
3132
diesel::insert_into(#table_mod::table)
3233
.values(&self)
33-
.get_result::<#row>(conn)
34+
.get_result::<#row>(conn.write().await.deref_mut())
3435
.await
3536
.map(Into::into)
3637
.map_err(Into::into)

editoast/editoast_derive/src/modelv2/codegen/delete_batch_impl.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ impl ToTokens for DeleteBatchImpl {
3838
use #table_mod::dsl;
3939
use diesel::prelude::*;
4040
use diesel_async::RunQueryDsl;
41+
use std::ops::DerefMut;
4142
let ids = ids.into_iter().collect::<Vec<_>>();
4243
tracing::Span::current().record("query_ids", tracing::field::debug(&ids));
4344
let counts = crate::chunked_for_libpq! {
@@ -49,7 +50,7 @@ impl ToTokens for DeleteBatchImpl {
4950
for #id_ident in chunk.into_iter() {
5051
query = query.or_filter(#filters);
5152
}
52-
query.execute(conn).await?
53+
query.execute(conn.write().await.deref_mut()).await?
5354
}
5455
};
5556
Ok(counts.into_iter().sum())

editoast/editoast_derive/src/modelv2/codegen/delete_impl.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,10 @@ impl ToTokens for DeleteImpl {
2828
use diesel::prelude::*;
2929
use diesel_async::RunQueryDsl;
3030
use #table_mod::dsl;
31+
use std::ops::DerefMut;
3132
let id = self.#primary_key;
3233
diesel::delete(#table_mod::table.find(id))
33-
.execute(conn)
34+
.execute(conn.write().await.deref_mut())
3435
.await
3536
.map(|n| n == 1)
3637
.map_err(Into::into)

editoast/editoast_derive/src/modelv2/codegen/delete_static_impl.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,11 @@ impl ToTokens for DeleteStaticImpl {
3535
) -> crate::error::Result<bool> {
3636
use diesel::prelude::*;
3737
use diesel_async::RunQueryDsl;
38+
use std::ops::DerefMut;
3839
use #table_mod::dsl;
3940
tracing::Span::current().record("query_id", tracing::field::debug(#id_ref_ident));
4041
diesel::delete(dsl::#table_name.#(filter(#eqs)).*)
41-
.execute(conn)
42+
.execute(conn.write().await.deref_mut())
4243
.await
4344
.map(|n| n == 1)
4445
.map_err(Into::into)

editoast/editoast_derive/src/modelv2/codegen/exists_impl.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,11 @@ impl ToTokens for ExistsImpl {
3535
) -> crate::error::Result<bool> {
3636
use diesel::prelude::*;
3737
use diesel_async::RunQueryDsl;
38+
use std::ops::DerefMut;
3839
use #table_mod::dsl;
3940
tracing::Span::current().record("query_id", tracing::field::debug(#id_ref_ident));
4041
diesel::select(diesel::dsl::exists(dsl::#table_name.#(filter(#eqs)).*))
41-
.get_result(conn)
42+
.get_result(conn.write().await.deref_mut())
4243
.await
4344
.map_err(Into::into)
4445
}

editoast/editoast_derive/src/modelv2/codegen/list_impl.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ impl ToTokens for ListImpl {
3434
use diesel::QueryDsl;
3535
use diesel_async::RunQueryDsl;
3636
use futures_util::stream::TryStreamExt;
37+
use std::ops::DerefMut;
3738

3839
let mut query = #table_mod::table.into_boxed();
3940

@@ -58,7 +59,7 @@ impl ToTokens for ListImpl {
5859
}
5960

6061
let results: Vec<#model> = query
61-
.load_stream::<#row>(conn)
62+
.load_stream::<#row>(conn.write().await.deref_mut())
6263
.await?
6364
.map_ok(<#model as crate::modelsv2::prelude::Model>::from_row)
6465
.try_collect()

editoast/editoast_derive/src/modelv2/codegen/retrieve_batch_impl.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ impl ToTokens for RetrieveBatchImpl {
4646
use diesel::prelude::*;
4747
use diesel_async::RunQueryDsl;
4848
use futures_util::stream::TryStreamExt;
49+
use std::ops::DerefMut;
4950
let ids = ids.into_iter().collect::<Vec<_>>();
5051
tracing::Span::current().record("query_ids", tracing::field::debug(&ids));
5152
Ok(crate::chunked_for_libpq! {
@@ -62,7 +63,7 @@ impl ToTokens for RetrieveBatchImpl {
6263
query = query.or_filter(#filters);
6364
}
6465
query
65-
.load_stream::<#row>(conn)
66+
.load_stream::<#row>(conn.write().await.deref_mut())
6667
.await
6768
.map(|s| s.map_ok(<#model as Model>::from_row).try_collect::<Vec<_>>())?
6869
.await?
@@ -84,6 +85,7 @@ impl ToTokens for RetrieveBatchImpl {
8485
use diesel::prelude::*;
8586
use diesel_async::RunQueryDsl;
8687
use futures_util::stream::TryStreamExt;
88+
use std::ops::DerefMut;
8789
let ids = ids.into_iter().collect::<Vec<_>>();
8890
tracing::Span::current().record("query_ids", tracing::field::debug(&ids));
8991
Ok(crate::chunked_for_libpq! {
@@ -97,7 +99,7 @@ impl ToTokens for RetrieveBatchImpl {
9799
query = query.or_filter(#filters);
98100
}
99101
query
100-
.load_stream::<#row>(conn)
102+
.load_stream::<#row>(conn.write().await.deref_mut())
101103
.await
102104
.map(|s| {
103105
s.map_ok(|row| {

editoast/editoast_derive/src/modelv2/codegen/retrieve_impl.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,11 @@ impl ToTokens for RetrieveImpl {
3838
use diesel::prelude::*;
3939
use diesel_async::RunQueryDsl;
4040
use #table_mod::dsl;
41+
use std::ops::DerefMut;
4142
tracing::Span::current().record("query_id", tracing::field::debug(#id_ref_ident));
4243
dsl::#table_name
4344
.#(filter(#eqs)).*
44-
.first::<#row>(conn)
45+
.first::<#row>(conn.write().await.deref_mut())
4546
.await
4647
.map(Into::into)
4748
.optional()

editoast/editoast_derive/src/modelv2/codegen/update_batch_impl.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ impl ToTokens for UpdateBatchImpl {
5151
use diesel::prelude::*;
5252
use diesel_async::RunQueryDsl;
5353
use futures_util::stream::TryStreamExt;
54+
use std::ops::DerefMut;
5455
let ids = ids.into_iter().collect::<Vec<_>>();
5556
tracing::Span::current().record("query_ids", tracing::field::debug(&ids));
5657
Ok(crate::chunked_for_libpq! {
@@ -69,7 +70,7 @@ impl ToTokens for UpdateBatchImpl {
6970
diesel::update(dsl::#table_name)
7071
.filter(dsl::#primary_key_column.eq_any(query))
7172
.set(&self)
72-
.load_stream::<#row>(conn)
73+
.load_stream::<#row>(conn.write().await.deref_mut())
7374
.await
7475
.map(|s| s.map_ok(<#model as Model>::from_row).try_collect::<Vec<_>>())?
7576
.await?
@@ -89,6 +90,7 @@ impl ToTokens for UpdateBatchImpl {
8990
use crate::models::Identifiable;
9091
use crate::modelsv2::Model;
9192
use #table_mod::dsl;
93+
use std::ops::DerefMut;
9294
use diesel::prelude::*;
9395
use diesel_async::RunQueryDsl;
9496
use futures_util::stream::TryStreamExt;
@@ -109,7 +111,7 @@ impl ToTokens for UpdateBatchImpl {
109111
diesel::update(dsl::#table_name)
110112
.filter(dsl::#primary_key_column.eq_any(query))
111113
.set(&self)
112-
.load_stream::<#row>(conn)
114+
.load_stream::<#row>(conn.write().await.deref_mut())
113115
.await
114116
.map(|s| {
115117
s.map_ok(|row| {

editoast/editoast_derive/src/modelv2/codegen/update_impl.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,12 @@ impl ToTokens for UpdateImpl {
4040
) -> crate::error::Result<Option<#model>> {
4141
use diesel::prelude::*;
4242
use diesel_async::RunQueryDsl;
43+
use std::ops::DerefMut;
4344
use #table_mod::dsl;
4445
tracing::Span::current().record("query_id", tracing::field::debug(#id_ref_ident));
4546
diesel::update(dsl::#table_name.#(filter(#eqs)).*)
4647
.set(&self)
47-
.get_result::<#row>(conn)
48+
.get_result::<#row>(conn.write().await.deref_mut())
4849
.await
4950
.map(Into::into)
5051
.optional()

0 commit comments

Comments
 (0)