/
device.go
87 lines (74 loc) · 1.73 KB
/
device.go
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package repo
import (
_domain "github.com/aaronchen2k/tester/internal/pkg/domain"
"github.com/aaronchen2k/tester/internal/server/model"
"github.com/aaronchen2k/tester/internal/server/model/base"
"gorm.io/gorm"
)
func NewDeviceRepo() *DeviceRepo {
return &DeviceRepo{}
}
type DeviceRepo struct {
CommonRepo
DB *gorm.DB `inject:""`
}
func (r *DeviceRepo) Register(device _domain.DeviceInst) (err error) {
code := 1
tx := r.DB.Begin()
defer r.Defer(tx, &code)
var po model.Device
r.DB.Where("serial = ?", device.Serial).First(&po)
if po.ID == 0 {
err := r.DB.Model(&device).Omit("Ip").Create(&device).Error
return err
} else {
r.DB.Model(&device).Updates(device)
return nil
}
}
func (r *DeviceRepo) Get(id uint) (device model.Device) {
r.DB.Where("id=?", id).First(&device)
return
}
func (r *DeviceRepo) GetBySerial(serial string) (device model.Device) {
r.DB.Where("serial=?", serial).First(&device)
return
}
func (r *DeviceRepo) GetByEnv(env base.TestEnv) (dev model.Device) {
condition := r.convertEnvToVmTempl(env)
r.DB.Where(&condition).First(&dev)
return
}
func (r *DeviceRepo) convertEnvToVmTempl(env base.TestEnv) (dev model.Device) {
if env.OsPlatform != "" {
dev.OsPlatform = env.OsPlatform
}
if env.OsType != "" {
dev.OsType = env.OsType
}
if env.OsLevel != "" {
dev.OsLevel = env.OsLevel
}
if env.OsLang != "" {
dev.OsLang = env.OsLang
}
if env.OsVer != "" {
dev.OsVer = env.OsVer
}
if env.OsBuild != "" {
dev.OsBuild = env.OsBuild
}
if env.OsBits != "" {
dev.OsBits = env.OsBits
}
if env.BrowserType != "" {
dev.BrowserType = env.BrowserType
}
if env.BrowserVer != "" {
dev.BrowserVer = env.BrowserVer
}
if env.BrowserLang != "" {
dev.BrowserLang = env.BrowserLang
}
return
}