clockwork_scheduler/instructions/
queue_resume.rs1use {
2 crate::state::*,
3 anchor_lang::prelude::*,
4};
5
6#[derive(Accounts)]
7#[instruction(skip_forward: bool)]
8pub struct QueueResume<'info> {
9 #[account()]
10 pub authority: Signer<'info>,
11
12 #[account(
13 mut,
14 seeds = [
15 SEED_QUEUE,
16 queue.authority.key().as_ref(),
17 queue.name.as_bytes(),
18 ],
19 bump,
20 has_one = authority,
21 constraint = queue.status == QueueStatus::Paused
22 )]
23 pub queue: Account<'info, Queue>,
24}
25
26pub fn handler(ctx: Context<QueueResume>, skip_forward: bool) -> Result<()> {
27 let queue = &mut ctx.accounts.queue;
29
30 if skip_forward {
32 let ts = Clock::get().unwrap().unix_timestamp;
33 queue.process_at = queue.next_process_at(ts);
34 }
35
36 queue.status = QueueStatus::Pending;
38
39 Ok(())
40}