clockwork_scheduler/instructions/
queue_pause.rs

1use {
2    crate::state::*,
3    anchor_lang::prelude::*,
4};
5
6#[derive(Accounts)]
7pub struct QueuePause<'info> {
8    #[account()]
9    pub authority: Signer<'info>,
10
11    #[account(
12        mut,
13        seeds = [
14            SEED_QUEUE, 
15            queue.authority.key().as_ref(),
16            queue.name.as_bytes(),
17        ],
18        bump,
19        has_one = authority,
20        constraint = queue.status == QueueStatus::Pending
21    )]
22    pub queue: Account<'info, Queue>,
23}
24
25pub fn handler(ctx: Context<QueuePause>) -> Result<()> {
26    // Get accounts
27    let queue = &mut ctx.accounts.queue;
28
29    // Pause the queue
30    queue.status = QueueStatus::Paused;
31
32    Ok(())
33}