60 lines
1.6 KiB
Go
60 lines
1.6 KiB
Go
package models
|
|
|
|
import (
|
|
"git.solsynth.dev/hypernet/nexus/pkg/nex"
|
|
"git.solsynth.dev/hypernet/passport/pkg/proto"
|
|
"gorm.io/datatypes"
|
|
)
|
|
|
|
type Realm struct {
|
|
BaseModel
|
|
|
|
Alias string `json:"alias" gorm:"uniqueIndex"`
|
|
Name string `json:"name"`
|
|
Description string `json:"description"`
|
|
Members []RealmMember `json:"members"`
|
|
Avatar *string `json:"avatar"`
|
|
Banner *string `json:"banner"`
|
|
AccessPolicy datatypes.JSONMap `json:"access_policy"`
|
|
IsPublic bool `json:"is_public"`
|
|
IsCommunity bool `json:"is_community"`
|
|
AccountID uint `json:"account_id"`
|
|
}
|
|
|
|
func NewRealmFromProto(proto *proto.RealmInfo) Realm {
|
|
return Realm{
|
|
BaseModel: BaseModel{
|
|
ID: uint(proto.GetId()),
|
|
},
|
|
Alias: proto.GetAlias(),
|
|
Name: proto.GetName(),
|
|
Description: proto.GetDescription(),
|
|
Avatar: &proto.Avatar,
|
|
Banner: &proto.Banner,
|
|
IsPublic: proto.GetIsPublic(),
|
|
IsCommunity: proto.GetIsCommunity(),
|
|
AccessPolicy: nex.DecodeMap(proto.GetAccessPolicy()),
|
|
}
|
|
}
|
|
|
|
type RealmMember struct {
|
|
BaseModel
|
|
|
|
RealmID uint `json:"realm_id"`
|
|
AccountID uint `json:"account_id"`
|
|
Realm Realm `json:"realm"`
|
|
Account Account `json:"account"`
|
|
PowerLevel int `json:"power_level"`
|
|
}
|
|
|
|
func NewRealmMemberFromProto(proto *proto.RealmMemberInfo) RealmMember {
|
|
return RealmMember{
|
|
BaseModel: BaseModel{
|
|
ID: uint(proto.GetId()),
|
|
},
|
|
RealmID: uint(proto.GetRealmId()),
|
|
AccountID: uint(proto.GetUserId()),
|
|
PowerLevel: int(proto.GetPowerLevel()),
|
|
}
|
|
}
|