123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- // Copyright (c) 2016-2017 Daniel Oaks <daniel@danieloaks.net>
- // released under the MIT license
-
- package irc
-
- import (
- "encoding/json"
- "time"
-
- "github.com/ergochat/ergo/irc/modes"
- "github.com/ergochat/ergo/irc/utils"
- )
-
- // this is exclusively the *persistence* layer for channel registration;
- // channel creation/tracking/destruction is in channelmanager.go
-
- // these are bit flags indicating what part of the channel status is "dirty"
- // and needs to be read from memory and written to the db
- const (
- IncludeInitial uint = 1 << iota
- IncludeTopic
- IncludeModes
- IncludeLists
- IncludeSettings
- )
-
- // this is an OR of all possible flags
- const (
- IncludeAllAttrs = ^uint(0)
- )
-
- // RegisteredChannel holds details about a given registered channel.
- type RegisteredChannel struct {
- // Name of the channel.
- Name string
- // UUID for the datastore.
- UUID utils.UUID
- // RegisteredAt represents the time that the channel was registered.
- RegisteredAt time.Time
- // Founder indicates the founder of the channel.
- Founder string
- // Topic represents the channel topic.
- Topic string
- // TopicSetBy represents the host that set the topic.
- TopicSetBy string
- // TopicSetTime represents the time the topic was set.
- TopicSetTime time.Time
- // Modes represents the channel modes
- Modes []modes.Mode
- // Key represents the channel key / password
- Key string
- // Forward is the forwarding/overflow (+f) channel
- Forward string
- // UserLimit is the user limit (0 for no limit)
- UserLimit int
- // AccountToUMode maps user accounts to their persistent channel modes (e.g., +q, +h)
- AccountToUMode map[string]modes.Mode
- // Bans represents the bans set on the channel.
- Bans map[string]MaskInfo
- // Excepts represents the exceptions set on the channel.
- Excepts map[string]MaskInfo
- // Invites represents the invite exceptions set on the channel.
- Invites map[string]MaskInfo
- // Settings are the chanserv-modifiable settings
- Settings ChannelSettings
- }
-
- func (r *RegisteredChannel) Serialize() ([]byte, error) {
- return json.Marshal(r)
- }
-
- func (r *RegisteredChannel) Deserialize(b []byte) (err error) {
- return json.Unmarshal(b, r)
- }
-
- type ChannelPurgeRecord struct {
- NameCasefolded string `json:"Name"`
- UUID utils.UUID
- Oper string
- PurgedAt time.Time
- Reason string
- }
-
- func (c *ChannelPurgeRecord) Serialize() ([]byte, error) {
- return json.Marshal(c)
- }
-
- func (c *ChannelPurgeRecord) Deserialize(b []byte) error {
- return json.Unmarshal(b, c)
- }
|