MCPcopy Index your code
hub / github.com/FloatTech/ZeroBot-Plugin / checkAndUpdateData

Function checkAndUpdateData

plugin/pig/pig.go:158–192  ·  view source on GitHub ↗

checkAndUpdateData

()

Source from the content-addressed store, hash-verified

156
157// checkAndUpdateData
158func checkAndUpdateData() error {
159 pigMutex.Lock()
160 defer pigMutex.Unlock()
161
162 // 如果有缓存且距上次更新不足 24 小时,直接返回
163 if len(pigCache) > 0 && time.Since(lastUpdateTime) < 24*time.Hour {
164 return nil
165 }
166
167 dataBytes, err := engine.GetLazyData("pig_data.json", true)
168 if err != nil {
169 return errors.New("读取数据文件失败: " + err.Error())
170 }
171
172 var data pigResponse
173 if err := json.Unmarshal(dataBytes, &data); err != nil {
174 return errors.New("解析JSON失败: " + err.Error())
175 }
176
177 if len(data.Images) == 0 {
178 return errors.New("数据文件为空")
179 }
180
181 pigCache = data.Images
182
183 // 更新缓存时,顺便重构一份查询 Map
184 newMap := make(map[string]*pigImage, len(pigCache))
185 for i := range pigCache {
186 newMap[pigCache[i].ID] = &pigCache[i]
187 }
188 pigMap = newMap
189
190 lastUpdateTime = time.Now()
191 return nil
192}
193
194func (img *pigImage) fetch() ([]byte, error) {
195 if img.Filename == "" {

Callers 1

initFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected