58 lines
1,007 B
Go
58 lines
1,007 B
Go
package db
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
)
|
|
|
|
type InstallContext string
|
|
|
|
const (
|
|
InstallContextUser InstallContext = "user"
|
|
InstallContextGuild InstallContext = "guild"
|
|
)
|
|
|
|
func (c InstallContext) String() string {
|
|
return string(c)
|
|
}
|
|
|
|
func (c InstallContext) IsValid() bool {
|
|
switch c {
|
|
case InstallContextUser, InstallContextGuild:
|
|
return true
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
|
|
type BotStatus string
|
|
|
|
const (
|
|
BotStatusDeleted BotStatus = "deleted"
|
|
BotStatusPending BotStatus = "pending"
|
|
BotStatusRejected BotStatus = "rejected"
|
|
BotStatusApproved BotStatus = "approved"
|
|
)
|
|
|
|
func (s BotStatus) String() string {
|
|
return string(s)
|
|
}
|
|
|
|
func (s BotStatus) IsValid() bool {
|
|
switch s {
|
|
case BotStatusDeleted, BotStatusPending, BotStatusRejected, BotStatusApproved:
|
|
return true
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
|
|
type CoOwnerSlice []User
|
|
|
|
func (c *CoOwnerSlice) Scan(src any) error {
|
|
b, ok := src.([]byte)
|
|
if !ok {
|
|
return fmt.Errorf("expected []byte, got %T", src)
|
|
}
|
|
return json.Unmarshal(b, c)
|
|
}
|