Skip to content

Commit d150f5d

Browse files
committed
refactor(models):重构模型调试实现并优化依赖导入
- 移除各模块中重复的 Debug trait 实现- 在 models.rs 中统一实现 Debug trait - 清理未使用的标准库 fmt 导入- 移除 service 模块中未使用的 JoinOnDsl 导入 - 优化文件分组判断逻辑使用 ? 操作符 - 集中管理模型结构体的调试格式化输出
1 parent 5ceb35a commit d150f5d

8 files changed

Lines changed: 55 additions & 60 deletions

File tree

file_classification_core/src/internal/file_group.rs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use super::models::{FileGroupCondition, FileGroupDTO};
22
use crate::model::schema::{file_groups, files};
33
use diesel::prelude::*;
4-
use std::fmt::{Debug, Formatter, Result as fmtResult};
54
use crate::utils::database::AnyConnection;
65
use crate::model::models::{File, FileGroupOrderBy, FileGroupQueryOptions, OrderDirection};
76
use crate::utils::errors::AppError;
@@ -26,7 +25,7 @@ pub fn delete_file_group_by_id(
2625
.filter(files::id.eq(file_group_dto.file_id))
2726
.first(conn);
2827

29-
if file.is_ok() && file.unwrap().group_id == file_group_dto.group_id {
28+
if file.is_ok() && file?.group_id == file_group_dto.group_id {
3029
return Err(CannotUnbindPrimaryGroup);
3130
}
3231

@@ -40,12 +39,6 @@ pub fn delete_file_group_by_id(
4039
.map_err(AppError::from) // 将 QueryResult 转换为 AppError
4140
}
4241

43-
impl Debug for FileGroupDTO {
44-
fn fmt(&self, f: &mut Formatter<'_>) -> fmtResult {
45-
write!(f, "FileGroup {{ file_id: {}, group_id: {} }}", self.file_id, self.group_id)
46-
}
47-
}
48-
4942
// 将 FileGroupCondition 转换为 diesel 查询条件的辅助函数
5043
fn build_file_group_condition(condition: FileGroupCondition) -> Box<dyn BoxableExpression<file_groups::table, <AnyConnection as Connection>::Backend, SqlType=diesel::sql_types::Bool>> {
5144
match condition {

file_classification_core/src/internal/files.rs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ use crate::model::models::{FileOrderBy, FileQueryOptions, OrderDirection};
55
use crate::model::schema::files;
66
use crate::model::schema::files::dsl::*;
77
use diesel::sql_types::Bool;
8-
use std::fmt::{Debug, Formatter, Result as fmtResult};
98

109
pub fn create_file(conn: &mut AnyConnection, new_file: &CreateFileDTO) -> Result<usize, diesel::result::Error> {
1110
diesel::insert_into(files::table)
@@ -74,15 +73,6 @@ pub fn delete_file_by_id(conn: &mut AnyConnection, file_id: i32) -> Result<usize
7473
diesel::delete(files.filter(files::id.eq(file_id))).execute(conn)
7574
}
7675

77-
impl Debug for File {
78-
fn fmt(&self, f: &mut Formatter<'_>) -> fmtResult {
79-
write!(
80-
f,
81-
"File {{ id: {}, type_: {}, path: {}, reference_count: {}, group_id: {} }}",
82-
self.id, self.type_, self.path, self.reference_count, self.group_id
83-
)
84-
}
85-
}
8676

8777
// 将 FileCondition 转换为 diesel 查询条件的辅助函数
8878
// 更新 build_condition 函数以处理新增的条件类型

file_classification_core/src/internal/group_tag.rs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use super::models::GroupTagDTO;
22
use crate::model::schema::group_tags;
33
use diesel::prelude::*;
4-
use std::fmt::{Debug, Formatter, Result as fmtResult};
54
use crate::utils::database::AnyConnection;
65
use super::models::GroupTagCondition;
76
use crate::model::models::{GroupTagOrderBy, GroupTagQueryOptions, OrderDirection};
@@ -30,12 +29,6 @@ pub fn delete_group_tag_by_id(
3029
.execute(conn)
3130
}
3231

33-
impl Debug for GroupTagDTO {
34-
fn fmt(&self, f: &mut Formatter<'_>) -> fmtResult {
35-
write!(f, "GroupTag {{ group_id: {}, tag_id: {} }}", self.group_id, self.tag_id)
36-
}
37-
}
38-
3932
// 将 GroupTagCondition 转换为 diesel 查询条件的辅助函数
4033
fn build_group_tag_condition(condition: GroupTagCondition) -> Box<dyn BoxableExpression<group_tags::table, <AnyConnection as Connection>::Backend, SqlType=diesel::sql_types::Bool>> {
4134
match condition {

file_classification_core/src/internal/groups.rs

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ use super::models::{CreateGroupDTO, Group, GroupFilter};
22
use diesel::prelude::*;
33
use crate::model::schema::groups::dsl::*;
44
use crate::model::schema::groups;
5-
use std::fmt::{Debug, Formatter, Result as fmtResult};
65
use super::models::GroupCondition;
76
use crate::model::models::{GroupOrderBy, GroupQueryOptions, OrderDirection, UpdateGroupDTO};
87
use diesel::dsl::not;
@@ -109,22 +108,6 @@ pub fn decrease_group_reference_count(
109108
.set(groups::reference_count.eq(groups::reference_count - 1))
110109
.execute(conn)
111110
}
112-
impl Debug for Group {
113-
fn fmt(&self, f: &mut Formatter<'_>) -> fmtResult {
114-
write!(
115-
f,
116-
"Group {{ id: {}, name: {}, reference_count: {}, is_primary: {}, click_count: {}, share_count: {}, create_time: {}, modify_time: {} }}",
117-
self.id,
118-
self.name,
119-
self.reference_count,
120-
self.is_primary,
121-
self.click_count,
122-
self.share_count,
123-
self.create_time,
124-
self.modify_time
125-
)
126-
}
127-
}
128111

129112
// 将 GroupCondition 转换为 diesel 查询条件的辅助函数
130113
fn build_group_condition(condition: GroupCondition) -> Box<dyn BoxableExpression<groups::table, <AnyConnection as Connection>::Backend, SqlType=diesel::sql_types::Bool>> {

file_classification_core/src/internal/tags.rs

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,11 @@ use super::models::{CreateTagDTO, Tag, TagFilter};
22
use diesel::prelude::*;
33
use crate::utils::database::AnyConnection;
44
use crate::model::schema::tags::dsl::*;
5-
use crate::model::schema::{groups, tags};
6-
use std::fmt::{Debug, Formatter, Result as fmtResult};
5+
use crate::model::schema::{tags};
76
use super::models::TagCondition;
8-
use crate::model::models::{Group, OrderDirection, TagOrderBy, TagQueryOptions, UpdateTagDTO};
7+
use crate::model::models::{OrderDirection, TagOrderBy, TagQueryOptions, UpdateTagDTO};
98
use diesel::dsl::not;
109
use diesel::sql_types::Bool;
11-
use crate::model::schema::group_tags::dsl::group_tags;
1210

1311
pub fn create_tag(
1412
conn: &mut AnyConnection,
@@ -86,17 +84,6 @@ pub fn delete_tag(conn: &mut AnyConnection, tag_id: i32) -> Result<usize, diesel
8684
diesel::delete(tags.filter(tags::id.eq(tag_id))).execute(conn)
8785
}
8886

89-
90-
impl Debug for Tag {
91-
fn fmt(&self, f: &mut Formatter<'_>) -> fmtResult {
92-
write!(
93-
f,
94-
"Tag {{ id: {}, name: {}, reference_count: {} }}",
95-
self.id, self.name, self.reference_count
96-
)
97-
}
98-
}
99-
10087
// 将 TagCondition 转换为 diesel 查询条件的辅助函数
10188
fn build_tag_condition(condition: TagCondition) -> Box<dyn BoxableExpression<tags::table, <AnyConnection as Connection>::Backend, SqlType=diesel::sql_types::Bool>> {
10289
match condition {

file_classification_core/src/model/models.rs

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use std::fmt::{Debug, Formatter, Result as fmtResult};
12
use super::schema::{file_groups, files, group_tags, groups, tags};
23
use chrono;
34
use diesel::prelude::*;
@@ -18,6 +19,16 @@ pub struct File {
1819
pub group_id: i32,
1920
}
2021

22+
impl Debug for File {
23+
fn fmt(&self, f: &mut Formatter<'_>) -> fmtResult {
24+
write!(
25+
f,
26+
"File {{ id: {}, type_: {}, path: {}, reference_count: {}, group_id: {} }}",
27+
self.id, self.type_, self.path, self.reference_count, self.group_id
28+
)
29+
}
30+
}
31+
2132
#[derive(Insertable)]
2233
#[diesel(table_name = files)]
2334
pub struct CreateFileDTO {
@@ -119,13 +130,29 @@ pub struct Group {
119130
pub modify_time: chrono::NaiveDateTime,
120131
}
121132

133+
impl Debug for Group {
134+
fn fmt(&self, f: &mut Formatter<'_>) -> fmtResult {
135+
write!(
136+
f,
137+
"Group {{ id: {}, name: {}, reference_count: {}, is_primary: {}, click_count: {}, share_count: {}, create_time: {}, modify_time: {} }}",
138+
self.id,
139+
self.name,
140+
self.reference_count,
141+
self.is_primary,
142+
self.click_count,
143+
self.share_count,
144+
self.create_time,
145+
self.modify_time
146+
)
147+
}
148+
}
149+
122150
#[derive(Insertable, Deserialize, Serialize)]
123151
#[diesel(table_name = groups)]
124152
pub struct CreateGroupDTO {
125153
pub name: String,
126154
}
127155

128-
129156
#[derive(Deserialize,Clone)]
130157
pub enum GroupCondition {
131158
Id(i32),
@@ -242,6 +269,16 @@ pub struct Tag {
242269
pub reference_count: i32,
243270
}
244271

272+
impl Debug for Tag {
273+
fn fmt(&self, f: &mut Formatter<'_>) -> fmtResult {
274+
write!(
275+
f,
276+
"Tag {{ id: {}, name: {}, reference_count: {} }}",
277+
self.id, self.name, self.reference_count
278+
)
279+
}
280+
}
281+
245282
#[derive(Insertable, Deserialize, Serialize)]
246283
#[diesel(table_name = tags)]
247284
pub struct CreateTagDTO {
@@ -319,6 +356,12 @@ pub struct FileGroupDTO {
319356
pub group_id: i32,
320357
}
321358

359+
impl Debug for FileGroupDTO {
360+
fn fmt(&self, f: &mut Formatter<'_>) -> fmtResult {
361+
write!(f, "FileGroup {{ file_id: {}, group_id: {} }}", self.file_id, self.group_id)
362+
}
363+
}
364+
322365
#[derive(serde::Deserialize, Clone)]
323366
pub enum FileGroupCondition {
324367
FileId(i32),
@@ -360,6 +403,12 @@ pub struct GroupTagDTO {
360403
pub tag_id: i32,
361404
}
362405

406+
impl Debug for GroupTagDTO {
407+
fn fmt(&self, f: &mut Formatter<'_>) -> fmtResult {
408+
write!(f, "GroupTag {{ group_id: {}, tag_id: {} }}", self.group_id, self.tag_id)
409+
}
410+
}
411+
363412
#[derive(serde::Deserialize, Clone)]
364413
pub enum GroupTagCondition {
365414
GroupId(i32),

file_classification_core/src/service/groups.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::model::models::{FileCondition, FileGroupCondition, GroupCondition, Gr
22
use crate::service::AppError;
33
use crate::{internal::groups, model::models::{CreateGroupDTO, Group, GroupFilter}};
44
use diesel::result::Error;
5-
use diesel::{Connection, JoinOnDsl};
5+
use diesel::{Connection};
66
use crate::utils::database::AnyConnection;
77

88
pub fn create_group_by_name<S>(conn: &mut AnyConnection, name: S) -> Result<usize, Error>

file_classification_core/src/service/tags.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use crate::{
33
internal::tags,
44
model::models::{CreateTagDTO, Tag, TagFilter},
55
};
6-
use diesel::{Connection, JoinOnDsl};
6+
use diesel::{Connection};
77
use crate::utils::database::AnyConnection;
88

99
pub fn create_tag_by_name<S>(conn: &mut AnyConnection, name: S) -> Result<Tag, diesel::result::Error>

0 commit comments

Comments
 (0)