@@ -44,50 +44,53 @@ pub fn raw_create_file(
4444// }
4545
4646pub fn create_file ( conn : & mut SqliteConnection , create_file_dto : CreateFileDTO ) -> Result < usize , AppError > {
47- let group_list = select_groups_by_conditions ( conn, vec ! [
48- GroupCondition :: Id ( create_file_dto. group_id)
49- ] , None ) ?;
50- let Some ( group) = group_list. get ( 0 ) else { todo ! ( ) } ;
51- let file_groups = select_file_groups_by_conditions (
52- conn,
53- vec ! [
54- FileGroupCondition :: GroupId ( create_file_dto. group_id)
55- ] , None ,
56- ) ?;
57-
58- if ( file_groups. len ( ) != 0 ) {
59- return Err ( CannotBindToPrimaryGroup ) ;
60- }
61- let mut count = 0 ;
62- count += internal:: files:: create_file ( conn, & create_file_dto) ?;
63- let file_list = internal:: files:: select_files_by_conditions ( conn, vec ! [
64- FileCondition :: GroupId ( create_file_dto. group_id)
65- ] , None ) ?;
66- let file = file_list. get ( 0 ) . ok_or ( AppError :: FileNotFound ) ?;
67-
68- update_groups_by_conditions ( conn, vec ! [
69- GroupCondition :: Id ( group. id)
70- ] , UpdateGroupDTO {
71- id : None ,
72- name : None ,
73- reference_count : None ,
74- is_primary : Some ( true ) ,
75- click_count : None ,
76- share_count : None ,
77- create_time : None ,
78- modify_time : None ,
79- } ) . expect ( "Error when creating group" ) ;
80-
81- match service:: file_group:: create_file_group ( conn, FileGroupDTO { file_id : file. id , group_id : group. id } ) {
82- Ok ( _) => {
83- count += 1 ;
47+ conn. transaction :: < usize , AppError , _ > ( |conn| {
48+ let group_list = select_groups_by_conditions ( conn, vec ! [
49+ GroupCondition :: Id ( create_file_dto. group_id)
50+ ] , None ) ?;
51+ let Some ( group) = group_list. get ( 0 ) else { todo ! ( ) } ;
52+ let file_groups = select_file_groups_by_conditions (
53+ conn,
54+ vec ! [
55+ FileGroupCondition :: GroupId ( create_file_dto. group_id)
56+ ] , None ,
57+ ) ?;
58+
59+ if file_groups. len ( ) != 0 {
60+ return Err ( CannotBindToPrimaryGroup ) ;
8461 }
85- Err ( e) => {
86- return Err ( e)
62+ let mut count = 0 ;
63+ count += internal:: files:: create_file ( conn, & create_file_dto) ?;
64+ let file_list = internal:: files:: select_files_by_conditions ( conn, vec ! [
65+ FileCondition :: GroupId ( create_file_dto. group_id)
66+ ] , None ) ?;
67+ let file = file_list. get ( 0 ) . ok_or ( AppError :: FileNotFound ) ?;
68+
69+ update_groups_by_conditions ( conn, vec ! [
70+ GroupCondition :: Id ( group. id)
71+ ] , UpdateGroupDTO {
72+ id : None ,
73+ name : None ,
74+ reference_count : None ,
75+ is_primary : Some ( true ) ,
76+ click_count : None ,
77+ share_count : None ,
78+ create_time : None ,
79+ modify_time : None ,
80+ } ) . expect ( "Error when creating group" ) ;
81+
82+ match service:: file_group:: create_file_group ( conn, FileGroupDTO { file_id : file. id , group_id : group. id } ) {
83+ Ok ( _) => {
84+ count += 1 ;
85+ }
86+ Err ( e) => {
87+ return Err ( e)
88+ }
8789 }
88- }
89- Ok ( count )
90+ Ok ( count )
91+ } )
9092}
93+
9194pub fn delete_file ( conn : & mut SqliteConnection , file_id : i32 ) -> Result < ( ) , AppError > {
9295 // 开始事务
9396 conn. transaction :: < ( ) , diesel:: result:: Error , _ > ( |conn| {
@@ -119,6 +122,7 @@ pub fn delete_file(conn: &mut SqliteConnection, file_id: i32) -> Result<(), AppE
119122}
120123
121124
125+ #[ allow( deprecated) ]
122126#[ deprecated]
123127pub fn select_files (
124128 conn : & mut SqliteConnection ,
0 commit comments