68 lines
1.6 KiB
Go
Raw Normal View History

2024-03-26 23:05:13 +08:00
package models
2024-09-11 23:58:02 +08:00
import (
"fmt"
"git.solsynth.dev/hypernet/nexus/pkg/nex/cruda"
authm "git.solsynth.dev/hypernet/passport/pkg/authkit/models"
2024-09-11 23:58:02 +08:00
)
2024-07-20 16:02:16 +08:00
2024-03-30 17:10:36 +08:00
type ChannelType = uint8
const (
2024-05-26 23:01:20 +08:00
ChannelTypeCommon = ChannelType(iota)
ChannelTypeDirect
2024-03-30 17:10:36 +08:00
)
2024-03-26 23:05:13 +08:00
type Channel struct {
cruda.BaseModel
2024-03-26 23:05:13 +08:00
2024-05-05 00:39:59 +08:00
Alias string `json:"alias"`
2024-03-26 23:05:13 +08:00
Name string `json:"name"`
Description string `json:"description"`
Members []ChannelMember `json:"members"`
Messages []Event `json:"messages"`
2024-04-06 17:08:01 +08:00
Calls []Call `json:"calls"`
2024-03-30 17:10:36 +08:00
Type ChannelType `json:"type"`
2024-03-26 23:05:13 +08:00
AccountID uint `json:"account_id"`
IsPublic bool `json:"is_public"`
IsCommunity bool `json:"is_community"`
Realm *authm.Realm `json:"realm" gorm:"-"`
RealmID *uint `json:"realm_id"`
2024-03-26 23:05:13 +08:00
}
2024-07-20 16:02:16 +08:00
func (v Channel) DisplayText() string {
if v.Type == ChannelTypeDirect {
return "DM"
}
2024-11-24 22:24:49 +08:00
if v.Realm != nil {
return fmt.Sprintf("%s, %s", v.Alias, v.Realm.Alias)
}
return fmt.Sprintf("%s", v.Alias)
2024-07-20 16:02:16 +08:00
}
2024-04-06 16:08:33 +08:00
type NotifyLevel = int8
const (
NotifyLevelAll = NotifyLevel(iota)
NotifyLevelMentioned
NotifyLevelNone
)
2024-03-26 23:05:13 +08:00
type ChannelMember struct {
cruda.BaseModel
2024-03-26 23:05:13 +08:00
2024-11-02 13:23:27 +08:00
Name string `json:"name"`
Nick string `json:"nick"`
Avatar *string `json:"avatar"`
2024-05-26 23:01:20 +08:00
ChannelID uint `json:"channel_id"`
AccountID uint `json:"account_id"`
Channel Channel `json:"channel"`
Notify NotifyLevel `json:"notify"`
PowerLevel int `json:"power_level"`
2024-03-30 17:10:36 +08:00
Calls []Call `json:"calls" gorm:"foreignKey:FounderID"`
Events []Event `json:"events" gorm:"foreignKey:SenderID"`
2024-03-26 23:05:13 +08:00
}