43 lines
1005 B
Go
43 lines
1005 B
Go
package models
|
|
|
|
type ChannelType = uint8
|
|
|
|
const (
|
|
ChannelTypeDirect = ChannelType(iota)
|
|
ChannelTypeRealm
|
|
)
|
|
|
|
type Channel struct {
|
|
BaseModel
|
|
|
|
Alias string `json:"alias" gorm:"uniqueIndex"`
|
|
Name string `json:"name"`
|
|
Description string `json:"description"`
|
|
Members []ChannelMember `json:"members"`
|
|
Messages []Message `json:"messages"`
|
|
Type ChannelType `json:"type"`
|
|
Account Account `json:"account"`
|
|
AccountID uint `json:"account_id"`
|
|
RealmID uint `json:"realm_id"`
|
|
}
|
|
|
|
type NotifyLevel = int8
|
|
|
|
const (
|
|
NotifyLevelAll = NotifyLevel(iota)
|
|
NotifyLevelMentioned
|
|
NotifyLevelNone
|
|
)
|
|
|
|
type ChannelMember struct {
|
|
BaseModel
|
|
|
|
ChannelID uint `json:"channel_id"`
|
|
AccountID uint `json:"account_id"`
|
|
Channel Channel `json:"channel"`
|
|
Account Account `json:"account"`
|
|
Notify NotifyLevel `json:"notify"`
|
|
|
|
Messages []Message `json:"messages" gorm:"foreignKey:SenderID"`
|
|
}
|