MCPcopy Create free account
hub / github.com/aiprodcoder/MIXAPI / migrateDBFast

Function migrateDBFast

model/main.go:263–310  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

261}
262
263func migrateDBFast() error {
264 var wg sync.WaitGroup
265
266 migrations := []struct {
267 model interface{}
268 name string
269 }{
270 {&Channel{}, "Channel"},
271 {&Token{}, "Token"},
272 {&User{}, "User"},
273 {&Option{}, "Option"},
274 {&Redemption{}, "Redemption"},
275 {&Ability{}, "Ability"},
276 {&Log{}, "Log"},
277 {&Midjourney{}, "Midjourney"},
278 {&TopUp{}, "TopUp"},
279 {&QuotaData{}, "QuotaData"},
280 {&Task{}, "Task"},
281 {&Setup{}, "Setup"},
282 {&UsageStatistics{}, "UsageStatistics"},
283 {&TokenUsageLog{}, "TokenUsageLog"},
284 }
285 // 动态计算migration数量,确保errChan缓冲区足够大
286 errChan := make(chan error, len(migrations))
287
288 for _, m := range migrations {
289 wg.Add(1)
290 go func(model interface{}, name string) {
291 defer wg.Done()
292 if err := DB.AutoMigrate(model); err != nil {
293 errChan <- fmt.Errorf("failed to migrate %s: %v", name, err)
294 }
295 }(m.model, m.name)
296 }
297
298 // Wait for all migrations to complete
299 wg.Wait()
300 close(errChan)
301
302 // Check for any errors
303 for err := range errChan {
304 if err != nil {
305 return err
306 }
307 }
308 common.SysLog("database migrated")
309 return nil
310}
311
312func migrateLOGDB() error {
313 var err error

Callers 1

migrateDBFunction · 0.85

Calls 2

SysLogFunction · 0.92
AddMethod · 0.80

Tested by

no test coverage detected