clockwork_scheduler/instructions/
queue_process.rs1use {
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}