56 lines
2.1 KiB
Go
56 lines
2.1 KiB
Go
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"`
|
|
}
|