| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package models
- import (
- "errors"
- "time"
- )
- // Typed errors
- var (
- ErrInvalidRoleType = errors.New("Invalid role type")
- )
- type RoleType string
- const (
- ROLE_OWNER RoleType = "Owner"
- ROLE_VIEWER RoleType = "Viewer"
- ROLE_EDITOR RoleType = "Editor"
- ROLE_ADMIN RoleType = "Admin"
- )
- func (r RoleType) Validate() error {
- if r == ROLE_OWNER || r == ROLE_VIEWER || r == ROLE_ADMIN || r == ROLE_EDITOR {
- return nil
- }
- return ErrInvalidRoleType
- }
- type Collaborator struct {
- Id int64
- AccountId int64 `xorm:"not null unique(uix_account_id_for_account_id)"`
- Role RoleType `xorm:"not null"`
- CollaboratorId int64 `xorm:"not null unique(uix_account_id_for_account_id)"`
- Created time.Time
- Updated time.Time
- }
- // ---------------------
- // COMMANDS
- type RemoveCollaboratorCommand struct {
- CollaboratorId int64
- AccountId int64
- }
- type AddCollaboratorCommand struct {
- LoginOrEmail string `json:"loginOrEmail" binding:"Required"`
- Role RoleType `json:"role" binding:"Required"`
- AccountId int64 `json:"-"`
- CollaboratorId int64 `json:"-"`
- }
- // ----------------------
- // QUERIES
- type GetCollaboratorsQuery struct {
- AccountId int64
- Result []*CollaboratorDTO
- }
- // ----------------------
- // Projections and DTOs
- type CollaboratorDTO struct {
- CollaboratorId int64 `json:"id"`
- Email string `json:"email"`
- Login string `json:"login"`
- Role string `json:"role"`
- }
|