[feat] 重新梳理依赖
This commit is contained in:
+42
-42
@@ -7,24 +7,24 @@ import (
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"git.fsdpf.net/go/contracts"
|
||||
"git.fsdpf.net/go/contracts/res_type"
|
||||
"git.fsdpf.net/go/db"
|
||||
"git.fsdpf.net/go/db/schema"
|
||||
"git.fsdpf.net/go/req"
|
||||
"github.com/google/uuid"
|
||||
"github.com/spf13/cast"
|
||||
)
|
||||
|
||||
// 资源字段
|
||||
type ResField struct {
|
||||
Uuid string `db:"uuid"`
|
||||
Name string `db:"name"`
|
||||
Code string `db:"code"`
|
||||
CodeResource string `db:"codeResource"`
|
||||
DataType contracts.ResDataType `db:"table_type"`
|
||||
Length string `db:"length"`
|
||||
Comment string `db:"comment"`
|
||||
Default string `db:"default"`
|
||||
Uuid string `db:"uuid"`
|
||||
Name string `db:"name"`
|
||||
Code string `db:"code"`
|
||||
CodeResource string `db:"codeResource"`
|
||||
DataType req.ResDataType `db:"table_type"`
|
||||
Length string `db:"length"`
|
||||
Comment string `db:"comment"`
|
||||
Default string `db:"default"`
|
||||
}
|
||||
|
||||
func (this ResField) ToStructField(tags ...string) reflect.StructField {
|
||||
@@ -38,16 +38,16 @@ func (this ResField) ToStructField(tags ...string) reflect.StructField {
|
||||
}
|
||||
|
||||
switch this.DataType {
|
||||
case contracts.ResDataType_String, contracts.ResDataType_Text, contracts.ResDataType_Enum,
|
||||
contracts.ResDataType_Timestamp, contracts.ResDataType_Date, contracts.ResDataType_Datetime:
|
||||
case req.ResString, req.ResText, req.ResEnum,
|
||||
req.ResTimestamp, req.ResDate, req.ResDatetime:
|
||||
typ = reflect.TypeOf(string(""))
|
||||
case contracts.ResDataType_Integer, contracts.ResDataType_SmallInteger:
|
||||
case req.ResInteger, req.ResSmallInteger:
|
||||
typ = reflect.TypeOf(res_type.ResFieldByInteger(0))
|
||||
case contracts.ResDataType_Decimal:
|
||||
case req.ResDecimal:
|
||||
typ = reflect.TypeOf(float64(0))
|
||||
case contracts.ResDataType_Boolean:
|
||||
case req.ResBoolean:
|
||||
typ = reflect.TypeOf(true)
|
||||
case contracts.ResDataType_Json:
|
||||
case req.ResJson:
|
||||
if this.Default != "" && this.Default[0:1] == "[" {
|
||||
typ = reflect.TypeOf([]any{})
|
||||
} else {
|
||||
@@ -74,47 +74,47 @@ func (this ResField) GetName() string {
|
||||
return this.Name
|
||||
}
|
||||
|
||||
func (this ResField) GetDataType() contracts.ResDataType {
|
||||
func (this ResField) GetDataType() req.ResDataType {
|
||||
return this.DataType
|
||||
}
|
||||
|
||||
func (this ResField) GetQueryDataType() contracts.QueryDataType {
|
||||
func (this ResField) GetQueryDataType() req.RouteParamType {
|
||||
switch this.GetDataType() {
|
||||
case contracts.ResDataType_Enum,
|
||||
contracts.ResDataType_Timestamp, contracts.ResDataType_Date,
|
||||
contracts.ResDataType_Datetime, contracts.ResDataType_String,
|
||||
contracts.ResDataType_Text:
|
||||
return contracts.QueryDataType_String
|
||||
case contracts.ResDataType_Integer, contracts.ResDataType_SmallInteger:
|
||||
return contracts.QueryDataType_Integer
|
||||
case contracts.ResDataType_Decimal:
|
||||
return contracts.QueryDataType_Float
|
||||
case contracts.ResDataType_Boolean:
|
||||
return contracts.QueryDataType_Bool
|
||||
case contracts.ResDataType_Json:
|
||||
case req.ResEnum,
|
||||
req.ResTimestamp, req.ResDate,
|
||||
req.ResDatetime, req.ResString,
|
||||
req.ResText:
|
||||
return req.ReqString
|
||||
case req.ResInteger, req.ResSmallInteger:
|
||||
return req.ReqInteger
|
||||
case req.ResDecimal:
|
||||
return req.ReqFloat
|
||||
case req.ResBoolean:
|
||||
return req.ReqBool
|
||||
case req.ResJson:
|
||||
if this.Default != "" && this.Default[0:1] == "[" {
|
||||
return contracts.QueryDataType_Array
|
||||
return req.ReqArray
|
||||
}
|
||||
return contracts.QueryDataType_Json
|
||||
return req.ReqJson
|
||||
}
|
||||
return contracts.QueryDataType_String
|
||||
return req.ReqString
|
||||
}
|
||||
|
||||
func (this ResField) ToValue(v any) any {
|
||||
switch this.DataType {
|
||||
case contracts.ResDataType_String, contracts.ResDataType_Text, contracts.ResDataType_Enum,
|
||||
contracts.ResDataType_Timestamp, contracts.ResDataType_Date, contracts.ResDataType_Datetime:
|
||||
case req.ResString, req.ResText, req.ResEnum,
|
||||
req.ResTimestamp, req.ResDate, req.ResDatetime:
|
||||
return strings.Trim(cast.ToString(v), " ")
|
||||
case contracts.ResDataType_Integer, contracts.ResDataType_SmallInteger:
|
||||
case req.ResInteger, req.ResSmallInteger:
|
||||
return cast.ToInt(v)
|
||||
case contracts.ResDataType_Decimal:
|
||||
case req.ResDecimal:
|
||||
return strings.Trim(cast.ToString(v), " ")
|
||||
case contracts.ResDataType_Boolean:
|
||||
case req.ResBoolean:
|
||||
if v, _ := strconv.ParseBool(fmt.Sprintf("%v", v)); v {
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
case contracts.ResDataType_Json:
|
||||
case req.ResJson:
|
||||
if v == nil {
|
||||
if this.Default != "" && this.Default[0:1] == "[" {
|
||||
return db.Raw("'[]'")
|
||||
@@ -142,7 +142,7 @@ func (this ResField) ToValue(v any) any {
|
||||
}
|
||||
|
||||
func (this ResField) GetRawDefault(driver string) db.Expression {
|
||||
if this.DataType == contracts.ResDataType_Json {
|
||||
if this.DataType == req.ResJson {
|
||||
if this.Default != "" && this.Default[0:1] == "[" {
|
||||
return db.Raw("'[]'")
|
||||
} else if this.Default != "" && this.Default[0:1] == "{" {
|
||||
@@ -150,7 +150,7 @@ func (this ResField) GetRawDefault(driver string) db.Expression {
|
||||
} else if this.Default == "" {
|
||||
return db.Raw("'{}'")
|
||||
}
|
||||
} else if this.DataType == contracts.ResDataType_Boolean {
|
||||
} else if this.DataType == req.ResBoolean {
|
||||
if v, _ := strconv.ParseBool(this.Default); v {
|
||||
return db.Raw("'1'")
|
||||
}
|
||||
@@ -169,7 +169,7 @@ func (this ResField) GetRawDefault(driver string) db.Expression {
|
||||
}
|
||||
|
||||
if this.Default == "" {
|
||||
if this.GetDataType() == contracts.ResDataType_Date || this.GetDataType() == contracts.ResDataType_Datetime {
|
||||
if this.GetDataType() == req.ResDate || this.GetDataType() == req.ResDatetime {
|
||||
return db.Raw("NULL")
|
||||
}
|
||||
return db.Raw("''")
|
||||
@@ -255,7 +255,7 @@ func (this ResField) ToBlueprint(table *schema.Blueprint) (temp *schema.ColumnDe
|
||||
return temp
|
||||
}
|
||||
|
||||
func (this ResField) ToQueryField(t contracts.QueryDataType, alias string, options int) contracts.QueryField {
|
||||
func (this ResField) ToQueryField(t req.RouteParamType, alias string, options byte) req.QueryField {
|
||||
o := &QueryField{
|
||||
ResField: this,
|
||||
typ: t,
|
||||
|
||||
Reference in New Issue
Block a user