@@ -79,7 +79,7 @@ pub fn delete_tag(conn: &mut AnyConnection, tag_id: i32) -> Result<usize, diesel
7979}
8080
8181use crate :: model:: schema:: tags:: dsl:: * ;
82- use crate :: model:: schema:: tags;
82+ use crate :: model:: schema:: { groups , tags} ;
8383use std:: fmt:: { Debug , Formatter , Result as fmtResult} ;
8484
8585impl Debug for Tag {
@@ -93,9 +93,10 @@ impl Debug for Tag {
9393}
9494
9595use super :: models:: TagCondition ;
96- use crate :: model:: models:: { OrderDirection , TagOrderBy , TagQueryOptions , UpdateTagDTO } ;
96+ use crate :: model:: models:: { Group , OrderDirection , TagOrderBy , TagQueryOptions , UpdateTagDTO } ;
9797use diesel:: dsl:: not;
9898use diesel:: sql_types:: Bool ;
99+ use crate :: model:: schema:: group_tags:: dsl:: group_tags;
99100
100101// 将 TagCondition 转换为 diesel 查询条件的辅助函数
101102fn build_tag_condition ( condition : TagCondition ) -> Box < dyn BoxableExpression < tags:: table , <AnyConnection as Connection >:: Backend , SqlType =diesel:: sql_types:: Bool > > {
@@ -280,3 +281,16 @@ pub fn decrease_tags_reference_count_by_conditions(
280281 // 减少引用计数
281282 query. set ( tags:: reference_count. eq ( tags:: reference_count - 1 ) ) . execute ( conn)
282283}
284+
285+ pub fn select_tag_by_group_id (
286+ conn : & mut AnyConnection ,
287+ group_id : i64 ,
288+ ) -> Result < Vec < Tag > , diesel:: result:: Error > {
289+ use crate :: model:: schema:: group_tags;
290+
291+ tags:: table
292+ . inner_join ( group_tags:: table. on ( tags:: id. eq ( group_tags:: tag_id) ) )
293+ . filter ( group_tags:: group_id. eq ( group_id as i32 ) )
294+ . select ( Tag :: as_select ( ) )
295+ . load ( conn)
296+ }
0 commit comments