diff --git a/channel.go b/channel.go new file mode 100644 index 0000000..db4a182 --- /dev/null +++ b/channel.go @@ -0,0 +1,17 @@ +package geeksbot + +type Channel struct { + ID string + Guild Guild + Admin bool + Default bool + NewPatron bool +} + +type ChannelService interface { + Channel(id string) (*Channel, error) + CreateChannel(c *Channel) (*Channel, error) + DeleteChannel(c *Channel) error + GuildChannels(g *Guild) ([]*Channel, error) + UpdateChannel(c *Channel) (*Channel, error) +} diff --git a/guild.go b/guild.go new file mode 100644 index 0000000..e98a95d --- /dev/null +++ b/guild.go @@ -0,0 +1,25 @@ +package geeksbot + +type Guild struct { + ID string + NewPatronMessage string + Prefixes []string +} + +type Role struct { + ID string + RoleType int + Guild Guild +} + +type GuildService interface { + Guild(id string) (*Guild, error) + CreateGuild(g *Guild) (*Guild, error) + DeleteGuild(g *Guild) error + UpdateGuild(g *Guild) (*Guild, error) + GuildRoles(g *Guild) ([]*Role, error) + CreateRole(r *Role) (*Role, error) + Role(id string) (*Role, error) + UpdateRole(r *Role) (*Role, error) + DeleteRole(r *Role) error +} diff --git a/message.go b/message.go new file mode 100644 index 0000000..795743e --- /dev/null +++ b/message.go @@ -0,0 +1,23 @@ +package geeksbot + +import "github.com/bwmarrin/discordgo" + +type Message struct { + ID string + CreatedAt int64 + ModifiedAd int64 + Content string + PreviousContent []string + Channel *Channel + Author *User + Embed *discordgo.MessageEmbed + PreviousEmbeds []*discordgo.MessageEmbed +} + +type MessageService interface { + Message(id string) (*Message, error) + CreateMessage(m *Message) (*Message, error) + DeleteMessage(m *Message) error + ChannelMessages(c *Channel) ([]*Message, error) + UpdateMessage(m *Message) (*Message, error) +} diff --git a/patreon.go b/patreon.go new file mode 100644 index 0000000..536c59a --- /dev/null +++ b/patreon.go @@ -0,0 +1,29 @@ +package geeksbot + +type PatreonCreator struct { + ID int + Creator string + Link string +} + +type PatreonTier struct { + ID int + Name string + Description string + Creator *PatreonCreator + Role *Role + NextTier *PatreonTier +} + +type PatreonService interface { + PatreonCreatorByID(id int) (*PatreonCreator, error) + PatreonCreatorByName(name string) (*PatreonCreator, error) + CreatePatreonCreator(c *PatreonCreator) (*PatreonCreator, error) + UpdatePatreonCreator(c *PatreonCreator) (*PatreonCreator, error) + DeletePatreonCreator(c *PatreonCreator) error + PatreonTierByID(id int) (*PatreonTier, error) + PatreonTierByName(name string) (*PatreonTier, error) + CreatePatreonTier(t *PatreonTier) (*PatreonTier, error) + UpdatePatreonTier(t *PatreonTier) (*PatreonTier, error) + DeletePatreonTier(t *PatreonTier) error +} diff --git a/request.go b/request.go new file mode 100644 index 0000000..28b092e --- /dev/null +++ b/request.go @@ -0,0 +1,37 @@ +package geeksbot + +import "time" + +type Request struct { + ID int64 + Author *User + Channel *Channel + Content string + RequestedAt time.Time + CompletedAt time.Time + CompletedBy *User + Message *Message + CompletedMessage string +} + +type Comment struct { + ID int64 + Author *User + Request *Request + CommentAt time.Time + Content string +} + +type RequestService interface { + Request(id int64) (*Request, error) + UserRequests(u *User, completed bool) ([]*Request, error) + GuildRequests(g *Guild, completed bool) ([]*Request, error) + CreateRequest(r *Request) (*Request, error) + UpdateRequest(r *Request) (*Request, error) + DeleteRequest(r *Request) error + Comment(id int64) (*Comment, error) + RequestComments(r *Request) ([]*Comment, error) + RequestCommentCount(r *Request) (int, error) + CreateComment(c *Comment) (*Comment, error) + DeleteComment(c *Comment) error +} diff --git a/server.go b/server.go new file mode 100644 index 0000000..faf731d --- /dev/null +++ b/server.go @@ -0,0 +1,23 @@ +package geeksbot + +type Server struct { + ID int + Name string + IPAddr string + Port int + Password string + AlertsChannel *Channel + Guild *Guild + InfoChannel *Channel + InfoMessage *Message + SettingsMessage *Message +} + +type ServerService interface { + ServerByID(id int) (*Server, error) + ServerByName(name string) (*Server, error) + CreateServer(s *Server) (*Server, error) + DeleteServer(s *Server) error + UpdateServer(s *Server) (*Server, error) + GuildServers(g *Guild) ([]*Server, error) +} diff --git a/user.go b/user.go new file mode 100644 index 0000000..31a1f57 --- /dev/null +++ b/user.go @@ -0,0 +1,18 @@ +package geeksbot + +import "database/sql" + +type User struct { + ID string + SteamID sql.NullString + IsActive bool + IsStaff bool + IsAdmin bool +} + +type UserService interface { + User(id string) (*User, error) + CreateUser(u *User) (*User, error) + DeleteUser(u *User) error + UpdateUser(u *User) (*User, error) +}