@@ -16,11 +16,14 @@ use actix_web::web::Json;
1616use actix_web:: web:: Path ;
1717use apistos:: api_operation;
1818use uuid:: Uuid ;
19+ use std:: path:: PathBuf ;
1920
2021use crate :: api:: errors:: ErrorResponse ;
2122use crate :: api:: user_context:: UserContext ;
2223use crate :: database:: dataset_table;
24+
2325use hanami_common:: enums;
26+ use hanami_dataset:: dataset_io:: read_data_set_file;
2427
2528use super :: dataset_structs:: DatasetResp ;
2629
@@ -34,19 +37,8 @@ use super::dataset_structs::DatasetResp;
3437 error_code = 500
3538) ]
3639pub async fn get_dataset ( dataset_uuid : Path < Uuid > , context : UserContext ) -> Result < Json < DatasetResp > , ErrorResponse > {
37- match dataset_table:: get_dataset ( & dataset_uuid, & context) {
38- Ok ( dataset) => {
39- let resp = DatasetResp {
40- uuid : dataset_uuid. clone ( ) ,
41- name : dataset. name . clone ( ) ,
42- created_by : dataset. created_by . clone ( ) ,
43- created_at : dataset. created_at . clone ( ) ,
44- updated_by : dataset. updated_by . clone ( ) ,
45- updated_at : dataset. updated_at . clone ( ) ,
46- } ;
47-
48- return Ok ( Json ( resp) ) ;
49- } ,
40+ let dataset_data = match dataset_table:: get_dataset ( & dataset_uuid, & context) {
41+ Ok ( dataset_data) => dataset_data,
5042 Err ( enums:: DbError :: InternalError ) => {
5143 return Err ( ErrorResponse :: InternalError ( "" . to_string ( ) ) ) ;
5244 } ,
@@ -55,4 +47,24 @@ pub async fn get_dataset(dataset_uuid: Path<Uuid>, context: UserContext) -> Resu
5547 return Err ( ErrorResponse :: NotFound ( msg) ) ;
5648 }
5749 } ;
50+
51+ let file_handle = match read_data_set_file ( & PathBuf :: from ( dataset_data. file_path ) ) {
52+ Ok ( file_handle) => file_handle,
53+ Err ( _) => {
54+ return Err ( ErrorResponse :: InternalError ( "" . to_string ( ) ) ) ;
55+ }
56+ } ;
57+
58+ let resp = DatasetResp {
59+ uuid : dataset_uuid. clone ( ) ,
60+ name : dataset_data. name . clone ( ) ,
61+ number_of_rows : file_handle. get_number_of_rows ( ) ,
62+ number_of_columns : file_handle. header . columns . len ( ) as u64 ,
63+ created_by : dataset_data. created_by . clone ( ) ,
64+ created_at : dataset_data. created_at . clone ( ) ,
65+ updated_by : dataset_data. updated_by . clone ( ) ,
66+ updated_at : dataset_data. updated_at . clone ( ) ,
67+ } ;
68+
69+ return Ok ( Json ( resp) ) ;
5870}
0 commit comments