More work on collaborators, and sql store

This commit is contained in:
Torkel Ödegaard
2014-11-21 16:43:04 +01:00
parent 4eefa73441
commit f04932aa67
9 changed files with 177 additions and 24 deletions
+7 -5
View File
@@ -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
+38
View File
@@ -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(),
}
}