-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
Go 版 APIJSON 目前解析 JSON 没有大的问题了,只是还缺转 SQL 的方法,
我刚刚改了下源码,然后初步实现了一个能用的,哈哈。
func main() {
log.SetFlags(log.Lshortfile)
s := `{
"Person":{
},
"[]": {
"page":2,
"count":10,
"join": "&/User/id@,</Comment/momentId@",
"Moment":{
"@column":"id,date,userId",
"id":12
},
"User":{
"id@":"/Moment/userId",
"@column":"id,name"
}
}
}`
r, err := action.ParseJsonRequest([]byte(s))
if err != nil {
log.Println(err)
return
}
var tn string
tn, err = action.ParseTableName(r)
if err != nil {
log.Println(err)
return
}
//var t string
//t, err = action.ParseReqType(r, "get")
//if err != nil {
// log.Println(err)
// return
//}
var sql string
sql, err = action.ParseSQL(r, "head", tn)
if err != nil {
log.Println(err)
return
}
log.Println(sql)
}package action
import "errors"
// TODO 根据不同请求类型来实现不同业务
func ParseSQL(reqMap map[string]interface{}, reqType string, tableName string) (string, error) {
switch reqType {
case "get":
//普通获取数据
return "SELECT * FROM " + tableName, nil
case "head":
//普通获取数量
return "SELECT count(*) FROM " + tableName, nil
case "gets":
//安全/私密获取数据
case "heads":
//安全/私密获取数量
case "post":
//新增数据
case "put":
//修改数据,
//只修改所传的字段
case "delete":
//删除数据
}
return "", errors.New("parseSQL No method matched " + reqType + "!")
}Metadata
Metadata
Assignees
Labels
No labels

