package invitations

import "time"

const InvitationTTL = 7 * 24 * time.Hour

type Invitation struct {
	ID         string     `bson:"_id"`
	Email      string     `bson:"email,omitempty"`
	OrgID      string     `bson:"orgId"`
	SpaceID    string     `bson:"spaceId"`
	OwnerID    string     `bson:"ownerId"` // Invitation owner
	Role       string     `bson:"role"`
	CreatedAt  *time.Time `bson:"createdAt"`
	ValidUntil *time.Time `bson:"validUntil"`
	Uses       int        `bson:"uses"`
	MaxUses    int        `bson:"max_uses"`
}

func (i Invitation) Clone() *Invitation {
	return &Invitation{
		ID:         i.ID,
		Email:      i.Email,
		OrgID:      i.OrgID,
		SpaceID:    i.SpaceID,
		OwnerID:    i.OwnerID,
		Role:       i.Role,
		CreatedAt:  i.CreatedAt,
		ValidUntil: i.ValidUntil,
		Uses:       i.Uses,
		MaxUses:    i.MaxUses,
	}
}

func (i Invitation) GetSpaceID() string {
	return i.SpaceID
}