clockwork_scheduler/instructions/
task_update.rs

1use {
2    crate::state::*,
3    anchor_lang::prelude::*,
4};
5
6
7#[derive(Accounts)]
8#[instruction(ixs: Vec<InstructionData>)]
9pub struct TaskUpdate<'info> {
10    #[account()]
11    pub authority: Signer<'info>,
12
13    #[account(
14        seeds = [
15            SEED_QUEUE, 
16            queue.authority.as_ref(),
17            queue.name.as_bytes(),
18        ],
19        bump,
20        has_one = authority,
21        constraint = queue.status == QueueStatus::Pending || queue.status == QueueStatus::Paused
22    )]
23    pub queue: Account<'info, Queue>,
24
25    #[account(
26        mut,
27        seeds = [
28            SEED_TASK, 
29            task.queue.as_ref(),
30            task.id.to_be_bytes().as_ref(),
31        ],
32        bump,
33    )]
34    pub task: Account<'info, Task>,
35}
36
37pub fn handler(
38    ctx: Context<TaskUpdate>,
39    ixs: Vec<InstructionData>,
40) -> Result<()> {
41    let task = &mut ctx.accounts.task;
42
43    // TODO verify ixs
44    // TODO re-allocate aaccount space
45    task.ixs = ixs;
46
47    Ok(())
48}