dbots/internal/db/custom.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)
}