model

package
v0.0.0-...-f239e5c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 23, 2022 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNotFound = errors.New("not found")
)

Functions

This section is empty.

Types

type ApiPermission

type ApiPermission int
const (
	ApiPermissionViewReports ApiPermission = 1 << iota
	ApiPermissionManageReports
	ApiPermissionManagePosts
	ApiPermissionManageApiUsers
)
const (
	ApiPermissionNone ApiPermission = 0
)

type ApiUser

type ApiUser struct {
	ID         uint          `gorm:"type:int;primaryKey;auto_increment" json:"id"`
	Token      string        `gorm:"size:32,uniqueIndex"`
	Permission ApiPermission `gorm:"type:int"`
}

type Channel

type Channel struct {
	ID        uint    `gorm:"type:int;primaryKey;auto_increment" json:"id"`
	DiscordID uint64  `gorm:"notNull;uniqueIndex" json:"-"`
	GuildID   uint    `gorm:"index" json:"guild_id"`
	Guild     *Guild  `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"-"`
	Posts     []*Post `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"-"`
}

func ForChannelID

func ForChannelID(DiscordID string) *Channel

func ForChannelIDUint

func ForChannelIDUint(DiscordID uint64) *Channel

type Emoji

type Emoji struct {
	ID        uint          `gorm:"type:int;primaryKey;auto_increment" json:"id"`
	DiscordID sql.NullInt64 `gorm:"uniqueIndex" json:"-"`
	Name      string        `gorm:"size:32;uniqueIndex:,where:discord_id is null" json:"name"`
}

func ForEmoji

func ForEmoji(em *discordgo.Emoji) *Emoji

func (*Emoji) IsGuild

func (e *Emoji) IsGuild() bool

type Guild

type Guild struct {
	ID        uint       `gorm:"type:int;primaryKey;auto_increment" json:"id"`
	DiscordID uint64     `gorm:"notNull;uniqueIndex" json:"-"`
	Channels  []*Channel `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"-"`
}

func ForGuildID

func ForGuildID(DiscordID string) *Guild

type Image

type Image struct {
	ID     uint   `gorm:"type:int;primaryKey;auto_increment" json:"-"`
	PostID uint   `gorm:"index" json:"-"`
	Post   *Post  `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"-"`
	URL    string `json:"url"`
	Width  uint   `json:"width"`
	Height uint   `json:"height"`
	Size   uint64 `json:"size"`
}

func ForDiscordAttachment

func ForDiscordAttachment(at *discordgo.MessageAttachment) *Image

func ForDiscordEmbed

func ForDiscordEmbed(ctx context.Context, em *discordgo.MessageEmbed) (*Image, error)

type Post

type Post struct {
	ID        uint        `gorm:"type:int;primaryKey;auto_increment" json:"id"`
	DiscordID uint64      `gorm:"notNull;uniqueIndex" json:"-"`
	ChannelID uint        `gorm:"index" json:"channel_id"`
	Channel   *Channel    `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"-"`
	UserID    uint        `gorm:"index" json:"user_id"`
	User      *User       `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"-"`
	Images    []*Image    `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"images"`
	Reactions []*Reaction `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"reactions"`
	Content   string      `json:"content"`
}

func ForMessage

func ForMessage(message *discordgo.Message) *Post

func ForMessageID

func ForMessageID(DiscordID string) *Post

type Reaction

type Reaction struct {
	ID            uint            `gorm:"type:int;primaryKey;auto_increment" json:"-"`
	PostID        uint            `gorm:"uniqueIndex:idx_reaction_post_id_emoji_id" json:"-"`
	Post          *Post           `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"-"`
	EmojiID       uint            `gorm:"uniqueIndex:idx_reaction_post_id_emoji_id" json:"emoji_id"`
	Emoji         *Emoji          `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"-"`
	UserReactions []*UserReaction `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"users"`
}

func NewReaction

func NewReaction(PostID uint, EmojiID uint) *Reaction

type Report

type Report struct {
	ID        uint   `gorm:"type:int;primaryKey;auto_increment"`
	PostID    uint   `gorm:"index" gorm:"uniqueIndex:idx_report_post_id_address"`
	Post      *Post  `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"-"`
	Comment   string `gorm:"size:150"`
	CreatedAt time.Time
	Address   *pgtype.Inet `type:"inet" gorm:"index" gorm:"uniqueIndex:idx_report_post_id_address" json:"-"`
}

type User

type User struct {
	ID        uint    `gorm:"type:int;primaryKey;auto_increment" json:"id"`
	DiscordID uint64  `gorm:"notNull;uniqueIndex" json:"-"`
	Posts     []*Post `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"-"`
}

func ForUserID

func ForUserID(DiscordID string) *User

type UserReaction

type UserReaction struct {
	ID         uint      `gorm:"type:int;primaryKey;auto_increment" json:"-"`
	ReactionID uint      `gorm:"uniqueIndex:idx_user_reaction_reaction_id_user_id" json:"-"`
	Reaction   *Reaction `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"-"`
	UserID     uint      `gorm:"uniqueIndex:idx_user_reaction_reaction_id_user_id" json:"user_id"`
	User       *User     `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"-"`
}

func NewUserReaction

func NewUserReaction(ReactionID uint, UserID uint) *UserReaction

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL