More work on collaborators, and sql store
This commit is contained in:
@@ -6,11 +6,13 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
CreateAccount func(acccount *Account) error
|
||||
UpdateAccount func(acccount *Account) error
|
||||
GetAccountByLogin func(emailOrName string) (*Account, error)
|
||||
GetAccount func(accountId int64) (*Account, error)
|
||||
GetOtherAccountsFor func(accountId int64) ([]*OtherAccount, error)
|
||||
CreateAccount func(acccount *Account) error
|
||||
UpdateAccount func(acccount *Account) error
|
||||
GetAccountByLogin func(emailOrName string) (*Account, error)
|
||||
GetAccount func(accountId int64) (*Account, error)
|
||||
GetOtherAccountsFor func(accountId int64) ([]*OtherAccount, error)
|
||||
GetCollaboratorsForAccount func(accountId int64) ([]*CollaboratorInfo, error)
|
||||
AddCollaborator func(collaborator *Collaborator) error
|
||||
)
|
||||
|
||||
// Typed errors
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
const (
|
||||
ROLE_READ_WRITE = "ReadWrite"
|
||||
ROLE_READ = "Read"
|
||||
)
|
||||
|
||||
type RoleType string
|
||||
|
||||
type Collaborator struct {
|
||||
Id int64
|
||||
AccountId int64 `xorm:"not null unique(uix_account_id_for_account_id)"` // The account that can use another account
|
||||
Role RoleType `xorm:"not null"` // Permission type
|
||||
ForAccountId int64 `xorm:"not null unique(uix_account_id_for_account_id)"` // The account being given access to
|
||||
Created time.Time
|
||||
Updated time.Time
|
||||
}
|
||||
|
||||
// read only projection
|
||||
type CollaboratorInfo struct {
|
||||
AccountId int64
|
||||
Role string
|
||||
Email string
|
||||
}
|
||||
|
||||
func NewCollaborator(accountId int64, forAccountId int64) *Collaborator {
|
||||
return &Collaborator{
|
||||
AccountId: accountId,
|
||||
ForAccountId: forAccountId,
|
||||
Role: ROLE_READ,
|
||||
Created: time.Now(),
|
||||
Updated: time.Now(),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user