feat: implement caching for channel retrieval
This commit is contained in:
16
model/log.go
16
model/log.go
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user