mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
| 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) IsValid() bool {
 | |
| 	return r == ROLE_VIEWER || r == ROLE_ADMIN || r == ROLE_EDITOR
 | |
| }
 | |
| 
 | |
| 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"`
 | |
| }
 |