service backend
This commit is contained in:
71
api/pkg/model/invitation.go
Normal file
71
api/pkg/model/invitation.go
Normal file
@@ -0,0 +1,71 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user