variphx commited on
Commit
a02919a
·
1 Parent(s): a716a24

fix: refactor states, entities and dtos to be submodules of models

Browse files
src/controllers/mod.rs CHANGED
@@ -1,6 +1,6 @@
1
  use utoipa_axum::router::OpenApiRouter;
2
 
3
- use crate::states::AppState;
4
 
5
  mod v1;
6
 
 
1
  use utoipa_axum::router::OpenApiRouter;
2
 
3
+ use crate::models::states::AppState;
4
 
5
  mod v1;
6
 
src/controllers/v1/keyframes/mod.rs CHANGED
@@ -6,8 +6,9 @@ use axum::{
6
  use utoipa_axum::{router::OpenApiRouter, routes};
7
 
8
  use crate::{
9
- docs::OPENAPI_TAG, dtos::keyframes::KeyframeDto, services::keyframes::KeyframeService,
10
- states::AppState,
 
11
  };
12
 
13
  pub fn router() -> OpenApiRouter<AppState> {
 
6
  use utoipa_axum::{router::OpenApiRouter, routes};
7
 
8
  use crate::{
9
+ docs::OPENAPI_TAG,
10
+ models::{dtos::keyframes::KeyframeDto, states::AppState},
11
+ services::keyframes::KeyframeService,
12
  };
13
 
14
  pub fn router() -> OpenApiRouter<AppState> {
src/controllers/v1/mod.rs CHANGED
@@ -1,6 +1,6 @@
1
  use utoipa_axum::router::OpenApiRouter;
2
 
3
- use crate::states::AppState;
4
 
5
  mod keyframes;
6
  mod videos;
 
1
  use utoipa_axum::router::OpenApiRouter;
2
 
3
+ use crate::models::states::AppState;
4
 
5
  mod keyframes;
6
  mod videos;
src/controllers/v1/videos/mod.rs CHANGED
@@ -6,7 +6,9 @@ use axum::{
6
  use utoipa_axum::{router::OpenApiRouter, routes};
7
 
8
  use crate::{
9
- docs::OPENAPI_TAG, dtos::videos::VideoDto, services::videos::VideoService, states::AppState,
 
 
10
  };
11
 
12
  pub fn router() -> OpenApiRouter<AppState> {
 
6
  use utoipa_axum::{router::OpenApiRouter, routes};
7
 
8
  use crate::{
9
+ docs::OPENAPI_TAG,
10
+ models::{dtos::videos::VideoDto, states::AppState},
11
+ services::videos::VideoService,
12
  };
13
 
14
  pub fn router() -> OpenApiRouter<AppState> {
src/dtos/keyframes/mod.rs DELETED
@@ -1,32 +0,0 @@
1
- use crate::entities::{keyframes::KeyframeEntity, videos::VideoEntity};
2
-
3
- #[derive(Debug, Clone, serde::Serialize, utoipa::ToSchema)]
4
- pub struct KeyframeDto {
5
- id: i64,
6
- path: String,
7
- timestamp: f64,
8
- }
9
-
10
- impl From<(KeyframeEntity, VideoEntity)> for KeyframeDto {
11
- fn from((keyframe, video): (KeyframeEntity, VideoEntity)) -> Self {
12
- let id = keyframe.id();
13
- let timestamp = keyframe.video_related_frame_timestamp();
14
- let path = format!(
15
- "/static/keyframes/L{}_V{:0>3}/{:0>3}.jpg",
16
- video.l(),
17
- video.v(),
18
- keyframe.video_related_frame_id()
19
- );
20
- Self {
21
- id,
22
- path,
23
- timestamp,
24
- }
25
- }
26
- }
27
-
28
- impl From<(VideoEntity, KeyframeEntity)> for KeyframeDto {
29
- fn from((video, keyframe): (VideoEntity, KeyframeEntity)) -> Self {
30
- Self::from((keyframe, video))
31
- }
32
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/dtos/mod.rs DELETED
@@ -1,2 +0,0 @@
1
- pub mod keyframes;
2
- pub mod videos;
 
 
 
src/dtos/videos/mod.rs DELETED
@@ -1,17 +0,0 @@
1
- use crate::entities::videos::VideoEntity;
2
-
3
- #[derive(Debug, Clone, serde::Serialize, utoipa::ToSchema)]
4
- pub struct VideoDto {
5
- id: i64,
6
- path: String,
7
- }
8
-
9
- impl From<VideoEntity> for VideoDto {
10
- fn from(value: VideoEntity) -> Self {
11
- let path = format!("/static/videos/L{}_V{:0>3}.mp4", value.l(), value.v());
12
- Self {
13
- id: value.id(),
14
- path,
15
- }
16
- }
17
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/entities/keyframes/mod.rs DELETED
@@ -1,22 +0,0 @@
1
- #[derive(Debug, Clone, diesel::Queryable, diesel::Selectable)]
2
- #[diesel(table_name = crate::schema::keyframes)]
3
- #[diesel(check_for_backend(diesel::pg::Pg))]
4
- pub struct KeyframeEntity {
5
- id: i64,
6
- video_related_frame_id: i16,
7
- video_related_frame_timestamp: f64,
8
- }
9
-
10
- impl KeyframeEntity {
11
- pub fn id(&self) -> i64 {
12
- self.id
13
- }
14
-
15
- pub fn video_related_frame_id(&self) -> i16 {
16
- self.video_related_frame_id
17
- }
18
-
19
- pub fn video_related_frame_timestamp(&self) -> f64 {
20
- self.video_related_frame_timestamp
21
- }
22
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/entities/mod.rs DELETED
@@ -1,2 +0,0 @@
1
- pub mod keyframes;
2
- pub mod videos;
 
 
 
src/entities/videos/mod.rs DELETED
@@ -1,22 +0,0 @@
1
- #[derive(Debug, Clone, diesel::Queryable, diesel::Selectable)]
2
- #[diesel(table_name = crate::schema::videos)]
3
- #[diesel(check_for_backend(diesel::pg::Pg))]
4
- pub struct VideoEntity {
5
- id: i64,
6
- l: i16,
7
- v: i16,
8
- }
9
-
10
- impl VideoEntity {
11
- pub fn id(&self) -> i64 {
12
- self.id
13
- }
14
-
15
- pub fn l(&self) -> i16 {
16
- self.l
17
- }
18
-
19
- pub fn v(&self) -> i16 {
20
- self.v
21
- }
22
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/main.rs CHANGED
@@ -8,16 +8,14 @@ use utoipa::OpenApi;
8
  use utoipa_axum::router::OpenApiRouter;
9
  use utoipa_swagger_ui::SwaggerUi;
10
 
11
- use crate::{docs::ApiDoc, states::AppState};
12
 
13
  mod controllers;
14
  mod docs;
15
- mod dtos;
16
- mod entities;
17
  mod repositories;
18
  mod schema;
19
  mod services;
20
- mod states;
21
 
22
  #[tokio::main]
23
  async fn main() -> anyhow::Result<()> {
 
8
  use utoipa_axum::router::OpenApiRouter;
9
  use utoipa_swagger_ui::SwaggerUi;
10
 
11
+ use crate::{docs::ApiDoc, models::states::AppState};
12
 
13
  mod controllers;
14
  mod docs;
15
+ mod models;
 
16
  mod repositories;
17
  mod schema;
18
  mod services;
 
19
 
20
  #[tokio::main]
21
  async fn main() -> anyhow::Result<()> {
src/repositories/keyframes/mod.rs CHANGED
@@ -2,7 +2,7 @@ use deadpool_diesel::postgres::Pool;
2
  use diesel::{ExpressionMethods, QueryDsl, RunQueryDsl, SelectableHelper};
3
 
4
  use crate::{
5
- entities::{keyframes::KeyframeEntity, videos::VideoEntity},
6
  services::keyframes::KeyframeService,
7
  };
8
 
 
2
  use diesel::{ExpressionMethods, QueryDsl, RunQueryDsl, SelectableHelper};
3
 
4
  use crate::{
5
+ models::entities::{keyframes::KeyframeEntity, videos::VideoEntity},
6
  services::keyframes::KeyframeService,
7
  };
8
 
src/repositories/videos/mod.rs CHANGED
@@ -1,7 +1,7 @@
1
  use deadpool_diesel::postgres::Pool;
2
  use diesel::{ExpressionMethods, QueryDsl, RunQueryDsl, SelectableHelper};
3
 
4
- use crate::{entities::videos::VideoEntity, services::videos::VideoService};
5
 
6
  #[derive(Clone)]
7
  pub struct VideoRepository<'a> {
 
1
  use deadpool_diesel::postgres::Pool;
2
  use diesel::{ExpressionMethods, QueryDsl, RunQueryDsl, SelectableHelper};
3
 
4
+ use crate::{models::entities::videos::VideoEntity, services::videos::VideoService};
5
 
6
  #[derive(Clone)]
7
  pub struct VideoRepository<'a> {
src/schema.rs CHANGED
@@ -19,7 +19,4 @@ diesel::table! {
19
 
20
  diesel::joinable!(keyframes -> videos (video_id));
21
 
22
- diesel::allow_tables_to_appear_in_same_query!(
23
- keyframes,
24
- videos,
25
- );
 
19
 
20
  diesel::joinable!(keyframes -> videos (video_id));
21
 
22
+ diesel::allow_tables_to_appear_in_same_query!(keyframes, videos,);
 
 
 
src/services/keyframes/mod.rs CHANGED
@@ -1,7 +1,8 @@
1
  use deadpool_diesel::postgres::Pool;
2
 
3
  use crate::{
4
- dtos::keyframes::KeyframeDto, repositories::keyframes::KeyframeRepository, states::AppState,
 
5
  };
6
 
7
  #[derive(Clone, Copy)]
 
1
  use deadpool_diesel::postgres::Pool;
2
 
3
  use crate::{
4
+ models::{dtos::keyframes::KeyframeDto, states::AppState},
5
+ repositories::keyframes::KeyframeRepository,
6
  };
7
 
8
  #[derive(Clone, Copy)]
src/services/mod.rs CHANGED
@@ -1,2 +1,2 @@
1
  pub mod keyframes;
2
- pub mod videos;
 
1
  pub mod keyframes;
2
+ pub mod videos;
src/services/videos/mod.rs CHANGED
@@ -1,6 +1,9 @@
1
  use deadpool_diesel::postgres::Pool;
2
 
3
- use crate::{dtos::videos::VideoDto, repositories::videos::VideoRepository, states::AppState};
 
 
 
4
 
5
  #[derive(Clone, Copy)]
6
  pub struct VideoService<'a> {
 
1
  use deadpool_diesel::postgres::Pool;
2
 
3
+ use crate::{
4
+ models::{dtos::videos::VideoDto, states::AppState},
5
+ repositories::videos::VideoRepository,
6
+ };
7
 
8
  #[derive(Clone, Copy)]
9
  pub struct VideoService<'a> {
src/states/mod.rs DELETED
@@ -1,48 +0,0 @@
1
- use std::sync::Arc;
2
-
3
- use deadpool_diesel::{
4
- Runtime,
5
- postgres::{Manager, Pool},
6
- };
7
- use qdrant_client::Qdrant;
8
-
9
- #[derive(Clone)]
10
- pub struct AppState {
11
- diesel_pool: Pool,
12
- qdrant_client: Arc<Qdrant>,
13
- }
14
-
15
- impl AppState {
16
- pub fn new() -> anyhow::Result<Self> {
17
- Ok(Self {
18
- diesel_pool: Self::diesel_pool_helper()?,
19
- qdrant_client: Self::qdrant_client_helper()?,
20
- })
21
- }
22
-
23
- fn diesel_pool_helper() -> anyhow::Result<Pool> {
24
- Pool::builder(Manager::new(
25
- std::env::var("DATABASE_URL")?,
26
- Runtime::Tokio1,
27
- ))
28
- .build()
29
- .map_err(Into::into)
30
- }
31
-
32
- fn qdrant_client_helper() -> anyhow::Result<Arc<Qdrant>> {
33
- Qdrant::from_url(&std::env::var("QDRANT_URL")?)
34
- .build()
35
- .map(Arc::new)
36
- .map_err(Into::into)
37
- }
38
- }
39
-
40
- impl AppState {
41
- pub fn pool(&self) -> &Pool {
42
- &self.diesel_pool
43
- }
44
-
45
- pub fn qdrant_client(&self) -> &Qdrant {
46
- &self.qdrant_client
47
- }
48
- }