Skip to content

Go 版 APIJSON 目前解析 JSON 没有大的问题了,只是还缺转 SQL 的方法, 我刚刚改了下源码,然后初步实现了一个能用的,哈哈。 #2

@TommyLemon

Description

@TommyLemon

Go 版 APIJSON 目前解析 JSON 没有大的问题了,只是还缺转 SQL 的方法,
我刚刚改了下源码,然后初步实现了一个能用的,哈哈。

main.go
UU9MYOG5LL@6UIOK~$O}9}Y

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)

}

action/parser_sql.go
OV $A`301CFXP0%AL%GN3K8

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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions