Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alist-org
GitHub Repository: alist-org/alist
Path: blob/main/internal/model/roles.go
1560 views
1
package model
2
3
import (
4
"database/sql/driver"
5
"encoding/json"
6
"fmt"
7
)
8
9
type Roles []int
10
11
func (r Roles) Value() (driver.Value, error) {
12
return json.Marshal([]int(r))
13
}
14
15
func (r *Roles) Scan(value interface{}) error {
16
switch v := value.(type) {
17
case []byte:
18
return json.Unmarshal(v, (*[]int)(r))
19
case string:
20
return json.Unmarshal([]byte(v), (*[]int)(r))
21
case nil:
22
*r = nil
23
return nil
24
default:
25
return fmt.Errorf("cannot scan %T", value)
26
}
27
}
28
29
func (r Roles) Contains(role int) bool {
30
for _, v := range r {
31
if v == role {
32
return true
33
}
34
}
35
return false
36
}
37
38