Files
sendico/api/pkg/model/invitation.go
Stephan D 62a6631b9a
All checks were successful
ci/woodpecker/push/db Pipeline was successful
ci/woodpecker/push/nats Pipeline was successful
service backend
2025-11-07 18:35:26 +01:00

72 lines
2.3 KiB
Go

package model
import (
"time"
"github.com/tech/sendico/pkg/db/storable"
"github.com/tech/sendico/pkg/mservice"
"go.mongodb.org/mongo-driver/bson/primitive"
)
type InvitationStatus string
const (
InvitationCreated InvitationStatus = "created"
InvitationSent InvitationStatus = "sent"
InvitationAccepted InvitationStatus = "accepted"
InvitationDeclined InvitationStatus = "declined"
InvitationRevoked InvitationStatus = "revoked"
)
type invitationDesc struct {
Email string `bson:"email" json:"email"`
Name string `bson:"name" json:"name"`
Comment string `bson:"comment" json:"comment"`
}
func (id *invitationDesc) Collection() string {
return mservice.Invitations
}
type Invitation struct {
PermissionBound `bson:",inline" json:",inline"`
OrganizationRef primitive.ObjectID `bson:"organizationRef" json:"organizationRef"`
RoleRef primitive.ObjectID `bson:"roleRef" json:"roleRef"`
InviterRef primitive.ObjectID `bson:"inviterRef" json:"inviterRef"`
Status InvitationStatus `bson:"status" json:"status"`
ExpiresAt time.Time `bson:"expiresAt" json:"expiresAt"`
Content invitationDesc `bson:"description" json:"description"`
}
func (*Invitation) Collection() string {
return mservice.Invitations
}
type employeeDesc struct {
Description Describable `bson:"description" json:"description"`
AvatarURL *string `bson:"avatarUrl,omitempty" json:"avatarUrl,omitempty"`
}
type organizationDesc struct {
Description Describable `bson:"description" json:"description"`
LogoURL *string `bson:"logoUrl,omitempty" json:"logoUrl,omitempty"`
}
type invitationStorable struct {
storable.Base `bson:",inline" json:",inline"`
ExpiresAt time.Time `bson:"expiresAt" json:"expiresAt"`
}
type PublicInvitation struct {
Storable invitationStorable `bson:"storable" json:"storable"`
Employee employeeDesc `bson:"employee" json:"employee"`
Organization organizationDesc `bson:"organization" json:"organization"`
Role Describable `bson:"role" json:"role"`
Invitation invitationDesc `bson:"invitation" json:"invitation"`
RequiresRegistration bool `bson:"registrationRequired" json:"registrationRequired"`
}
func (pi *PublicInvitation) Collection() string {
return mservice.Invitations
}