Added basic definitions for namespaces and teams

This commit is contained in:
kolaente 2018-06-14 16:14:49 +02:00
parent 6398134eef
commit ac0a50663d
No known key found for this signature in database
GPG key ID: F40E70337AB24C9B
4 changed files with 110 additions and 2 deletions

View file

@ -100,7 +100,7 @@ Oder noch Besser: Man kann globale Rechte pro Namespace vergeben, die man dann w
Rechte: Rechte:
Erstmal nur 3: Lesen, Schreiben, Admin. Admins dürfen auch Namen ändern, Teams verwalten, neue Listen anlegen, etc. Erstmal nur 3: Lesen, Schreiben, Admin. Admins dürfen auch Namen ändern, Teams verwalten, neue Listen anlegen, etc.
Owner haben immer Adminrechte. Owner haben immer Adminrechte. Später sollte es auch möglich sein, den ownership an andere zur übertragen.s
Teams sind global, d.h. Ein Team kann mehrere Namespaces verwalten. Teams sind global, d.h. Ein Team kann mehrere Namespaces verwalten.
@ -111,12 +111,15 @@ Teams sind global, d.h. Ein Team kann mehrere Namespaces verwalten.
* [ ] Ansehen * [ ] Ansehen
* [ ] Bearbeiten * [ ] Bearbeiten
* [ ] Löschen * [ ] Löschen
Ein zu lösendes Problem: Wie regelt man die Berechtigungen um Teams zu verwalten?
* [ ] Namespaces * [ ] Namespaces
* [ ] Erstellen * [ ] Erstellen
* [ ] Ansehen * [ ] Ansehen
* [ ] Bearbeiten * [ ] Bearbeiten
* [ ] Löschen * [ ] Löschen
* [ ] Teams hinzufügen * [ ] Teams hinzufügen. Der Nutzer kriegt nur Teams angezeigt die er erstellt hat.
* [ ] Listen * [ ] Listen
* [ ] Listen zu einem Namespace hinzufügen * [ ] Listen zu einem Namespace hinzufügen

View file

@ -35,6 +35,11 @@ func init() {
new(User), new(User),
new(List), new(List),
new(ListItem), new(ListItem),
new(Team),
new(TeamMember),
new(TeamList),
new(TeamNamespace),
new(Namespace),
) )
} }

35
models/namespaces.go Normal file
View file

@ -0,0 +1,35 @@
package models
// Namespace holds informations about a namespace
type Namespace struct {
ID int64 `xorm:"int(11) autoincr not null unique pk" json:"id"`
Name string `xorm:"varchar(250) autoincr not null" json:"name"`
Description string `xorm:"varchar(700) autoincr not null" json:"description"`
OwnerID int64 `xorm:"int(11) autoincr not null" json:"owner_id"`
Created int64 `xorm:"created" json:"created"`
Updated int64 `xorm:"updated" json:"updated"`
}
// TableName makes beautiful table names
func (Namespace) TableName() string {
return "namespaces"
}
// NamespaceRight defines the rights teams can have for namespaces
type NamespaceRight int
// define unknown namespace right
const (
NamespaceRightUnknown = -1
)
// Enumerate all the namespace rights
const (
// Can read lists in a namespace
NamespaceRightRead NamespaceRight = iota
// Cat write items in a namespace like lists and todo items
NamespaceRightWrite
// Can manage a namespace, can do everything
NamespaceRightAdmin
)

65
models/teams.go Normal file
View file

@ -0,0 +1,65 @@
package models
// Team holds a team object
type Team struct {
ID int64 `xorm:"int(11) autoincr not null unique pk" json:"id"`
Name string `xorm:"varchar(250) not null" json:"name"`
Description string `xorm:"varchar(250)" json:"description"`
Rights []int64 `xorm:"varchar(250)" json:"rights"`
CreatedByID int64 `xorm:"int(11) not null" json:"-"`
Created int64 `xorm:"created" json:"created"`
Updated int64 `xorm:"updated" json:"updated"`
CreatedBy User `json:"created_by"`
}
// TableName makes beautiful table names
func (Team) TableName() string {
return "teams"
}
// TeamMember defines the relationship between a user and a team
type TeamMember struct {
ID int64 `xorm:"int(11) autoincr not null unique pk"`
TeamID int64 `xorm:"int(11) autoincr not null"`
UserID int64 `xorm:"int(11) autoincr not null"`
Created int64 `xorm:"created"`
Updated int64 `xorm:"updated"`
}
// TableName makes beautiful table names
func (TeamMember) TableName() string {
return "team_members"
}
// TeamNamespaces defines the relationship between a Team and a Namespace
type TeamNamespace struct {
ID int64 `xorm:"int(11) autoincr not null unique pk"`
TeamID int64 `xorm:"int(11) autoincr not null"`
NamespaceID int64 `xorm:"int(11) autoincr not null"`
Created int64 `xorm:"created"`
Updated int64 `xorm:"updated"`
}
// TableName makes beautiful table names
func (TeamNamespace) TableName() string {
return "team_namespaces"
}
// TeamList defines the relation between a team and a list
type TeamList struct {
ID int64 `xorm:"int(11) autoincr not null unique pk"`
TeamID int64 `xorm:"int(11) autoincr not null"`
ListID int64 `xorm:"int(11) autoincr not null"`
Created int64 `xorm:"created"`
Updated int64 `xorm:"updated"`
}
// TableName makes beautiful table names
func (TeamList) TableName() string {
return "team_list"
}