From 04a33c3ee4b0531e9fcd769caebd2c89a07e8280 Mon Sep 17 00:00:00 2001 From: "diamondburned (Forefront)" Date: Sat, 29 Feb 2020 19:09:03 -0800 Subject: [PATCH] State: Added a noop state store for convenience. --- state/store.go | 1 + state/store_default.go | 64 +++++------------- state/store_noop.go | 146 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 163 insertions(+), 48 deletions(-) create mode 100644 state/store_noop.go diff --git a/state/store.go b/state/store.go index 34f7e8c..87221e7 100644 --- a/state/store.go +++ b/state/store.go @@ -57,6 +57,7 @@ type StoreModifier interface { ChannelSet(*discord.Channel) error ChannelRemove(*discord.Channel) error + // EmojiSet should delete all old emojis before setting new ones. EmojiSet(guildID discord.Snowflake, emojis []discord.Emoji) error GuildSet(*discord.Guild) error diff --git a/state/store_default.go b/state/store_default.go index 8995f54..1997cfe 100644 --- a/state/store_default.go +++ b/state/store_default.go @@ -102,9 +102,7 @@ func (s *DefaultStore) Channel(id discord.Snowflake) (*discord.Channel, error) { return nil, ErrStoreNotFound } -func (s *DefaultStore) Channels( - guildID discord.Snowflake) ([]discord.Channel, error) { - +func (s *DefaultStore) Channels(guildID discord.Snowflake) ([]discord.Channel, error) { s.mut.Lock() defer s.mut.Unlock() @@ -189,9 +187,7 @@ func (s *DefaultStore) ChannelRemove(channel *discord.Channel) error { //// -func (s *DefaultStore) Emoji( - guildID, emojiID discord.Snowflake) (*discord.Emoji, error) { - +func (s *DefaultStore) Emoji(guildID, emojiID discord.Snowflake) (*discord.Emoji, error) { s.mut.Lock() defer s.mut.Unlock() @@ -209,9 +205,7 @@ func (s *DefaultStore) Emoji( return nil, ErrStoreNotFound } -func (s *DefaultStore) Emojis( - guildID discord.Snowflake) ([]discord.Emoji, error) { - +func (s *DefaultStore) Emojis(guildID discord.Snowflake) ([]discord.Emoji, error) { s.mut.Lock() defer s.mut.Unlock() @@ -223,9 +217,7 @@ func (s *DefaultStore) Emojis( return append([]discord.Emoji{}, gd.Emojis...), nil } -func (s *DefaultStore) EmojiSet( - guildID discord.Snowflake, emojis []discord.Emoji) error { - +func (s *DefaultStore) EmojiSet(guildID discord.Snowflake, emojis []discord.Emoji) error { s.mut.Lock() defer s.mut.Unlock() @@ -321,9 +313,7 @@ func (s *DefaultStore) GuildRemove(id discord.Snowflake) error { //// -func (s *DefaultStore) Member( - guildID, userID discord.Snowflake) (*discord.Member, error) { - +func (s *DefaultStore) Member(guildID, userID discord.Snowflake) (*discord.Member, error) { s.mut.Lock() defer s.mut.Unlock() @@ -341,9 +331,7 @@ func (s *DefaultStore) Member( return nil, ErrStoreNotFound } -func (s *DefaultStore) Members( - guildID discord.Snowflake) ([]discord.Member, error) { - +func (s *DefaultStore) Members(guildID discord.Snowflake) ([]discord.Member, error) { s.mut.Lock() defer s.mut.Unlock() @@ -355,9 +343,7 @@ func (s *DefaultStore) Members( return append([]discord.Member{}, ms...), nil } -func (s *DefaultStore) MemberSet( - guildID discord.Snowflake, member *discord.Member) error { - +func (s *DefaultStore) MemberSet(guildID discord.Snowflake, member *discord.Member) error { s.mut.Lock() defer s.mut.Unlock() @@ -405,9 +391,7 @@ func (s *DefaultStore) MemberRemove(guildID, userID discord.Snowflake) error { //// -func (s *DefaultStore) Message( - channelID, messageID discord.Snowflake) (*discord.Message, error) { - +func (s *DefaultStore) Message(channelID, messageID discord.Snowflake) (*discord.Message, error) { s.mut.Lock() defer s.mut.Unlock() @@ -425,9 +409,7 @@ func (s *DefaultStore) Message( return nil, ErrStoreNotFound } -func (s *DefaultStore) Messages( - channelID discord.Snowflake) ([]discord.Message, error) { - +func (s *DefaultStore) Messages(channelID discord.Snowflake) ([]discord.Message, error) { s.mut.Lock() defer s.mut.Unlock() @@ -500,9 +482,7 @@ func (s *DefaultStore) MessageSet(message *discord.Message) error { return nil } -func (s *DefaultStore) MessageRemove( - channelID, messageID discord.Snowflake) error { - +func (s *DefaultStore) MessageRemove(channelID, messageID discord.Snowflake) error { s.mut.Lock() defer s.mut.Unlock() @@ -524,9 +504,7 @@ func (s *DefaultStore) MessageRemove( //// -func (s *DefaultStore) Presence( - guildID, userID discord.Snowflake) (*discord.Presence, error) { - +func (s *DefaultStore) Presence(guildID, userID discord.Snowflake) (*discord.Presence, error) { s.mut.Lock() defer s.mut.Unlock() @@ -544,9 +522,7 @@ func (s *DefaultStore) Presence( return nil, ErrStoreNotFound } -func (s *DefaultStore) Presences( - guildID discord.Snowflake) ([]discord.Presence, error) { - +func (s *DefaultStore) Presences(guildID discord.Snowflake) ([]discord.Presence, error) { s.mut.Lock() defer s.mut.Unlock() @@ -558,9 +534,7 @@ func (s *DefaultStore) Presences( return append([]discord.Presence{}, ps...), nil } -func (s *DefaultStore) PresenceSet( - guildID discord.Snowflake, presence *discord.Presence) error { - +func (s *DefaultStore) PresenceSet(guildID discord.Snowflake, presence *discord.Presence) error { s.mut.Lock() defer s.mut.Unlock() @@ -603,9 +577,7 @@ func (s *DefaultStore) PresenceRemove(guildID, userID discord.Snowflake) error { //// -func (s *DefaultStore) Role( - guildID, roleID discord.Snowflake) (*discord.Role, error) { - +func (s *DefaultStore) Role(guildID, roleID discord.Snowflake) (*discord.Role, error) { s.mut.Lock() defer s.mut.Unlock() @@ -623,9 +595,7 @@ func (s *DefaultStore) Role( return nil, ErrStoreNotFound } -func (s *DefaultStore) Roles( - guildID discord.Snowflake) ([]discord.Role, error) { - +func (s *DefaultStore) Roles(guildID discord.Snowflake) ([]discord.Role, error) { s.mut.Lock() defer s.mut.Unlock() @@ -637,9 +607,7 @@ func (s *DefaultStore) Roles( return append([]discord.Role{}, gd.Roles...), nil } -func (s *DefaultStore) RoleSet( - guildID discord.Snowflake, role *discord.Role) error { - +func (s *DefaultStore) RoleSet(guildID discord.Snowflake, role *discord.Role) error { s.mut.Lock() defer s.mut.Unlock() diff --git a/state/store_noop.go b/state/store_noop.go new file mode 100644 index 0000000..ae0c255 --- /dev/null +++ b/state/store_noop.go @@ -0,0 +1,146 @@ +package state + +import ( + "errors" + + "github.com/diamondburned/arikawa/discord" +) + +// NoopStore could be embedded by other structs for partial state +// implementation. All Getters will return ErrNotImplemented, and all Setters +// will return no error. +type NoopStore struct{} + +var _ Store = (*NoopStore)(nil) + +var ErrNotImplemented = errors.New("State is not implemented") + +func (NoopStore) Reset() error { + return nil +} + +func (NoopStore) Me() (*discord.User, error) { + return nil, ErrNotImplemented +} + +func (NoopStore) MyselfSet(*discord.User) error { + return nil +} + +func (NoopStore) Channel(discord.Snowflake) (*discord.Channel, error) { + return nil, ErrNotImplemented +} + +func (NoopStore) Channels(discord.Snowflake) ([]discord.Channel, error) { + return nil, ErrNotImplemented +} + +func (NoopStore) PrivateChannels() ([]discord.Channel, error) { + return nil, ErrNotImplemented +} + +func (NoopStore) ChannelSet(*discord.Channel) error { + return nil +} + +func (NoopStore) ChannelRemove(*discord.Channel) error { + return nil +} + +func (NoopStore) Emoji(_, _ discord.Snowflake) (*discord.Emoji, error) { + return nil, ErrNotImplemented +} + +func (NoopStore) Emojis(discord.Snowflake) ([]discord.Emoji, error) { + return nil, ErrNotImplemented +} + +func (NoopStore) EmojiSet(discord.Snowflake, []discord.Emoji) error { + return nil +} + +func (NoopStore) Guild(discord.Snowflake) (*discord.Guild, error) { + return nil, ErrNotImplemented +} + +func (NoopStore) Guilds() ([]discord.Guild, error) { + return nil, ErrNotImplemented +} + +func (NoopStore) GuildSet(*discord.Guild) error { + return nil +} + +func (NoopStore) GuildRemove(discord.Snowflake) error { + return nil +} + +func (NoopStore) Member(_, _ discord.Snowflake) (*discord.Member, error) { + return nil, ErrNotImplemented +} + +func (NoopStore) Members(discord.Snowflake) ([]discord.Member, error) { + return nil, ErrNotImplemented +} + +func (NoopStore) MemberSet(discord.Snowflake, *discord.Member) error { + return nil +} + +func (NoopStore) MemberRemove(_, _ discord.Snowflake) error { + return nil +} + +func (NoopStore) Message(_, _ discord.Snowflake) (*discord.Message, error) { + return nil, ErrNotImplemented +} + +func (NoopStore) Messages(discord.Snowflake) ([]discord.Message, error) { + return nil, ErrNotImplemented +} + +// MaxMessages will always return 100 messages, so the API can fetch that +// many. +func (NoopStore) MaxMessages() int { + return 100 +} + +func (NoopStore) MessageSet(message *discord.Message) error { + return nil +} + +func (NoopStore) MessageRemove(_, _ discord.Snowflake) error { + return nil +} + +func (NoopStore) Presence(_, _ discord.Snowflake) (*discord.Presence, error) { + return nil, ErrNotImplemented +} + +func (NoopStore) Presences(discord.Snowflake) ([]discord.Presence, error) { + return nil, ErrNotImplemented +} + +func (NoopStore) PresenceSet(discord.Snowflake, *discord.Presence) error { + return nil +} + +func (NoopStore) PresenceRemove(_, _ discord.Snowflake) error { + return nil +} + +func (NoopStore) Role(_, _ discord.Snowflake) (*discord.Role, error) { + return nil, ErrNotImplemented +} + +func (NoopStore) Roles(discord.Snowflake) ([]discord.Role, error) { + return nil, ErrNotImplemented +} + +func (NoopStore) RoleSet(discord.Snowflake, *discord.Role) error { + return nil +} + +func (NoopStore) RoleRemove(_, _ discord.Snowflake) error { + return nil +}