-
Notifications
You must be signed in to change notification settings - Fork 0
/
parameter.go
125 lines (91 loc) · 2.45 KB
/
parameter.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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package parameter
import (
"database/sql"
"github.com/dekoch/gouniversal/shared/io/sqlite3"
)
const TableName = "parameter"
type Parameter struct {
ID int
UUID string
Typ string
Name string
Prozess string
ParameterNr string
ParameterUUID string
}
func LoadConfig(dbconn *sqlite3.SQLite) error {
var lyt sqlite3.Layout
lyt.SetTableName(TableName)
lyt.AddField("id", sqlite3.TypeINTEGER, true, true)
lyt.AddField("uuid", sqlite3.TypeTEXT, false, false)
lyt.AddField("typ", sqlite3.TypeTEXT, false, false)
lyt.AddField("name", sqlite3.TypeTEXT, false, false)
lyt.AddField("prozess", sqlite3.TypeTEXT, false, false)
lyt.AddField("parameternr", sqlite3.TypeTEXT, false, false)
lyt.AddField("parameteruuid", sqlite3.TypeTEXT, false, false)
return dbconn.CreateTableFromLayout(lyt)
}
func (ep *Parameter) Save(tx *sql.Tx) error {
_, err := tx.Exec("INSERT OR REPLACE INTO `"+TableName+"` (uuid, typ, name, prozess, parameternr, parameteruuid) values(?,?,?,?,?,?)", ep.UUID, ep.Typ, ep.Name, ep.Prozess, ep.ParameterNr, ep.ParameterUUID)
return err
}
func (ep *Parameter) Load(uuid, prozess, parameternr string, db *sql.DB) (bool, error) {
var (
err error
found bool
id string
)
func() {
var rows *sql.Rows
for i := 0; i <= 3; i++ {
switch i {
case 0:
rows, err = db.Query("SELECT id FROM `"+TableName+"` WHERE uuid=? AND prozess=? AND parameternr=? ORDER BY id DESC LIMIT 0, 1", uuid, prozess, parameternr)
case 1:
defer rows.Close()
case 2:
for rows.Next() {
err = rows.Scan(&id)
}
case 3:
found, err = ep.loadWithID(id, db)
}
if err != nil {
return
}
}
}()
return found, err
}
func (ep *Parameter) loadWithID(id string, db *sql.DB) (bool, error) {
var (
err error
found bool
)
func() {
var rows *sql.Rows
for i := 0; i <= 2; i++ {
switch i {
case 0:
rows, err = db.Query("SELECT id, uuid, typ, name, prozess, parameternr, parameteruuid FROM `"+TableName+"` WHERE id=?", id)
case 1:
defer rows.Close()
case 2:
for rows.Next() {
err = rows.Scan(&ep.ID, &ep.UUID, &ep.Typ, &ep.Name, &ep.Prozess, &ep.ParameterNr, &ep.ParameterUUID)
found = true
/*fmt.Println(ep.ID)
fmt.Println(ep.UUID)
fmt.Println(ep.Typ)
fmt.Println(ep.Prozess)
fmt.Println(ep.ParameterNr)
fmt.Println(ep.ParameterUUID)*/
}
}
if err != nil {
return
}
}
}()
return found, err
}