AkurAI Build
Menu

Public repository / b78e3a5270c5c5e1b0b04f1da8da4899aa5e4e22

AkurAI-Notes / crates/notes-core/src/metadata/mod.rs

Latest change 3f3c3218239131fdc60fb9196283c9a0162898a9 - E04: notes-core entities + CRUD handlers + collections schema + seed data by Claude Code

pub struct ObjectMetadata {
    pub name: &'static str,
    pub fields: Vec<FieldMetadata>,
}

pub struct FieldMetadata {
    pub name: &'static str,
    pub field_type: &'static str,
    pub required: bool,
    pub embed: bool,
}

impl ObjectMetadata {
    pub fn standard_objects() -> Vec<Self> {
        vec![
            ObjectMetadata {
                name: "notes",
                fields: vec![
                    FieldMetadata { name: "title", field_type: "text", required: true, embed: true },
                    FieldMetadata { name: "body", field_type: "text", required: false, embed: true },
                    FieldMetadata { name: "format", field_type: "text", required: false, embed: false },
                    FieldMetadata { name: "notebookId", field_type: "int", required: false, embed: false },
                    FieldMetadata { name: "ownerSub", field_type: "text", required: true, embed: false },
                    FieldMetadata { name: "tagIds", field_type: "text", required: false, embed: false },
                    FieldMetadata { name: "createdAt", field_type: "int", required: false, embed: false },
                    FieldMetadata { name: "updatedAt", field_type: "int", required: false, embed: false },
                    FieldMetadata { name: "archived", field_type: "bool", required: false, embed: false },
                ],
            },
            ObjectMetadata {
                name: "notebooks",
                fields: vec![
                    FieldMetadata { name: "name", field_type: "text", required: true, embed: true },
                    FieldMetadata { name: "description", field_type: "text", required: false, embed: false },
                    FieldMetadata { name: "ownerSub", field_type: "text", required: true, embed: false },
                    FieldMetadata { name: "color", field_type: "text", required: false, embed: false },
                    FieldMetadata { name: "createdAt", field_type: "int", required: false, embed: false },
                ],
            },
            ObjectMetadata {
                name: "tags",
                fields: vec![
                    FieldMetadata { name: "name", field_type: "text", required: true, embed: true },
                    FieldMetadata { name: "ownerSub", field_type: "text", required: true, embed: false },
                    FieldMetadata { name: "color", field_type: "text", required: false, embed: false },
                    FieldMetadata { name: "createdAt", field_type: "int", required: false, embed: false },
                ],
            },
        ]
    }
}