From 27dca2e343b2f6b65c41b1e066f6c9d1fffd83de Mon Sep 17 00:00:00 2001 From: krau <71133316+krau@users.noreply.github.com> Date: Thu, 20 Feb 2025 22:57:45 +0800 Subject: [PATCH] perf: add UserStorages map and implement GetUserStorages function for user-specific storage retrieval --- storage/storage.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/storage/storage.go b/storage/storage.go index cbd1e3a..3fb7a07 100644 --- a/storage/storage.go +++ b/storage/storage.go @@ -22,6 +22,8 @@ type Storage interface { var Storages = make(map[string]Storage) +var UserStorages = make(map[int64][]Storage) + // GetStorageByName returns storage by name from cache or creates new one func GetStorageByName(name string) (Storage, error) { if name == "" { @@ -59,6 +61,12 @@ func GetStorageByUserIDAndName(chatID int64, name string) (Storage, error) { } func GetUserStorages(chatID int64) []Storage { + if chatID <= 0 { + return nil + } + if storages, ok := UserStorages[chatID]; ok { + return storages + } var storages []Storage for _, name := range config.Cfg.GetStorageNamesByUserID(chatID) { storage, err := GetStorageByName(name) @@ -101,4 +109,7 @@ func LoadStorages() { } } logger.L.Infof("成功加载 %d 个存储", len(Storages)) + for user := range config.Cfg.GetUsersID() { + UserStorages[int64(user)] = GetUserStorages(int64(user)) + } }