package model import ( "apsClient/conf" "apsClient/pkg/logx" "apsClient/pkg/sqlitex" "sync" ) func Init() error { if err := sqlitex.Init(&conf.Conf.Sqlite); err != nil { return err } RegisterTables() InsertDefaultData() return nil } func RegisterTables() { db := sqlitex.GetDB() db.AutoMigrate( Order{}, Procedures{}, NetConfig{}, PlcBrand{}, DevicePlc{}, ProcessModel{}, ProductionProgress{}, Device{}, TaskStatusSync{}, ) } type InitDefaultData interface { InitDefaultData(errCh chan<- error, wg *sync.WaitGroup) } func InsertDefaultData() { errCh := make(chan error, 2) var wg sync.WaitGroup models := []interface{}{ NewNetConfigSearch(nil), NewPlcBrandSearch(), } for _, model := range models { if id, ok := model.(InitDefaultData); ok { wg.Add(1) go id.InitDefaultData(errCh, &wg) } } go func() { wg.Wait() // 等待所有goroutine完成 close(errCh) // 关闭错误通道 }() for err := range errCh { if err != nil { logx.Errorf("InitDefaultData err: %v", err.Error()) } } }