clockwork_scheduler/instructions/
queue_process.rs

1use {
2    crate::{state::*, errors::ClockworkError},
3    anchor_lang::prelude::*,
4};
5
6#[derive(Accounts)]
7pub struct QueueProcess<'info> {
8    #[account(
9        mut,
10        seeds = [
11            SEED_QUEUE, 
12            queue.authority.as_ref(),
13            queue.name.as_bytes(),
14        ],
15        bump,
16        constraint = queue.process_at.is_some() && queue.process_at <= Some(Clock::get().unwrap().unix_timestamp) @ ClockworkError::QueueNotDue,
17        constraint = queue.status == QueueStatus::Pending @ ClockworkError::InvalidQueueStatus,
18    )]
19    pub queue: Account<'info, Queue>,
20
21    #[account(mut)]
22    pub worker: Signer<'info>,
23}
24
25pub fn handler(ctx: Context<QueueProcess>) -> Result<()> {
26    let queue = &mut ctx.accounts.queue;
27    queue.process()
28}