Skip to content

Commit 528f088

Browse files
topi314apricotbucket28
authored andcommitted
Feat/expose cache interfaces (disgoorg#382)
* expose cache interfaces in caches * fix caches having method & embedded type with the same name
1 parent 22bcead commit 528f088

File tree

1 file changed

+114
-26
lines changed

1 file changed

+114
-26
lines changed

cache/caches.go

Lines changed: 114 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ func (c *selfUserCacheImpl) SetSelfUser(user discord.OAuth2User) {
4141
}
4242

4343
type GuildCache interface {
44+
GuildCache() Cache[discord.Guild]
45+
4446
IsGuildUnready(guildID snowflake.ID) bool
4547
SetGuildUnready(guildID snowflake.ID, unready bool)
4648
UnreadyGuildIDs() []snowflake.ID
@@ -70,6 +72,10 @@ type guildCacheImpl struct {
7072
unavailableGuilds Set[snowflake.ID]
7173
}
7274

75+
func (c *guildCacheImpl) GuildCache() Cache[discord.Guild] {
76+
return c.cache
77+
}
78+
7379
func (c *guildCacheImpl) IsGuildUnready(guildID snowflake.ID) bool {
7480
return c.unreadyGuilds.Has(guildID)
7581
}
@@ -131,6 +137,8 @@ func (c *guildCacheImpl) RemoveGuild(guildID snowflake.ID) (discord.Guild, bool)
131137
}
132138

133139
type ChannelCache interface {
140+
ChannelCache() Cache[discord.GuildChannel]
141+
134142
Channel(channelID snowflake.ID) (discord.GuildChannel, bool)
135143
ChannelsForEach(fn func(channel discord.GuildChannel))
136144
ChannelsLen() int
@@ -149,6 +157,10 @@ type channelCacheImpl struct {
149157
cache Cache[discord.GuildChannel]
150158
}
151159

160+
func (c *channelCacheImpl) ChannelCache() Cache[discord.GuildChannel] {
161+
return c.cache
162+
}
163+
152164
func (c *channelCacheImpl) Channel(channelID snowflake.ID) (discord.GuildChannel, bool) {
153165
return c.cache.Get(channelID)
154166
}
@@ -176,6 +188,8 @@ func (c *channelCacheImpl) RemoveChannelsByGuildID(guildID snowflake.ID) {
176188
}
177189

178190
type StageInstanceCache interface {
191+
StageInstanceCache() GroupedCache[discord.StageInstance]
192+
179193
StageInstance(guildID snowflake.ID, stageInstanceID snowflake.ID) (discord.StageInstance, bool)
180194
StageInstanceForEach(guildID snowflake.ID, fn func(stageInstance discord.StageInstance))
181195
StageInstancesAllLen() int
@@ -195,6 +209,10 @@ type stageInstanceCacheImpl struct {
195209
cache GroupedCache[discord.StageInstance]
196210
}
197211

212+
func (c *stageInstanceCacheImpl) StageInstanceCache() GroupedCache[discord.StageInstance] {
213+
return c.cache
214+
}
215+
198216
func (c *stageInstanceCacheImpl) StageInstance(guildID snowflake.ID, stageInstanceID snowflake.ID) (discord.StageInstance, bool) {
199217
return c.cache.Get(guildID, stageInstanceID)
200218
}
@@ -226,6 +244,7 @@ func (c *stageInstanceCacheImpl) RemoveStageInstancesByGuildID(guildID snowflake
226244
}
227245

228246
type GuildScheduledEventCache interface {
247+
GuildScheduledEventCache() GroupedCache[discord.GuildScheduledEvent]
229248
GuildScheduledEvent(guildID snowflake.ID, guildScheduledEventID snowflake.ID) (discord.GuildScheduledEvent, bool)
230249
GuildScheduledEventsForEach(guildID snowflake.ID, fn func(guildScheduledEvent discord.GuildScheduledEvent))
231250
GuildScheduledEventsAllLen() int
@@ -245,6 +264,10 @@ type guildScheduledEventCacheImpl struct {
245264
cache GroupedCache[discord.GuildScheduledEvent]
246265
}
247266

267+
func (c *guildScheduledEventCacheImpl) GuildScheduledEventCache() GroupedCache[discord.GuildScheduledEvent] {
268+
return c.cache
269+
}
270+
248271
func (c *guildScheduledEventCacheImpl) GuildScheduledEvent(guildID snowflake.ID, guildScheduledEventID snowflake.ID) (discord.GuildScheduledEvent, bool) {
249272
return c.cache.Get(guildID, guildScheduledEventID)
250273
}
@@ -274,6 +297,8 @@ func (c *guildScheduledEventCacheImpl) RemoveGuildScheduledEventsByGuildID(guild
274297
}
275298

276299
type RoleCache interface {
300+
RoleCache() GroupedCache[discord.Role]
301+
277302
Role(guildID snowflake.ID, roleID snowflake.ID) (discord.Role, bool)
278303
RolesForEach(guildID snowflake.ID, fn func(role discord.Role))
279304
RolesAllLen() int
@@ -293,6 +318,10 @@ type roleCacheImpl struct {
293318
cache GroupedCache[discord.Role]
294319
}
295320

321+
func (c *roleCacheImpl) RoleCache() GroupedCache[discord.Role] {
322+
return c.cache
323+
}
324+
296325
func (c *roleCacheImpl) Role(guildID snowflake.ID, roleID snowflake.ID) (discord.Role, bool) {
297326
return c.cache.Get(guildID, roleID)
298327
}
@@ -322,6 +351,8 @@ func (c *roleCacheImpl) RemoveRolesByGuildID(guildID snowflake.ID) {
322351
}
323352

324353
type MemberCache interface {
354+
MemberCache() GroupedCache[discord.Member]
355+
325356
Member(guildID snowflake.ID, userID snowflake.ID) (discord.Member, bool)
326357
MembersForEach(guildID snowflake.ID, fn func(member discord.Member))
327358
MembersAllLen() int
@@ -341,6 +372,10 @@ type memberCacheImpl struct {
341372
cache GroupedCache[discord.Member]
342373
}
343374

375+
func (c *memberCacheImpl) MemberCache() GroupedCache[discord.Member] {
376+
return c.cache
377+
}
378+
344379
func (c *memberCacheImpl) Member(guildID snowflake.ID, userID snowflake.ID) (discord.Member, bool) {
345380
return c.cache.Get(guildID, userID)
346381
}
@@ -370,6 +405,8 @@ func (c *memberCacheImpl) RemoveMembersByGuildID(guildID snowflake.ID) {
370405
}
371406

372407
type ThreadMemberCache interface {
408+
ThreadMemberCache() GroupedCache[discord.ThreadMember]
409+
373410
ThreadMember(threadID snowflake.ID, userID snowflake.ID) (discord.ThreadMember, bool)
374411
ThreadMemberForEach(threadID snowflake.ID, fn func(threadMember discord.ThreadMember))
375412
ThreadMembersAllLen() int
@@ -389,6 +426,10 @@ type threadMemberCacheImpl struct {
389426
cache GroupedCache[discord.ThreadMember]
390427
}
391428

429+
func (c *threadMemberCacheImpl) ThreadMemberCache() GroupedCache[discord.ThreadMember] {
430+
return c.cache
431+
}
432+
392433
func (c *threadMemberCacheImpl) ThreadMember(threadID snowflake.ID, userID snowflake.ID) (discord.ThreadMember, bool) {
393434
return c.cache.Get(threadID, userID)
394435
}
@@ -420,6 +461,8 @@ func (c *threadMemberCacheImpl) RemoveThreadMembersByThreadID(threadID snowflake
420461
}
421462

422463
type PresenceCache interface {
464+
PresenceCache() GroupedCache[discord.Presence]
465+
423466
Presence(guildID snowflake.ID, userID snowflake.ID) (discord.Presence, bool)
424467
PresenceForEach(guildID snowflake.ID, fn func(presence discord.Presence))
425468
PresencesAllLen() int
@@ -439,6 +482,10 @@ type presenceCacheImpl struct {
439482
cache GroupedCache[discord.Presence]
440483
}
441484

485+
func (c *presenceCacheImpl) PresenceCache() GroupedCache[discord.Presence] {
486+
return c.cache
487+
}
488+
442489
func (c *presenceCacheImpl) Presence(guildID snowflake.ID, userID snowflake.ID) (discord.Presence, bool) {
443490
return c.cache.Get(guildID, userID)
444491
}
@@ -470,6 +517,8 @@ func (c *presenceCacheImpl) RemovePresencesByGuildID(guildID snowflake.ID) {
470517
}
471518

472519
type VoiceStateCache interface {
520+
VoiceStateCache() GroupedCache[discord.VoiceState]
521+
473522
VoiceState(guildID snowflake.ID, userID snowflake.ID) (discord.VoiceState, bool)
474523
VoiceStatesForEach(guildID snowflake.ID, fn func(discord.VoiceState))
475524
VoiceStatesAllLen() int
@@ -489,6 +538,10 @@ type voiceStateCacheImpl struct {
489538
cache GroupedCache[discord.VoiceState]
490539
}
491540

541+
func (c *voiceStateCacheImpl) VoiceStateCache() GroupedCache[discord.VoiceState] {
542+
return c.cache
543+
}
544+
492545
func (c *voiceStateCacheImpl) VoiceState(guildID snowflake.ID, userID snowflake.ID) (discord.VoiceState, bool) {
493546
return c.cache.Get(guildID, userID)
494547
}
@@ -518,6 +571,8 @@ func (c *voiceStateCacheImpl) RemoveVoiceStatesByGuildID(guildID snowflake.ID) {
518571
}
519572

520573
type MessageCache interface {
574+
MessageCache() GroupedCache[discord.Message]
575+
521576
Message(channelID snowflake.ID, messageID snowflake.ID) (discord.Message, bool)
522577
MessagesForEach(channelID snowflake.ID, fn func(message discord.Message))
523578
MessagesAllLen() int
@@ -538,6 +593,10 @@ type messageCacheImpl struct {
538593
cache GroupedCache[discord.Message]
539594
}
540595

596+
func (c *messageCacheImpl) MessageCache() GroupedCache[discord.Message] {
597+
return c.cache
598+
}
599+
541600
func (c *messageCacheImpl) Message(channelID snowflake.ID, messageID snowflake.ID) (discord.Message, bool) {
542601
return c.cache.Get(channelID, messageID)
543602
}
@@ -573,6 +632,8 @@ func (c *messageCacheImpl) RemoveMessagesByGuildID(guildID snowflake.ID) {
573632
}
574633

575634
type EmojiCache interface {
635+
EmojiCache() GroupedCache[discord.Emoji]
636+
576637
Emoji(guildID snowflake.ID, emojiID snowflake.ID) (discord.Emoji, bool)
577638
EmojisForEach(guildID snowflake.ID, fn func(emoji discord.Emoji))
578639
EmojisAllLen() int
@@ -592,6 +653,10 @@ type emojiCacheImpl struct {
592653
cache GroupedCache[discord.Emoji]
593654
}
594655

656+
func (c *emojiCacheImpl) EmojiCache() GroupedCache[discord.Emoji] {
657+
return c.cache
658+
}
659+
595660
func (c *emojiCacheImpl) Emoji(guildID snowflake.ID, emojiID snowflake.ID) (discord.Emoji, bool) {
596661
return c.cache.Get(guildID, emojiID)
597662
}
@@ -621,6 +686,8 @@ func (c *emojiCacheImpl) RemoveEmojisByGuildID(guildID snowflake.ID) {
621686
}
622687

623688
type StickerCache interface {
689+
StickerCache() GroupedCache[discord.Sticker]
690+
624691
Sticker(guildID snowflake.ID, stickerID snowflake.ID) (discord.Sticker, bool)
625692
StickersForEach(guildID snowflake.ID, fn func(sticker discord.Sticker))
626693
StickersAllLen() int
@@ -640,6 +707,10 @@ type stickerCacheImpl struct {
640707
cache GroupedCache[discord.Sticker]
641708
}
642709

710+
func (c *stickerCacheImpl) StickerCache() GroupedCache[discord.Sticker] {
711+
return c.cache
712+
}
713+
643714
func (c *stickerCacheImpl) Sticker(guildID snowflake.ID, stickerID snowflake.ID) (discord.Sticker, bool) {
644715
return c.cache.Get(guildID, stickerID)
645716
}
@@ -760,38 +831,55 @@ func New(opts ...ConfigOpt) Caches {
760831

761832
return &cachesImpl{
762833
config: *config,
763-
SelfUserCache: config.SelfUserCache,
764-
GuildCache: config.GuildCache,
765-
ChannelCache: config.ChannelCache,
766-
StageInstanceCache: config.StageInstanceCache,
767-
GuildScheduledEventCache: config.GuildScheduledEventCache,
768-
RoleCache: config.RoleCache,
769-
MemberCache: config.MemberCache,
770-
ThreadMemberCache: config.ThreadMemberCache,
771-
PresenceCache: config.PresenceCache,
772-
VoiceStateCache: config.VoiceStateCache,
773-
MessageCache: config.MessageCache,
774-
EmojiCache: config.EmojiCache,
775-
StickerCache: config.StickerCache,
834+
selfUserCache: config.SelfUserCache,
835+
guildCache: config.GuildCache,
836+
channelCache: config.ChannelCache,
837+
stageInstanceCache: config.StageInstanceCache,
838+
guildScheduledEventCache: config.GuildScheduledEventCache,
839+
roleCache: config.RoleCache,
840+
memberCache: config.MemberCache,
841+
threadMemberCache: config.ThreadMemberCache,
842+
presenceCache: config.PresenceCache,
843+
voiceStateCache: config.VoiceStateCache,
844+
messageCache: config.MessageCache,
845+
emojiCache: config.EmojiCache,
846+
stickerCache: config.StickerCache,
776847
}
777848
}
778849

850+
// these type aliases are needed to allow having the GuildCache, ChannelCache, etc. as methods on the cachesImpl struct
851+
type (
852+
guildCache = GuildCache
853+
channelCache = ChannelCache
854+
stageInstanceCache = StageInstanceCache
855+
guildScheduledEventCache = GuildScheduledEventCache
856+
roleCache = RoleCache
857+
memberCache = MemberCache
858+
threadMemberCache = ThreadMemberCache
859+
presenceCache = PresenceCache
860+
voiceStateCache = VoiceStateCache
861+
messageCache = MessageCache
862+
emojiCache = EmojiCache
863+
stickerCache = StickerCache
864+
selfUserCache = SelfUserCache
865+
)
866+
779867
type cachesImpl struct {
780868
config Config
781869

782-
GuildCache
783-
ChannelCache
784-
StageInstanceCache
785-
GuildScheduledEventCache
786-
RoleCache
787-
MemberCache
788-
ThreadMemberCache
789-
PresenceCache
790-
VoiceStateCache
791-
MessageCache
792-
EmojiCache
793-
StickerCache
794-
SelfUserCache
870+
guildCache
871+
channelCache
872+
stageInstanceCache
873+
guildScheduledEventCache
874+
roleCache
875+
memberCache
876+
threadMemberCache
877+
presenceCache
878+
voiceStateCache
879+
messageCache
880+
emojiCache
881+
stickerCache
882+
selfUserCache
795883
}
796884

797885
func (c *cachesImpl) CacheFlags() Flags {

0 commit comments

Comments
 (0)