-
Notifications
You must be signed in to change notification settings - Fork 2
/
patch.go
66 lines (53 loc) · 1.25 KB
/
patch.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
package goen
type PatchKind int
const (
PatchInsert PatchKind = iota
PatchUpdate
PatchDelete
)
type Patch struct {
Kind PatchKind
TableName string
RowKey RowKey
Columns []string
Values []interface{}
}
func InsertPatch(tableName string, columns []string, values []interface{}) *Patch {
if tableName == "" {
panic("goen: no tableName provided")
}
if len(columns) == 0 || len(columns) != len(values) {
panic("goen: columns and values must have least 1 element or length mismatched")
}
return &Patch{
Kind: PatchInsert,
TableName: tableName,
Columns: columns,
Values: values,
}
}
func UpdatePatch(tableName string, columns []string, values []interface{}, rowKey RowKey) *Patch {
if tableName == "" {
panic("goen: no tableName provided")
}
if len(columns) == 0 || len(columns) != len(values) {
panic("goen: columns and values must have least 1 element or length mismatched")
}
return &Patch{
Kind: PatchUpdate,
TableName: tableName,
Columns: columns,
Values: values,
RowKey: rowKey,
}
}
func DeletePatch(tableName string, rowKey RowKey) *Patch {
if tableName == "" {
panic("goen: no tableName provided")
}
return &Patch{
Kind: PatchDelete,
TableName: tableName,
RowKey: rowKey,
}
}