11use actix_web:: { get, post, put, delete, web, HttpResponse , Result } ;
22use serde_json:: json;
33use file_classification_core:: { model:: models:: { FileCondition , UpdateFileDTO , FileFilter } , service:: files:: { select_files, select_files_by_conditions, update_files_by_conditions, delete_file} , utils} ;
4- use crate :: utils:: models:: { ApiResponse , ApiError } ;
4+ use file_classification_core:: service:: files:: create_file;
5+ use crate :: utils:: database:: { DbPool , DbPooledConnection } ;
6+ use crate :: utils:: models:: { ApiResponse , ApiError , CreateFileDTO } ;
7+
58#[ get( "/api/files" ) ]
69async fn api_list_files (
710 query : web:: Query < FileFilter > ,
11+ pool : web:: Data < DbPool > ,
812) -> Result < HttpResponse > {
9- let mut conn = utils :: database :: establish_connection ( ) ;
13+ let mut conn = pool . get ( ) . expect ( "Failed to get connection from pool" ) ;
1014 match select_files ( & mut conn, query. into_inner ( ) , 100 ) {
1115 Ok ( files) => {
1216 let count = files. len ( ) ;
@@ -27,8 +31,9 @@ async fn api_list_files(
2731#[ post( "/api/files/search" ) ]
2832async fn api_list_files_by_conditions (
2933 conditions : web:: Json < Vec < FileCondition > > ,
34+ pool : web:: Data < DbPool > ,
3035) -> Result < HttpResponse > {
31- let mut conn = utils :: database :: establish_connection ( ) ;
36+ let mut conn = pool . get ( ) . expect ( "Failed to get connection from pool" ) ;
3237 match select_files_by_conditions ( & mut conn, conditions. into_inner ( ) , Some ( 100 ) ) {
3338 Ok ( files) => {
3439 let count = files. len ( ) ;
@@ -49,15 +54,16 @@ async fn api_list_files_by_conditions(
4954// #[post("/api/files")]
5055// async fn api_create_file(
5156// file_dto: web::Json<CreateFileDTO>,
57+ // pool: web::Data<DbPool>,
5258// ) -> Result<HttpResponse> {
5359// let create_dto = file_classification_core::model::models::CreateFileDTO {
5460// type_: &file_dto.type_,
5561// path: &file_dto.path,
5662// group_id: file_dto.group_id,
5763// };
5864//
59- // let mut conn = utils::database::establish_connection( );
60- // match create_file(&mut conn, & create_dto) {
65+ // let mut conn = pool.get().expect("Failed to get connection from pool" );
66+ // match create_file(&mut conn, create_dto) {
6167// Ok(file) => Ok(HttpResponse::Created().json(ApiResponse::from(file))),
6268// Err(e) => Ok(HttpResponse::InternalServerError().json(ApiError {
6369// success: false,
@@ -69,10 +75,11 @@ async fn api_list_files_by_conditions(
6975#[ put( "/api/files" ) ]
7076async fn api_update_files_by_conditions (
7177 payload : web:: Json < ( Vec < FileCondition > , UpdateFileDTO ) > ,
78+ pool : web:: Data < DbPool > ,
7279) -> Result < HttpResponse > {
7380 let ( conditions, update_dto) = payload. into_inner ( ) ;
7481
75- let mut conn = utils :: database :: establish_connection ( ) ;
82+ let mut conn = pool . get ( ) . expect ( "Failed to get connection from pool" ) ;
7683 match update_files_by_conditions ( & mut conn, conditions, update_dto) {
7784 Ok ( count) => Ok ( HttpResponse :: Ok ( ) . json ( json ! ( {
7885 "success" : true ,
@@ -89,10 +96,11 @@ async fn api_update_files_by_conditions(
8996#[ delete( "/api/files/{id}" ) ]
9097async fn api_delete_file (
9198 path : web:: Path < i32 > ,
99+ pool : web:: Data < DbPool > ,
92100) -> Result < HttpResponse > {
93101 let file_id = path. into_inner ( ) ;
94102
95- let mut conn = utils :: database :: establish_connection ( ) ;
103+ let mut conn = pool . get ( ) . expect ( "Failed to get connection from pool" ) ;
96104 match delete_file ( & mut conn, file_id) {
97105 Ok ( _) => Ok ( HttpResponse :: Ok ( ) . json ( json ! ( {
98106 "success" : true ,
0 commit comments