namespaces 4.1.61

Cardinal namespaces service
Documentation
use {crate::state::*, anchor_lang::prelude::*};

#[derive(AnchorSerialize, AnchorDeserialize)]
pub struct InitNameEntryIx {
    pub name: String,
}

#[derive(Accounts)]
#[instruction(ix: InitNameEntryIx)]
pub struct InitNameEntryCtx<'info> {
    namespace: Box<Account<'info, Namespace>>,
    #[account(
        init,
        payer = payer,
        space = ENTRY_SIZE,
        seeds = [ENTRY_SEED.as_bytes(), namespace.key().as_ref(), ix.name.as_bytes()],
        bump,
    )]
    name_entry: Account<'info, Entry>,
    #[account(mut)]
    payer: Signer<'info>,
    system_program: Program<'info, System>,
}

pub fn handler(ctx: Context<InitNameEntryCtx>, ix: InitNameEntryIx) -> Result<()> {
    let name_entry = &mut ctx.accounts.name_entry;
    name_entry.bump = *ctx.bumps.get("name_entry").unwrap();
    name_entry.namespace = ctx.accounts.namespace.key();
    name_entry.name = ix.name;
    name_entry.mint = Pubkey::default();
    name_entry.is_claimed = false;
    Ok(())
}