backend/model/entity/
guided_tours_impl.rs1use diesel::{debug_query, pg::Pg, QueryDsl, QueryResult};
4use diesel_async::{AsyncPgConnection, RunQueryDsl};
5use log::debug;
6use uuid::Uuid;
7
8use crate::{
9 model::{
10 dto::{GuidedToursDto, UpdateGuidedToursDto},
11 entity::UpdateGuidedTours,
12 },
13 schema::guided_tours,
14};
15
16use super::GuidedTours;
17
18impl GuidedTours {
19 pub async fn setup(user_id: Uuid, conn: &mut AsyncPgConnection) -> QueryResult<GuidedToursDto> {
24 let new_guided_tours = Self::from(user_id);
25 let query = diesel::insert_into(guided_tours::table).values(new_guided_tours);
26 debug!("{}", debug_query::<Pg, _>(&query));
27 query.get_result::<Self>(conn).await.map(Into::into)
28 }
29
30 pub async fn find_by_user(
35 user_id: Uuid,
36 conn: &mut AsyncPgConnection,
37 ) -> QueryResult<GuidedToursDto> {
38 let query = guided_tours::table.find(user_id);
39 debug!("{}", debug_query::<Pg, _>(&query));
40 query.first::<Self>(conn).await.map(Into::into)
41 }
42
43 pub async fn update(
48 status_update: UpdateGuidedToursDto,
49 user_id: Uuid,
50 conn: &mut AsyncPgConnection,
51 ) -> QueryResult<GuidedToursDto> {
52 let status_update = UpdateGuidedTours::from(status_update);
53 let query = diesel::update(guided_tours::table.find(user_id)).set(&status_update);
54 debug!("{}", debug_query::<Pg, _>(&query));
55 query.get_result::<Self>(conn).await.map(Into::into)
56 }
57}