@@ -6,7 +6,10 @@ use async_trait::async_trait;
6
6
use tracing:: { instrument, trace} ;
7
7
use uuid:: Uuid ;
8
8
9
- use crate :: { PgDB , templates:: dashboard:: moderator:: jobs:: JobSummary } ;
9
+ use crate :: {
10
+ PgDB ,
11
+ templates:: dashboard:: { employer:: jobs:: JobStatus , moderator:: jobs:: JobSummary } ,
12
+ } ;
10
13
11
14
/// Trait that defines some database operations used in the moderator
12
15
/// dashboard.
@@ -15,8 +18,8 @@ pub(crate) trait DBDashBoardModerator {
15
18
/// Approve job.
16
19
async fn approve_job ( & self , job_id : & Uuid , reviewer : & Uuid ) -> Result < ( ) > ;
17
20
18
- /// List moderation pending jobs .
19
- async fn list_moderation_pending_jobs ( & self ) -> Result < Vec < JobSummary > > ;
21
+ /// List jobs that match the given status .
22
+ async fn list_jobs_for_moderation ( & self , status : JobStatus ) -> Result < Vec < JobSummary > > ;
20
23
21
24
/// Reject job.
22
25
async fn reject_job ( & self , job_id : & Uuid , reviewer : & Uuid , review_notes : Option < & String > ) -> Result < ( ) > ;
@@ -47,8 +50,8 @@ impl DBDashBoardModerator for PgDB {
47
50
}
48
51
49
52
#[ instrument( skip( self ) , err) ]
50
- async fn list_moderation_pending_jobs ( & self ) -> Result < Vec < JobSummary > > {
51
- trace ! ( "db: list moderation pending jobs " ) ;
53
+ async fn list_jobs_for_moderation ( & self , status : JobStatus ) -> Result < Vec < JobSummary > > {
54
+ trace ! ( "db: list jobs for moderation " ) ;
52
55
53
56
let db = self . pool . get ( ) . await ?;
54
57
let jobs = db
@@ -78,10 +81,10 @@ impl DBDashBoardModerator for PgDB {
78
81
from job j
79
82
join employer e on j.employer_id = e.employer_id
80
83
left join member m on e.member_id = m.member_id
81
- where j.status = 'pending-approval'
84
+ where j.status = $1
82
85
order by j.created_at desc;
83
86
" ,
84
- & [ ] ,
87
+ & [ & status . to_string ( ) ] ,
85
88
)
86
89
. await ?
87
90
. into_iter ( )
0 commit comments