zhangqian
2023-08-19 066a30751bdc20f9e83b34539de71ae392783e1b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package model
 
import (
    "apsClient/conf"
    "apsClient/pkg/logx"
    "apsClient/pkg/sqlitex"
    "sync"
)
 
func Init() error {
    if err := sqlitex.Init(&conf.Conf.Sqlite, logx.GetLogger()); err != nil {
        return err
    }
 
    if err := RegisterTables(); err != nil {
        return err
    }
    InsertDefaultData()
    return nil
}
 
func RegisterTables() error {
    db := sqlitex.GetDB()
    err := db.AutoMigrate(
        Order{},
        Procedures{},
        NetConfig{},
        PlcBrand{},
    )
    return err
}
 
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),
    }
 
    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())
        }
    }
}