first commit
This commit is contained in:
41
backend/internal/domain/entities/space.go
Normal file
41
backend/internal/domain/entities/space.go
Normal file
@@ -0,0 +1,41 @@
|
||||
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"`
|
||||
}
|
||||
Reference in New Issue
Block a user