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, } }