package entities import ( "time" "go.mongodb.org/mongo-driver/v2/bson" ) // Space represents a top-level container for notes and categories type Space struct { ID bson.ObjectID `bson:"_id,omitempty"` Name string `bson:"name"` Description string `bson:"description,omitempty"` Icon string `bson:"icon,omitempty"` OwnerID bson.ObjectID `bson:"owner_id"` IsPublic bool `bson:"is_public"` CreatedAt time.Time `bson:"created_at"` UpdatedAt time.Time `bson:"updated_at"` } // Membership represents a user's membership in a space type Membership struct { ID bson.ObjectID `bson:"_id,omitempty"` UserID bson.ObjectID `bson:"user_id"` SpaceID bson.ObjectID `bson:"space_id"` JoinedAt time.Time `bson:"joined_at"` InvitedBy bson.ObjectID `bson:"invited_by,omitempty"` InvitedAt *time.Time `bson:"invited_at,omitempty"` } // SpaceInvitation represents an invitation to join a space type SpaceInvitation struct { ID bson.ObjectID `bson:"_id,omitempty"` SpaceID bson.ObjectID `bson:"space_id"` Email string `bson:"email"` Token string `bson:"token"` CreatedBy bson.ObjectID `bson:"created_by"` CreatedAt time.Time `bson:"created_at"` ExpiresAt time.Time `bson:"expires_at"` AcceptedAt *time.Time `bson:"accepted_at,omitempty"` }