backend/model/entity/
base_layer_images_impl.rs1use diesel::pg::Pg;
4use diesel::{debug_query, ExpressionMethods, QueryDsl, QueryResult};
5use diesel_async::{AsyncPgConnection, RunQueryDsl};
6use log::debug;
7use uuid::Uuid;
8
9use crate::{
10 model::{
11 dto::base_layer_images::{BaseLayerImageDto, UpdateBaseLayerImageDto},
12 entity::base_layer_images::BaseLayerImages,
13 },
14 schema::base_layer_images::{self, all_columns},
15};
16
17impl BaseLayerImages {
18 pub async fn find(
23 conn: &mut AsyncPgConnection,
24 layer_id: Uuid,
25 ) -> QueryResult<Vec<BaseLayerImageDto>> {
26 let query = base_layer_images::table
27 .select(all_columns)
28 .filter(base_layer_images::layer_id.eq(layer_id));
29
30 debug!("{}", debug_query::<Pg, _>(&query));
31 Ok(query
32 .load::<Self>(conn)
33 .await?
34 .into_iter()
35 .map(Into::into)
36 .collect())
37 }
38
39 pub async fn create(
45 dto: BaseLayerImageDto,
46 conn: &mut AsyncPgConnection,
47 ) -> QueryResult<BaseLayerImageDto> {
48 let insert = Self::from(dto);
49 let query = diesel::insert_into(base_layer_images::table).values(&insert);
50 debug!("{}", debug_query::<Pg, _>(&query));
51 query.get_result::<Self>(conn).await.map(Into::into)
52 }
53
54 pub async fn update(
59 id: Uuid,
60 dto: UpdateBaseLayerImageDto,
61 conn: &mut AsyncPgConnection,
62 ) -> QueryResult<BaseLayerImageDto> {
63 let update = Self::from((id, dto));
64 let query = diesel::update(base_layer_images::table.find(id)).set(&update);
65 debug!("{}", debug_query::<Pg, _>(&query));
66 query.get_result::<Self>(conn).await.map(Into::into)
67 }
68
69 pub async fn delete_by_id(id: Uuid, conn: &mut AsyncPgConnection) -> QueryResult<usize> {
74 let query = diesel::delete(base_layer_images::table.find(id));
75 debug!("{}", debug_query::<Pg, _>(&query));
76 query.execute(conn).await
77 }
78}