Skip to content

Commit 5db9971

Browse files
committed
snapshot
1 parent 4df9057 commit 5db9971

15 files changed

Lines changed: 1664 additions & 93 deletions

File tree

Cargo.lock

Lines changed: 1614 additions & 44 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

file_classification_cli/src/bin/create_file_group.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use file_classification_core::service::file_group::create_file_group;
22
use file_classification_core::utils::database::establish_connection;
33
use std::io::{stdin, stdout, Write};
4+
use file_classification_core::model::models::FileGroupDTO;
45

56
fn main() {
67
let connection = &mut establish_connection();
@@ -18,7 +19,7 @@ fn main() {
1819
stdin().read_line(&mut group_id_input).unwrap();
1920
let group_id: i32 = group_id_input.trim().parse().expect("Invalid Group ID");
2021

21-
let result = create_file_group(connection, file_id, group_id);
22+
let result = create_file_group(connection, FileGroupDTO{ file_id, group_id});
2223
match result {
2324
Ok(new_file_group) => {
2425
println!("FileGroup created successfully!(NewFileGroup<{:?}>)", new_file_group)

file_classification_cli/src/bin/create_group_tag.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use file_classification_core::service::group_tag::create_group_tag;
22
use file_classification_core::utils::database::establish_connection;
33
use std::io::{stdin, stdout, Write};
4+
use file_classification_core::model::models::GroupTagDTO;
45

56
fn main() {
67
let connection = &mut establish_connection();
@@ -18,7 +19,7 @@ fn main() {
1819
stdin().read_line(&mut tag_id_input).unwrap();
1920
let tag_id: i32 = tag_id_input.trim().parse().expect("Invalid Tag ID");
2021

21-
let result = create_group_tag(connection, group_id, tag_id);
22+
let result = create_group_tag(connection, GroupTagDTO{group_id, tag_id});
2223
match result {
2324
Ok(new_group_tag) => {
2425
println!("GroupTag created successfully!(GroupTag<{:?}>)", new_group_tag)

file_classification_cli/src/bin/delete_file_group.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use file_classification_core::service::file_group::delete_file_group;
22
use file_classification_core::utils::database::establish_connection;
33
use std::io::{stdin, stdout, Write};
4+
use file_classification_core::model::models::FileGroupDTO;
45

56
fn main() {
67
let connection = &mut establish_connection();
@@ -18,7 +19,7 @@ fn main() {
1819
stdin().read_line(&mut group_id_input).unwrap();
1920
let group_id: i32 = group_id_input.trim().parse().expect("Invalid Group ID");
2021

21-
let result = delete_file_group(connection, file_id, group_id);
22+
let result = delete_file_group(connection, FileGroupDTO{file_id, group_id});
2223
match result {
2324
Ok(deleted_file_group_num) => {
2425
if deleted_file_group_num == 0 {

file_classification_cli/src/bin/delete_group_tag.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use file_classification_core::service::group_tag::delete_group_tag;
22
use file_classification_core::utils::database::establish_connection;
33
use std::io::{stdin, stdout, Write};
4+
use file_classification_core::model::models::GroupTagDTO;
45

56
fn main() {
67
let connection = &mut establish_connection();
@@ -18,7 +19,7 @@ fn main() {
1819
stdin().read_line(&mut tag_id_input).unwrap();
1920
let tag_id: i32 = tag_id_input.trim().parse().expect("Invalid Tag ID");
2021

21-
let result = delete_group_tag(connection, group_id, tag_id);
22+
let result = delete_group_tag(connection, GroupTagDTO{group_id, tag_id});
2223
match result {
2324
Ok(deleted_group_tag_num) => {
2425
if deleted_group_tag_num == 0 {

file_classification_core/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ edition = "2024"
77
diesel = { workspace = true }
88
dotenvy = { workspace = true }
99
chrono = { workspace = true }
10+
serde = { version = "1.0.219", features = ["derive"] }
1011
#mysqlclient-sys = { workspace = true }
1112
#libsqlite3-sys = { workspace = true }
1213
#openssl-sys = { workspace = true }

file_classification_core/src/internal/file_group.rs

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,40 +9,37 @@ use std::fmt::{Debug, Formatter, Result as fmtResult};
99

1010
pub fn create_file_group(
1111
conn: &mut SqliteConnection,
12-
file_id: i32,
13-
group_id: i32,
12+
file_group_dto: FileGroupDTO,
1413
) -> Result<FileGroupDTO, AppError> {
15-
let group = find_group_by_id(conn, group_id)?.ok_or(AppError::GroupNotFound)?;
14+
let group = find_group_by_id(conn, file_group_dto.group_id)?.ok_or(AppError::GroupNotFound)?;
1615

1716
if group.is_primary {
1817
return Err(AppError::CannotAssociateWithPrimary);
1918
}
2019

21-
let new_file_group = FileGroupDTO { file_id, group_id };
2220
let result = conn.transaction::<_, AppError, _>(|conn| {
23-
increase_file_reference_count(conn, file_id)?;
24-
increase_group_reference_count(conn, group_id)?;
25-
Ok(diesel::insert_into(file_groups::table).values(&new_file_group).execute(conn))
21+
increase_file_reference_count(conn, file_group_dto.file_id)?;
22+
increase_group_reference_count(conn, file_group_dto.group_id)?;
23+
Ok(diesel::insert_into(file_groups::table).values(&file_group_dto).execute(conn))
2624
});
2725
let _ = result?;
28-
Ok(new_file_group)
26+
Ok(file_group_dto)
2927
}
3028

3129
pub fn delete_file_group(
3230
conn: &mut SqliteConnection,
33-
file_id: i32,
34-
group_id: i32,
31+
file_group_dto: FileGroupDTO,
3532
) -> Result<usize, AppError> {
3633
let result = conn.transaction::<_, AppError, _>(|conn| {
3734
// 减少组和标签的引用计数
38-
decrease_group_reference_count(conn, group_id)?;
39-
decrease_file_reference_count(conn, file_id)?;
35+
decrease_group_reference_count(conn, file_group_dto.group_id)?;
36+
decrease_file_reference_count(conn, file_group_dto.file_id)?;
4037

4138
// 删除关联记录
4239
let deleted_count = diesel::delete(
4340
file_groups::table
44-
.filter(file_groups::group_id.eq(group_id))
45-
.filter(file_groups::file_id.eq(file_id))
41+
.filter(file_groups::group_id.eq(file_group_dto.group_id))
42+
.filter(file_groups::file_id.eq(file_group_dto.file_id))
4643
)
4744
.execute(conn)?;
4845

file_classification_core/src/internal/files.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ use diesel::prelude::*;
44
pub fn create_file(conn: &mut SqliteConnection, new_file: &CreateFileDTO) -> Result<File, AppError> {
55
diesel::insert_into(files::table)
66
.values(new_file)
7+
// NOTE: as_returning 只有一部分数据库支持
8+
// TODO: 若不支持则需要另外处理
79
.returning(File::as_returning())
810
.get_result(conn)
911
.map_err(|e| AppError::CreateFileFailed(e.to_string()))
@@ -32,6 +34,7 @@ pub fn decrease_file_reference_count(
3234
Ok(())
3335
}
3436

37+
#[deprecated]
3538
pub fn select_files(
3639
conn: &mut SqliteConnection,
3740
search_input: FileFilter,

file_classification_core/src/internal/group_tag.rs

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,31 @@ use std::fmt::{Debug, Formatter, Result as fmtResult};
55

66
pub fn create_group_tag(
77
conn: &mut SqliteConnection,
8-
group_id: i32,
9-
tag_id: i32,
8+
group_tag_dto: GroupTagDTO
109
) -> Result<GroupTagDTO, AppError> {
11-
let new_group_tag = GroupTagDTO { group_id, tag_id };
1210
let result = conn.transaction::<_, AppError, _>(|conn| {
13-
increase_group_reference_count(conn, group_id)?;
14-
increase_tag_reference_count(conn, tag_id)?;
15-
Ok(diesel::insert_into(group_tags::table).values(&new_group_tag).execute(conn))
11+
increase_group_reference_count(conn, group_tag_dto.group_id)?;
12+
increase_tag_reference_count(conn, group_tag_dto.tag_id)?;
13+
Ok(diesel::insert_into(group_tags::table).values(&group_tag_dto).execute(conn))
1614
});
1715
let _ = result?;
18-
Ok(new_group_tag)
16+
Ok(group_tag_dto)
1917
}
2018

2119
pub fn delete_group_tag(
2220
conn: &mut SqliteConnection,
23-
group_id: i32,
24-
tag_id: i32,
21+
group_tag_dto: GroupTagDTO
2522
) -> Result<usize, AppError> {
2623
let result = conn.transaction::<_, AppError, _>(|conn| {
2724
// 减少组和标签的引用计数
28-
decrease_group_reference_count(conn, group_id)?;
29-
decrease_tag_reference_count(conn, tag_id)?;
25+
decrease_group_reference_count(conn, group_tag_dto.group_id)?;
26+
decrease_tag_reference_count(conn, group_tag_dto.tag_id)?;
3027

3128
// 删除关联记录
3229
let deleted_count = diesel::delete(
3330
group_tags::table
34-
.filter(group_tags::group_id.eq(group_id))
35-
.filter(group_tags::tag_id.eq(tag_id))
31+
.filter(group_tags::group_id.eq(group_tag_dto.group_id))
32+
.filter(group_tags::tag_id.eq(group_tag_dto.tag_id))
3633
)
3734
.execute(conn)?;
3835

file_classification_core/src/internal/groups.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ pub fn mark_group_as_non_primary(conn: &mut SqliteConnection) -> Result<(), AppE
4747
Ok(())
4848
}
4949

50+
#[deprecated]
5051
pub fn select_groups(
5152
conn: &mut SqliteConnection,
5253
search_input: GroupFilter,

0 commit comments

Comments
 (0)