init: 条件流引擎初始提交
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
package condflow
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
|
||||
"git.fsdpf.net/go/req"
|
||||
)
|
||||
|
||||
// getDuckDBType 将 Go reflect.Kind 转换为 DuckDB 类型
|
||||
func kindToDuckDBType(kind reflect.Kind) string {
|
||||
switch kind {
|
||||
case reflect.Bool:
|
||||
return "BOOLEAN"
|
||||
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32:
|
||||
return "INTEGER"
|
||||
case reflect.Int64:
|
||||
return "BIGINT"
|
||||
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32:
|
||||
return "UINTEGER"
|
||||
case reflect.Uint64:
|
||||
return "UBIGINT"
|
||||
case reflect.Float32:
|
||||
return "FLOAT"
|
||||
case reflect.Float64:
|
||||
return "DOUBLE"
|
||||
case reflect.String:
|
||||
return "VARCHAR"
|
||||
case reflect.Slice, reflect.Array:
|
||||
return "JSON" // 数组类型使用 JSON
|
||||
case reflect.Map, reflect.Struct:
|
||||
return "JSON" // 复杂类型使用 JSON
|
||||
case reflect.Ptr, reflect.Interface:
|
||||
return "VARCHAR" // 指针和接口类型默认使用 VARCHAR
|
||||
default:
|
||||
return "VARCHAR" // 默认使用 VARCHAR
|
||||
}
|
||||
}
|
||||
|
||||
// kindToSQLite3Type 将 Go reflect.Kind 转换为 SQLite3 类型
|
||||
func kindToSQLite3Type(kind reflect.Kind) string {
|
||||
switch kind {
|
||||
case reflect.Bool,
|
||||
reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,
|
||||
reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
|
||||
return "INTEGER"
|
||||
case reflect.Float32, reflect.Float64:
|
||||
return "REAL"
|
||||
case reflect.Slice, reflect.Array, reflect.Map, reflect.Struct:
|
||||
return "TEXT" // SQLite3 无 JSON 类型,复杂类型序列化后存为 TEXT
|
||||
default:
|
||||
return "TEXT"
|
||||
}
|
||||
}
|
||||
|
||||
func toActionContext(c FlowContext, res req.Resource) Context {
|
||||
return &context{
|
||||
FlowContext: c,
|
||||
res: res,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user