package entities import ( "time" "go.mongodb.org/mongo-driver/v2/bson" ) // Note represents a note within a space type Note struct { ID bson.ObjectID `bson:"_id,omitempty"` SpaceID bson.ObjectID `bson:"space_id"` CategoryID *bson.ObjectID `bson:"category_id,omitempty"` Title string `bson:"title"` Description string `bson:"description"` Content string `bson:"content"` PasswordHash string `bson:"password_hash,omitempty"` Tags []string `bson:"tags"` IsPinned bool `bson:"is_pinned"` IsFavorite bool `bson:"is_favorite"` IsPublic bool `bson:"is_public"` IsPasswordProtected bool `bson:"is_password_protected"` CreatedBy bson.ObjectID `bson:"created_by"` UpdatedBy bson.ObjectID `bson:"updated_by"` CreatedAt time.Time `bson:"created_at"` UpdatedAt time.Time `bson:"updated_at"` ViewedAt *time.Time `bson:"viewed_at,omitempty"` } // Category represents a folder/category within a space type Category struct { ID bson.ObjectID `bson:"_id,omitempty"` SpaceID bson.ObjectID `bson:"space_id"` Name string `bson:"name"` Description string `bson:"description,omitempty"` ParentID *bson.ObjectID `bson:"parent_id,omitempty"` Icon string `bson:"icon,omitempty"` Order int `bson:"order"` CreatedBy bson.ObjectID `bson:"created_by"` UpdatedBy bson.ObjectID `bson:"updated_by"` CreatedAt time.Time `bson:"created_at"` UpdatedAt time.Time `bson:"updated_at"` } // NoteRevision represents a historical version of a note type NoteRevision struct { ID bson.ObjectID `bson:"_id,omitempty"` NoteID bson.ObjectID `bson:"note_id"` SpaceID bson.ObjectID `bson:"space_id"` Title string `bson:"title"` Content string `bson:"content"` ChangedBy bson.ObjectID `bson:"changed_by"` CreatedAt time.Time `bson:"created_at"` ChangeRef string `bson:"change_ref,omitempty"` }