Skip to content

Commit 1211016

Browse files
committed
chore: use as_select instead of listing columns
1 parent 1037d30 commit 1211016

5 files changed

Lines changed: 37 additions & 23 deletions

File tree

file_classification_core/src/internal/file_group.rs

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
use super::models::{FileGroupCondition, FileGroupDTO};
2-
use crate::model::schema::file_groups;
2+
use crate::model::schema::{file_groups, files};
33
use diesel::prelude::*;
44
use std::fmt::{Debug, Formatter, Result as fmtResult};
55
use crate::utils::database::AnyConnection;
6-
use crate::model::models::{FileGroupOrderBy, FileGroupQueryOptions, OrderDirection};
6+
use crate::model::models::{File, FileGroupOrderBy, FileGroupQueryOptions, OrderDirection};
7+
use crate::utils::errors::AppError;
8+
use crate::utils::errors::AppError::CannotUnbindPrimaryGroup;
79

810
pub fn insert_file_group(
911
conn: &mut AnyConnection,
@@ -17,13 +19,25 @@ pub fn insert_file_group(
1719
pub fn delete_file_group_by_id(
1820
conn: &mut AnyConnection,
1921
file_group_dto: &FileGroupDTO,
20-
) -> Result<usize, diesel::result::Error> {
22+
) -> Result<usize, AppError> {
23+
// 判断是否是文件-主组关系 若是则抛异常
24+
let file = files::table
25+
.select(File::as_select())
26+
.filter(files::id.eq(file_group_dto.file_id))
27+
.first(conn);
28+
29+
if file.is_ok() && file.unwrap().group_id == file_group_dto.group_id {
30+
return Err(CannotUnbindPrimaryGroup);
31+
}
32+
2133
// 删除关联记录
2234
diesel::delete(
2335
file_groups::table
2436
.filter(file_groups::group_id.eq(file_group_dto.group_id))
25-
.filter(file_groups::file_id.eq(file_group_dto.file_id))
26-
).execute(conn)
37+
.filter(file_groups::file_id.eq(file_group_dto.file_id)),
38+
)
39+
.execute(conn)
40+
.map_err(AppError::from) // 将 QueryResult 转换为 AppError
2741
}
2842

2943
impl Debug for FileGroupDTO {
@@ -94,7 +108,7 @@ pub fn select_file_groups_by_conditions(
94108
}
95109

96110
query
97-
.select((file_groups::file_id, file_groups::group_id))
111+
.select(FileGroupDTO::as_select())
98112
.load(conn)
99113
}
100114

@@ -140,7 +154,7 @@ pub fn select_file_groups_by_conditions_with_options(
140154
}
141155

142156
query
143-
.select((file_groups::file_id, file_groups::group_id))
157+
.select(FileGroupDTO::as_select())
144158
.load(conn)
145159
}
146160

file_classification_core/src/internal/files.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ pub fn create_file(conn: &mut AnyConnection, new_file: &CreateFileDTO) -> Result
1515
pub fn find_file_by_id(conn: &mut AnyConnection, _id: i32) -> Result<Option<File>, diesel::result::Error> {
1616
files::table
1717
.filter(files::id.eq(_id))
18-
.select((files::id, files::type_, files::path, files::reference_count, files::group_id))
18+
.select(File::as_select())
1919
.first(conn)
2020
.optional()
2121
}
@@ -66,7 +66,7 @@ pub fn select_files(
6666

6767
// 执行查询
6868
base_query
69-
.select((files::id, files::type_, files::path, files::reference_count, files::group_id))
69+
.select(File::as_select())
7070
.load(conn)
7171
}
7272

@@ -158,7 +158,7 @@ pub fn select_files_by_conditions(
158158
}
159159

160160
query
161-
.select((files::id, files::type_, files::path, files::reference_count, files::group_id))
161+
.select(File::as_select())
162162
.load(conn)
163163
}
164164

@@ -222,7 +222,7 @@ pub fn select_files_by_conditions_with_options(
222222
}
223223

224224
query
225-
.select((files::id, files::type_, files::path, files::reference_count, files::group_id))
225+
.select(File::as_select())
226226
.load(conn)
227227
}
228228

file_classification_core/src/internal/group_tag.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ pub fn select_group_tags_by_conditions(
9898
}
9999

100100
query
101-
.select((group_tags::group_id, group_tags::tag_id))
101+
.select(GroupTagDTO::as_select())
102102
.load(conn)
103103
}
104104

@@ -144,7 +144,7 @@ pub fn select_group_tags_by_conditions_with_options(
144144
}
145145

146146
query
147-
.select((group_tags::group_id, group_tags::tag_id))
147+
.select(GroupTagDTO::as_select())
148148
.load(conn)
149149
}
150150

file_classification_core/src/internal/tags.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ pub fn create_tag(
2020

2121
// 手动获取最新插入的记录
2222
tags.order(tags::id.desc())
23-
.select((tags::id, tags::name, tags::reference_count))
23+
.select(Tag::as_select())
2424
.first(conn)
2525
}
2626

@@ -30,14 +30,14 @@ pub fn find_tag_by_name(
3030
tag_name: &str,
3131
) -> Result<Option<Tag>, diesel::result::Error> {
3232
tags.filter(tags::name.eq(tag_name))
33-
.select((tags::id, tags::name, tags::reference_count))
33+
.select(Tag::as_select())
3434
.first::<Tag>(conn)
3535
.optional()
3636
}
3737

3838
pub fn find_tag_by_id(conn: &mut AnyConnection, tag_id: i32) -> Result<Option<Tag>, diesel::result::Error> {
3939
tags.filter(tags::id.eq(tag_id))
40-
.select((tags::id, tags::name, tags::reference_count))
40+
.select(Tag::as_select())
4141
.first::<Tag>(conn)
4242
.optional()
4343
}
@@ -78,7 +78,7 @@ pub fn select_tags(
7878

7979
// 执行查询,手动指定选择的字段
8080
base_query
81-
.select((tags::id, tags::name, tags::reference_count))
81+
.select(Tag::as_select())
8282
.load(conn)
8383
}
8484

@@ -162,7 +162,7 @@ pub fn select_tags_by_conditions(
162162
}
163163

164164
query
165-
.select((tags::id, tags::name, tags::reference_count))
165+
.select(Tag::as_select())
166166
.load(conn)
167167
}
168168

@@ -214,7 +214,7 @@ pub fn select_tags_by_conditions_with_options(
214214
}
215215

216216
query
217-
.select((tags::id, tags::name, tags::reference_count))
217+
.select(Tag::as_select())
218218
.load(conn)
219219
}
220220

file_classification_core/src/model/models.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -311,8 +311,8 @@ pub struct UpdateTag {
311311
/** FileGroup Related
312312
*/
313313

314-
// NOTE: FileGroupDTO == CreateFileGroupDTO
315-
#[derive(Queryable, Insertable, Serialize, serde::Deserialize)]
314+
// NOTE: FileGroupDTO == CreateFileGroupDTO == FileGroup
315+
#[derive(Queryable, Selectable, Insertable, Serialize, serde::Deserialize)]
316316
#[diesel(table_name = file_groups)]
317317
pub struct FileGroupDTO {
318318
pub file_id: i32,
@@ -352,8 +352,8 @@ pub enum FileGroupOrderBy {
352352
/** GroupTag Related
353353
*/
354354

355-
// NOTE: GroupTagDTO == CreateGroupTagDTO
356-
#[derive(Queryable, Insertable, Serialize, Deserialize)]
355+
// NOTE: GroupTagDTO == CreateGroupTagDTO == GroupTag
356+
#[derive(Queryable, Selectable, Insertable, Serialize, Deserialize)]
357357
#[diesel(table_name = group_tags)]
358358
pub struct GroupTagDTO {
359359
pub group_id: i32,

0 commit comments

Comments
 (0)