feat: implement caching for channel retrieval

This commit is contained in:
CaIon
2026-02-23 14:11:11 +08:00
parent 053ee18637
commit 2b3bfd4e1e

View File

@@ -295,9 +295,25 @@ func GetAllLogs(logType int, startTimestamp int64, endTimestamp int64, modelName
Id int `gorm:"column:id"` Id int `gorm:"column:id"`
Name string `gorm:"column:name"` Name string `gorm:"column:name"`
} }
if common.MemoryCacheEnabled {
// Cache get channel
for _, channelId := range channelIds.Items() {
if cacheChannel, err := CacheGetChannel(channelId); err == nil {
channels = append(channels, struct {
Id int `gorm:"column:id"`
Name string `gorm:"column:name"`
}{
Id: channelId,
Name: cacheChannel.Name,
})
}
}
} else {
// Bulk query channels from DB
if err = DB.Table("channels").Select("id, name").Where("id IN ?", channelIds.Items()).Find(&channels).Error; err != nil { if err = DB.Table("channels").Select("id, name").Where("id IN ?", channelIds.Items()).Find(&channels).Error; err != nil {
return logs, total, err return logs, total, err
} }
}
channelMap := make(map[int]string, len(channels)) channelMap := make(map[int]string, len(channels))
for _, channel := range channels { for _, channel := range channels {
channelMap[channel.Id] = channel.Name channelMap[channel.Id] = channel.Name