/
db_crud_sql.go
92 lines (81 loc) · 2.2 KB
/
db_crud_sql.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
package db
import "strings"
func insertSqlStr(sqlData *SqlData) string {
sqlname := sqlData.Name
sqlvalue := sqlData.Value
index := strings.LastIndex(sqlname, ",")
if index != -1 {
sqlname = sqlname[:index]
}
index = strings.LastIndex(sqlvalue, ",")
if index != -1 {
sqlvalue = sqlvalue[:index]
}
return "insert into " + sqlData.Table + " (" + sqlname + ") VALUES (" + sqlvalue + ")"
}
func deleteSqlStr(sqlData *SqlData) string {
key := sqlData.Key
index := strings.LastIndex(key, ",")
if index != -1 {
key = key[:index]
}
key = strings.Replace(key, ",", " and ", -1)
return "delete from " + sqlData.Table + " where " + key
}
func updateSqlStr(sqlData *SqlData) string {
str := sqlData.NameValue
primary := sqlData.Key
index := strings.LastIndex(str, ",")
if index != -1 {
str = str[:index]
}
index = strings.LastIndex(primary, ",")
if index != -1 {
primary = primary[:index]
}
primary = strings.Replace(primary, ",", " and ", -1)
return "update " + sqlData.Table + " set " + str + " where " + primary
}
func whereSqlStr(sqlData *SqlData) string {
key := sqlData.Key
index := strings.LastIndex(key, ",")
if index != -1 {
key = key[:index]
}
key = strings.Replace(key, ",", " and ", -1)
return key
}
// --- struct to sql
func InsertSql(obj interface{}, params ...OpOption) string {
op := &Op{sqlType: SQLTYPE_INSERT}
op.applyOpts(params)
sqlData := &SqlData{}
getTableName(obj, sqlData)
parseStructSql(obj, sqlData, op)
return insertSqlStr(sqlData)
}
func DeleteSql(obj interface{}, params ...OpOption) string {
op := &Op{sqlType: SQLTYPE_DELETE}
op.applyOpts(params)
sqlData := &SqlData{}
getTableName(obj, sqlData)
parseStructSql(obj, sqlData, op)
return deleteSqlStr(sqlData)
}
func UpdateSql(obj interface{}, params ...OpOption) string {
op := &Op{sqlType: SQLTYPE_UPDATE}
op.applyOpts(params)
sqlData := &SqlData{}
getTableName(obj, sqlData)
parseStructSql(obj, sqlData, op)
return updateSqlStr(sqlData)
}
func WhereSql(obj interface{}, params ...OpOption) string {
params = append(params, WithOutWhere())
op := &Op{sqlType: SQLTYPE_WHERE}
op.applyOpts(params)
sqlData := &SqlData{}
getTableName(obj, sqlData)
parseStructSql(obj, sqlData, op)
return whereSqlStr(sqlData)
}