本文整理汇总了Golang中github.com/eaciit/cast.ToString函数的典型用法代码示例。如果您正苦于以下问题:Golang ToString函数的具体用法?Golang ToString怎么用?Golang ToString使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ToString函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: ReadVariable
func ReadVariable(f *dbox.Filter, in toolkit.M) *dbox.Filter {
if (f.Op == "$and" || f.Op == "$or") && strings.Contains(reflect.TypeOf(f.Value).String(), "dbox.Filter") {
fs := f.Value.([]*dbox.Filter)
for i, ff := range fs {
bf := ReadVariable(ff, in)
fs[i] = bf
}
f.Value = fs
} else {
if reflect.TypeOf(f.Value).Kind() == reflect.Slice {
fSlice := f.Value.([]interface{})
// nilai fSlice : [@name1 @name2]
for i := 0; i < len(fSlice); i++ {
// nilai fSlice [i] : @name1
if string(cast.ToString(fSlice[i])[0]) == "@" {
fSlice[i] = in.Get(strings.Replace(cast.ToString(fSlice[i]), "@", "", 1), "")
}
}
f.Value = fSlice
} else if string(cast.ToString(f.Value)[0]) == "@" {
f.Value = in.Get(strings.Replace(cast.ToString(f.Value), "@", "", 1), "")
}
}
return f
}
开发者ID:Budianto55,项目名称:dbox,代码行数:25,代码来源:csv_query.go
示例2: ReadVariable
func ReadVariable(f *dbox.Filter, in toolkit.M) *dbox.Filter {
f.Field = strings.ToLower(f.Field)
if (f.Op == "$and" || f.Op == "$or") &&
strings.Contains(reflect.TypeOf(f.Value).String(), "dbox.Filter") {
fs := f.Value.([]*dbox.Filter)
/* nilai fs : [0xc082059590 0xc0820595c0]*/
for i, ff := range fs {
/* nilai ff[0] : &{umur $gt @age} && ff[1] : &{name $eq @nama}*/
bf := ReadVariable(ff, in)
/* nilai bf[0] : &{umur $gt 25} && bf[1] : &{name $eq Kane}*/
fs[i] = bf
}
f.Value = fs
return f
} else {
if reflect.TypeOf(f.Value).Kind() == reflect.Slice {
if strings.Contains(reflect.TypeOf(f.Value).String(), "interface") {
fSlice := f.Value.([]interface{})
/*nilai fSlice : [@name1 @name2]*/
for i := 0; i < len(fSlice); i++ {
/* nilai fSlice [i] : @name1*/
if string(cast.ToString(fSlice[i])[0]) == "@" {
for key, val := range in {
if cast.ToString(fSlice[i]) == key {
fSlice[i] = val
}
}
}
}
f.Value = fSlice
} else if strings.Contains(reflect.TypeOf(f.Value).String(), "string") {
fSlice := f.Value.([]string)
for i := 0; i < len(fSlice); i++ {
if string(fSlice[i][0]) == "@" {
for key, val := range in {
if fSlice[i] == key {
fSlice[i] = val.(string)
}
}
}
}
f.Value = fSlice
}
return f
} else {
if string(cast.ToString(f.Value)[0]) == "@" {
for key, val := range in {
if cast.ToString(f.Value) == key {
f.Value = val
}
}
}
return f
}
}
return f
}
开发者ID:rinosukmandityo,项目名称:dbox,代码行数:57,代码来源:query.go
示例3: BuildFilter
func (fb *FilterBuilder) BuildFilter(f *dbox.Filter) (interface{}, error) {
fm := ""
if f.Op == dbox.FilterOpEqual {
fm = fm + f.Field + " = " + StringValue(f.Value, "non")
} else if f.Op == dbox.FilterOpNoEqual {
fm = fm + f.Field + " <>" + StringValue(f.Value, "non")
} else if f.Op == dbox.FilterOpGt {
fm = fm + f.Field + " > " + StringValue(f.Value, "non")
} else if f.Op == dbox.FilterOpGte {
fm = fm + f.Field + " >= " + StringValue(f.Value, "non")
} else if f.Op == dbox.FilterOpLt {
fm = fm + f.Field + " < " + StringValue(f.Value, "non")
} else if f.Op == dbox.FilterOpLte {
fm = fm + f.Field + " <= " + StringValue(f.Value, "non")
} else if f.Op == dbox.FilterOpContains {
fm = CombineIn("LIKE ", f)
} else if f.Op == dbox.FilterOpEndWith {
fm = fm + f.Field + " LIKE '%" + cast.ToString(f.Value) + "'"
//fm = CombineIn("START ", f)
} else if f.Op == dbox.FilterOpStartWith {
fm = fm + f.Field + " LIKE '" + cast.ToString(f.Value) + "%'"
//fm = CombineIn("START ", f)
} else if f.Op == dbox.FilterOpIn {
fm = CombineIn("IN", f)
} else if f.Op == dbox.FilterOpNin {
fm = CombineIn("NOT IN", f)
} else if f.Op == dbox.FilterOpOr || f.Op == dbox.FilterOpAnd {
fs := f.Value.([]*dbox.Filter)
for _, ff := range fs {
// nilai ff : &{name $eq Roy}
bf, _ := fb.BuildFilter(ff)
// nilai bf : name = 'Roy'
if fm == "" {
fm = "(" + cast.ToString(bf)
} else {
if f.Op == dbox.FilterOpOr {
fm += " OR " + cast.ToString(bf)
} else {
fm += " AND " + cast.ToString(bf)
}
}
}
fm += ")"
} else {
//return nil, fmt.Errorf("Filter Op %s is not defined", f.Op)
}
return fm, nil
}
开发者ID:rinosukmandityo,项目名称:dbox,代码行数:49,代码来源:rdbms_filter.go
示例4: Connect
func (c *Connection) Connect() error {
ci := c.Info()
host := ci.Host
db := ci.Database
username := ci.UserName
pass := ci.Password
path := cast.ToString(ci.Settings["path"])
delimiter := cast.ToString(ci.Settings["delimiter"])
ConnectionString := host + "," + db + "," + username + "," + pass + "," + path + "," + delimiter
e := c.RdbmsConnect("hive", ConnectionString)
if e != nil {
return err.Error(packageName, modConnection, "Connect", e.Error())
}
return nil
}
开发者ID:rinosukmandityo,项目名称:dbox,代码行数:16,代码来源:hive_connection.go
示例5: execQueryPartUpdate
func (q *Query) execQueryPartUpdate(dt toolkit.M, Cond QueryCondition) error {
if len(dt) == 0 {
return errorlib.Error(packageName, "Query", modQuery, "data to update is not found")
}
writer := q.Connection().(*Connection).writer
reader := q.Connection().(*Connection).reader
tempHeader := []string{}
for _, val := range q.Connection().(*Connection).headerColumn {
tempHeader = append(tempHeader, val.name)
}
for {
foundChange := false
recData := toolkit.M{}
dataTemp, e := reader.Read()
for i, val := range dataTemp {
recData.Set(tempHeader[i], val)
}
if len(Cond.Find) > 0 || (len(Cond.Find) == 0 && toolkit.IdField(dt) == "") {
foundChange = Cond.getCondition(recData)
}
// Check ID IF Condition Not Found
if nameid := toolkit.IdField(dt); nameid != "" && !foundChange {
if recData.Has(nameid) && dt[nameid] == recData[nameid] {
foundChange = true
}
}
if foundChange && len(dataTemp) > 0 {
for n, v := range tempHeader {
if dt.Has(v) {
dataTemp[n] = cast.ToString(dt[v])
}
}
}
if e == io.EOF {
if dataTemp != nil {
writer.Write(dataTemp)
writer.Flush()
}
break
} else if e != nil {
return errorlib.Error(packageName, modQuery, "Update", e.Error())
}
if dataTemp != nil {
writer.Write(dataTemp)
writer.Flush()
}
}
return nil
}
开发者ID:Budianto55,项目名称:dbox,代码行数:59,代码来源:csv_query.go
示例6: BuildFilter
func (fb *FilterBuilder) BuildFilter(f *dbox.Filter) (interface{}, error) {
fm := ""
// vals := ""
//drivername := dbox.Connection
// drivername := new(Connection)
//drivername := fb.GetDriver()
// drivername := fb.Connection().(*Connection).Drivername
// fmt.Println("drivernamenya adalah : ", drivername)
if f.Op == dbox.FilterOpEqual {
fm = fm + f.Field + "= '" + cast.ToString(f.Value) + "'"
} else if f.Op == dbox.FilterOpNoEqual {
fm = fm + f.Field + "<>'" + cast.ToString(f.Value) + "'"
} else if f.Op == dbox.FilterOpGt {
fm = fm + f.Field + " > '" + cast.ToString(f.Value) + "'"
} else if f.Op == dbox.FilterOpGte {
fm = fm + f.Field + " >= '" + cast.ToString(f.Value) + "'"
} else if f.Op == dbox.FilterOpLt {
fm = fm + f.Field + " < '" + cast.ToString(f.Value) + "'"
} else if f.Op == dbox.FilterOpLte {
fm = fm + f.Field + " <= '" + cast.ToString(f.Value) + "'"
} else if f.Op == dbox.FilterOpIn {
fm = CombineIn("IN", f)
} else if f.Op == dbox.FilterOpNin {
fm = CombineIn("NOT IN", f)
} else if f.Op == dbox.FilterOpContains {
fm = CombineIn("NOT IN", f)
} else if f.Op == dbox.FilterOpOr || f.Op == dbox.FilterOpAnd {
// bfs := []interface{}{}
fs := f.Value.([]*dbox.Filter)
for _, ff := range fs {
bf, _ := fb.BuildFilter(ff)
// if eb == nil {
// bfs = append(bfs, bf)
// }
if fm == "" {
fm = cast.ToString(bf)
} else {
if f.Op == dbox.FilterOpOr {
fm = fm + " OR " + cast.ToString(bf)
} else {
fm = fm + " AND " + cast.ToString(bf)
}
}
}
//fm.Set(f.Op, bfs)
} else {
//return nil, fmt.Errorf("Filter Op %s is not defined", f.Op)
}
return fm, nil
}
开发者ID:rizalsmarts,项目名称:golang-dbox,代码行数:51,代码来源:rdbms_filter.go
示例7: ReadVariable
func ReadVariable(f *dbox.Filter, in toolkit.M) *dbox.Filter {
if (f.Op == "$and" || f.Op == "$or") &&
strings.Contains(reflect.TypeOf(f.Value).String(), "dbox.Filter") {
fs := f.Value.([]*dbox.Filter)
// nilai fs : [0xc082059590 0xc0820595c0]
for i, ff := range fs {
// nilai ff[0] : &{umur $gt @age} && ff[1] : &{name $eq @nama}
bf := ReadVariable(ff, in)
// nilai bf[0] : &{umur $gt 25} && bf[1] : &{name $eq Kane}
fs[i] = bf
}
f.Value = fs
return f
} else {
if reflect.TypeOf(f.Value).Kind() == reflect.Slice {
fSlice := f.Value.([]interface{})
// nilai fSlice : [@name1 @name2]
for i := 0; i < len(fSlice); i++ {
// nilai fSlice [i] : @name1
if string(cast.ToString(fSlice[i])[0]) == "@" {
for key, val := range in {
if strings.Replace(cast.ToString(fSlice[i]), "@", "", 1) == key {
fSlice[i] = val
}
}
}
}
f.Value = fSlice
return f
} else {
if string(cast.ToString(f.Value)[0]) == "@" {
for key, val := range in {
if strings.Replace(cast.ToString(f.Value), "@", "", 1) == key {
f.Value = val
}
}
}
return f
}
}
return f
}
开发者ID:Budianto55,项目名称:dbox,代码行数:42,代码来源:rdbms_query.go
示例8: BuildFilter
func (fb *FilterBuilder) BuildFilter(f *dbox.Filter) (interface{}, error) {
fm := ""
if f.Op == dbox.FilterOpEqual {
fm = fm + f.Field + " = " + rdbms.StringValue(f.Value, "oracle") + ""
} else if f.Op == dbox.FilterOpNoEqual {
fm = fm + f.Field + " <> " + rdbms.StringValue(f.Value, "oracle") + ""
} else if f.Op == dbox.FilterOpGt {
fm = fm + f.Field + " > " + rdbms.StringValue(f.Value, "oracle") + ""
} else if f.Op == dbox.FilterOpGte {
fm = fm + f.Field + " >= " + rdbms.StringValue(f.Value, "oracle") + ""
} else if f.Op == dbox.FilterOpLt {
fm = fm + f.Field + " < " + rdbms.StringValue(f.Value, "oracle") + ""
} else if f.Op == dbox.FilterOpLte {
fm = fm + f.Field + " <= " + rdbms.StringValue(f.Value, "oracle") + ""
} else if f.Op == dbox.FilterOpIn {
fm = CombineIn("IN", f)
} else if f.Op == dbox.FilterOpNin {
fm = CombineIn("NOT IN", f)
} else if f.Op == dbox.FilterOpContains {
fm = CombineIn("NOT IN", f)
} else if f.Op == dbox.FilterOpOr || f.Op == dbox.FilterOpAnd {
// f
fs := f.Value.([]*dbox.Filter)
for _, ff := range fs {
bf, _ := fb.BuildFilter(ff)
if fm == "" {
fm = "(" + cast.ToString(bf)
} else {
if f.Op == dbox.FilterOpOr {
fm += " OR " + cast.ToString(bf)
} else {
fm += " AND " + cast.ToString(bf)
}
}
}
fm += ")"
} else {
//return nil, fmt.Errorf("Filter Op %s is not defined", f.Op)
}
return fm, nil
}
开发者ID:rinosukmandityo,项目名称:dbox,代码行数:42,代码来源:oracle_filter.go
示例9: execQueryPartUpdate
func (q *Query) execQueryPartUpdate(dt toolkit.M) error {
var e error
e = q.startWriteMode()
if e != nil {
return err.Error(packageName, modQuery, "Exec-Update: ", e.Error())
}
writer := q.writer
reader := q.reader
tempHeader := []string{}
for _, val := range q.headerColumn {
tempHeader = append(tempHeader, val.name)
}
var i int = 0
for {
i += 1
dataTemp, e := reader.Read()
if toolkit.HasMember(q.indexes, i) && len(dataTemp) > 0 {
for n, v := range tempHeader {
if dt.Has(v) {
dataTemp[n] = cast.ToString(dt[v])
}
}
}
if e == io.EOF {
if len(dataTemp) > 0 {
writer.Write(dataTemp)
writer.Flush()
}
break
} else if e != nil {
_ = q.endWriteMode()
return err.Error(packageName, modQuery, "Exec-Update:", e.Error())
}
if len(dataTemp) > 0 {
writer.Write(dataTemp)
writer.Flush()
}
}
q.execOpr = true
e = q.endWriteMode()
if e != nil {
return err.Error(packageName, modQuery, "Exec-Update: ", e.Error())
}
return nil
}
开发者ID:rinosukmandityo,项目名称:dbox,代码行数:52,代码来源:query.go
示例10: BuildFilter
func (fb *FilterBuilder) BuildFilter(f *dbox.Filter) (interface{}, error) {
fm := ""
// vals := ""
if f.Op == dbox.FilterOpEqual {
fm = fm + f.Field + "= '" + cast.ToString(f.Value) + "'"
} else if f.Op == dbox.FilterOpNoEqual {
fm = fm + f.Field + "<>'" + cast.ToString(f.Value) + "'"
} else if f.Op == dbox.FilterOpGt {
fm = fm + f.Field + " > '" + cast.ToString(f.Value) + "'"
} else if f.Op == dbox.FilterOpGte {
fm = fm + f.Field + " >= '" + cast.ToString(f.Value) + "'"
} else if f.Op == dbox.FilterOpLt {
fm = fm + f.Field + " < '" + cast.ToString(f.Value) + "'"
} else if f.Op == dbox.FilterOpLte {
fm = fm + f.Field + " <= '" + cast.ToString(f.Value) + "'"
} else if f.Op == dbox.FilterOpOr || f.Op == dbox.FilterOpAnd {
// bfs := []interface{}{}
fs := f.Value.([]*dbox.Filter)
for _, ff := range fs {
bf, _ := fb.BuildFilter(ff)
// if eb == nil {
// bfs = append(bfs, bf)
// }
if fm == "" {
fm = cast.ToString(bf)
} else {
if f.Op == dbox.FilterOpOr {
fm = fm + " OR " + cast.ToString(bf)
} else {
fm = fm + " AND " + cast.ToString(bf)
}
}
}
//fm.Set(f.Op, bfs)
} else {
//return nil, fmt.Errorf("Filter Op %s is not defined", f.Op)
}
return fm, nil
}
开发者ID:satriasm,项目名称:dbox,代码行数:40,代码来源:rdbms_filter.go
示例11: execQueryPartInsert
func (q *Query) execQueryPartInsert(dt toolkit.M) error {
var e error
e = q.startWriteMode()
if e != nil {
return err.Error(packageName, modQuery, "Exec-Insert: ", e.Error())
}
if q.newheader {
q.setNewHeader(dt)
}
writer := q.writer
// reader := q.reader
dataTemp := []string{}
for _, v := range q.headerColumn {
if dt.Has(v.name) {
dataTemp = append(dataTemp, cast.ToString(dt[v.name]))
} else {
dataTemp = append(dataTemp, "")
}
}
if len(dataTemp) > 0 {
writer.Write(dataTemp)
writer.Flush()
}
q.execOpr = true
e = q.endWriteMode()
if e != nil {
return err.Error(packageName, modQuery, "Exec-Insert: ", e.Error())
}
return nil
}
开发者ID:rinosukmandityo,项目名称:dbox,代码行数:37,代码来源:query.go
示例12: Cursor
func (q *Query) Cursor(in toolkit.M) (dbox.ICursor, error) {
var e error
/*
if q.Parts == nil {
return nil, errorlib.Error(packageName, modQuery,
"Cursor", fmt.Sprintf("No Query Parts"))
}
*/
dbname := q.Connection().Info().Database
cursor := dbox.NewCursor(new(Cursor))
if q.GetDriverDB() == "hive" {
session := q.SessionHive()
cursor.(*Cursor).sessionHive = session
} else {
session := q.Session()
cursor.(*Cursor).session = session
}
cursor.(*Cursor).DateFormat = q.Connection().(*Connection).DateFormat
driverName := q.GetDriverDB()
// driverName = "oracle"
var QueryString string
/*
parts will return E - map{interface{}}interface{}
where each interface{} returned is slice of interfaces --> []interface{}
*/
quyerParts := q.Parts()
c := crowd.From(&quyerParts)
groupParts := c.Group(func(x interface{}) interface{} {
return x.(*dbox.QueryPart).PartType
}, nil).Exec()
parts := map[interface{}]interface{}{}
if len(groupParts.Result.Data().([]crowd.KV)) > 0 {
for _, kv := range groupParts.Result.Data().([]crowd.KV) {
parts[kv.Key] = kv.Value
}
}
fromParts, hasFrom := parts[dbox.QueryPartFrom]
procedureParts, hasProcedure := parts["procedure"]
freeQueryParts, hasFreeQuery := parts["freequery"]
idMap := toolkit.M{}
if hasFrom {
tablename := ""
tablename = fromParts.([]*dbox.QueryPart)[0].Value.(string)
selectParts, hasSelect := parts[dbox.QueryPartSelect]
var attribute string
incAtt := 0
if hasSelect {
for _, sl := range selectParts.([]*dbox.QueryPart) {
for _, fid := range sl.Value.([]string) {
if incAtt == 0 {
attribute = fid
} else {
attribute = attribute + ", " + fid
}
idMap.Set(fid, fid)
incAtt++
}
}
} else {
_, hasUpdate := parts[dbox.QueryPartUpdate]
_, hasInsert := parts[dbox.QueryPartInsert]
_, hasDelete := parts[dbox.QueryPartDelete]
_, hasSave := parts[dbox.QueryPartSave]
if hasUpdate || hasInsert || hasDelete || hasSave {
return nil, errorlib.Error(packageName, modQuery, "Cursor",
"Valid operation for a cursor is select only")
}
}
aggrParts, hasAggr := parts[dbox.QueryPartAggr]
var aggrExpression string
if hasAggr {
incAtt := 0
// for _, aggr := range aggrParts.([]interface{}) {
for _, aggr := range aggrParts.([]*dbox.QueryPart) {
// qp := aggr.(*dbox.QueryPart)
/* isi qp : &{AGGR {$sum 1 Total Item}}*/
aggrInfo := aggr.Value.(dbox.AggrInfo)
/* isi Aggr Info : {$sum 1 Total Item}*/
if incAtt == 0 {
if driverName == "hive" {
aggrExpression = strings.Replace(aggrInfo.Op, "$", "", 1) + "(" +
cast.ToString(aggrInfo.Field) + ")" + " as " + aggrInfo.Alias
} else {
aggrExpression = strings.Replace(aggrInfo.Op, "$", "", 1) + "(" +
cast.ToString(aggrInfo.Field) + ")" + " as \"" + aggrInfo.Alias + "\""
}
} else {
if driverName == "hive" {
aggrExpression += ", " + strings.Replace(aggrInfo.Op, "$", "", 1) + "(" +
cast.ToString(aggrInfo.Field) + ")" + " as " + aggrInfo.Alias
//.........这里部分代码省略.........
开发者ID:ranggaeaciit,项目名称:dbox,代码行数:101,代码来源:rdbms_query.go
示例13: setConfigParam
func (q *Query) setConfigParam() {
ci := q.Connection().(*Connection).Info()
q.newfile = ci.Settings.Get("newfile", false).(bool)
q.isUseHeader = ci.Settings.Get("useheader", false).(bool)
// set header from reader =============== }
dateformat := ci.Settings.Get("dateformat", "").(string)
q.headerColumn = make([]headerstruct, 0, 0)
tdread, e := q.reader.Read()
for i, v := range tdread {
ts := headerstruct{}
ts.name = string(i)
ts.dataType = ""
if q.isUseHeader {
ts.name = v
}
q.headerColumn = append(q.headerColumn, ts)
}
if q.isUseHeader && e == nil {
tdread, e = q.reader.Read()
}
isCheckType := true
ix := 0
for isCheckType && e != io.EOF {
isCheckType = false
for i, v := range tdread {
if v != "" {
matchNumber := false
matchFloat := false
matchDate := false
formatDate := "((^(0[0-9]|[0-9]|(1|2)[0-9]|3[0-1])(\\.|\\/|-)(0[0-9]|[0-9]|1[0-2])(\\.|\\/|-)[\\d]{4}$)|(^[\\d]{4}(\\.|\\/|-)(0[0-9]|[0-9]|1[0-2])(\\.|\\/|-)(0[0-9]|[0-9]|(1|2)[0-9]|3[0-1])$))"
matchDate, _ = regexp.MatchString(formatDate, v)
if !matchDate && dateformat != "" {
d := cast.String2Date(v, dateformat)
if d.Year() > 1 {
matchDate = true
}
}
x := strings.Index(v, ".")
if x > 0 {
matchFloat = true
v = strings.Replace(v, ".", "", 1)
}
matchNumber, _ = regexp.MatchString("^\\d+$", v)
q.headerColumn[i].dataType = "string"
if matchNumber {
q.headerColumn[i].dataType = "int"
if matchFloat {
q.headerColumn[i].dataType = "float"
}
}
if matchDate {
q.headerColumn[i].dataType = "date"
}
}
}
for _, v := range q.headerColumn {
if v.dataType == "" {
isCheckType = true
}
}
if isCheckType {
tdread, e = q.reader.Read()
}
ix++
if ix > 10 {
break
}
}
for _, v := range q.headerColumn {
if v.dataType == "" {
v.dataType = "string"
}
}
_ = q.resetReader()
// ===================== }
if ci.Settings.Has("mapheader") {
smh := ci.Settings["mapheader"].([]toolkit.M)
for i, val := range smh {
ts := headerstruct{}
for name, dt := range val {
ts.name = name
ts.dataType = cast.ToString(dt)
//.........这里部分代码省略.........
开发者ID:rinosukmandityo,项目名称:dbox,代码行数:101,代码来源:query.go
示例14: execQueryPartInsert
func (q *Query) execQueryPartInsert(dt toolkit.M) error {
if len(dt) == 0 {
return errorlib.Error(packageName, "Query", modQuery, "data to insert is not found")
}
writer := q.Connection().(*Connection).writer
reader := q.Connection().(*Connection).reader
dataTemp := []string{}
if q.Connection().(*Connection).setNewHeader {
q.Connection().(*Connection).SetHeaderToolkitM(dt)
q.Connection().(*Connection).setNewHeader = false
for _, v := range q.Connection().(*Connection).headerColumn {
dataTemp = append(dataTemp, v.name)
}
if len(dataTemp) > 0 {
writer.Write(dataTemp)
writer.Flush()
}
dataTemp = []string{}
}
// Check ID Before Insert
if nameid := toolkit.IdField(dt); nameid != "" {
var colsid int
for i, val := range q.Connection().(*Connection).headerColumn {
if val.name == nameid {
colsid = i
}
}
for {
dataTempSearch, e := reader.Read()
for i, val := range dataTempSearch {
if i == colsid && val == dt[nameid] {
return errorlib.Error(packageName, modQuery, "Insert", "Unique id is found")
}
}
if e == io.EOF {
break
} else if e != nil {
return errorlib.Error(packageName, modQuery, "Insert", e.Error())
}
}
}
for _, v := range q.Connection().(*Connection).headerColumn {
if dt.Has(v.name) {
dataTemp = append(dataTemp, cast.ToString(dt[v.name]))
} else {
dataTemp = append(dataTemp, "")
}
}
if len(dataTemp) > 0 {
writer.Write(dataTemp)
writer.Flush()
}
return nil
}
开发者ID:Budianto55,项目名称:dbox,代码行数:64,代码来源:csv_query.go
示例15: insertBulk
func (q *Query) insertBulk(parm toolkit.M) error {
var e error
if parm == nil {
parm = toolkit.M{}
}
driverName := q.GetDriverDB()
// driverName = "oracle"
tablename := ""
data := parm.Get("data")
var attributes string
var dataM toolkit.M
var dataMs []toolkit.M
if toolkit.IsSlice(data) {
e = toolkit.Unjson(toolkit.Jsonify(data), &dataMs)
if e != nil {
return errorlib.Error(packageName, modQuery, "Exec: data extraction", "Data encoding error: "+e.Error())
}
} else {
dataM, e = toolkit.ToM(data)
dataMs = append(dataMs, dataM)
if e != nil {
return errorlib.Error(packageName, modQuery, "Exec: data extraction", "Data encoding error: "+e.Error())
}
}
temp := ""
quyerParts := q.Parts()
c := crowd.From(&quyerParts)
groupParts := c.Group(func(x interface{}) interface{} {
qp := x.(*dbox.QueryPart)
temp = toolkit.JsonString(qp)
return qp.PartType
}, nil).Exec()
parts := map[interface{}]interface{}{}
if len(groupParts.Result.Data().([]crowd.KV)) > 0 {
for _, kv := range groupParts.Result.Data().([]crowd.KV) {
parts[kv.Key] = kv.Value
}
}
commandType := ""
_, hasInsert := parts[dbox.QueryPartInsert]
if hasInsert {
commandType = dbox.QueryPartInsert
} else {
_, e = q.ExecOut(parm)
return e
// return errorlib.Error(packageName, "Query", modQuery+".InsertBulk", "Invalid Operation")
}
fromParts, hasFrom := parts[dbox.QueryPartFrom]
if !hasFrom {
return errorlib.Error(packageName, "Query", modQuery, "Invalid table name")
}
tablename = fromParts.([]*dbox.QueryPart)[0].Value.(string)
session := q.Session()
attributeList := extractFields(dataMs[0])
var datas []string
for _, dataVal := range dataMs {
var values string
tmp := toolkit.M{}
for _, attr := range attributeList {
tmp.Set(attr, dataVal.Get(attr))
}
values = extractDataBulk(attributeList, tmp, driverName)
// toolkit.Printf("test: \n %v \n------\n %v \n------\n %v \n------\n %v \n", attributeList, dataVal, tmp, values)
datas = append(datas, values)
}
attributes = "(" + strings.Join(attributeList, ",") + ")"
if attributes != "" && nil != datas {
var statement string
if driverName == "hive" {
/*statement = "INSERT INTO " + tablename + " VALUES " + values
e = sessionHive.Exec(statement, nil)*/
return errorlib.Error(packageName, modQuery+".Exec", commandType,
"Not Implemented Yet for HIVE")
} else {
statement = fmt.Sprintf("INSERT INTO "+tablename+" "+attributes+" VALUES %s", strings.Join(datas, ","))
_, e = session.Exec(statement)
}
if e != nil {
return errorlib.Error(packageName, modQuery+".Exec", commandType,
cast.ToString(e.Error()))
//.........这里部分代码省略.........
开发者ID:rinosukmandityo,项目名称:dbox,代码行数:101,代码来源:rdbms_query.go
示例16: Fetch
func (c *Cursor) Fetch(m interface{}, n int, closeWhenDone bool) error {
tableData := []toolkit.M{}
// var e error
rows, e := c.session.Query(c.QueryString)
var valueType reflect.Type
if n == 1 {
valueType = reflect.TypeOf(m).Elem()
} else {
valueType = reflect.TypeOf(m).Elem().Elem()
}
if e != nil {
return e
}
defer rows.Close()
columns, e := rows.Columns()
if e != nil {
return e
}
count := len(columns)
values := make([]interface{}, count)
valuePtrs := make([]interface{}, count)
for rows.Next() {
for i := 0; i < count; i++ {
valuePtrs[i] = &values[i]
}
rows.Scan(valuePtrs...)
entry := toolkit.M{}
for i, col := range columns {
var v interface{}
val := values[i]
// b, ok := val.([]byte)
// // toolkit.Println("i : ", i, " :col: ", col, " :val: ", val, " :b : ", b, " :type data : ", toolkit.Value(val))
// var out interface{}
// e = toolkit.Unjson(b, &out)
// // toolkit.Println("i : ", i, "b : ", b, " :out: ", v, " :: error : ", e)
// if e != nil {
// ok = false
// }
// if ok {
// v = out
// toolkit.Println("error OK :: ", ok, " :v :", v)
// } else {
// toolkit.Println("error OK :: ", ok, " :b :", b)
// v = string(b)
// }
v = val
entry.Set(strings.ToLower(col), v)
}
if valueType.Kind() == reflect.Struct {
for i := 0; i < valueType.NumField(); i++ {
namaField := strings.ToLower(valueType.Field(i).Name)
dataType := strings.ToLower(valueType.Field(i).Type.String())
if entry.Has(namaField) {
if strings.Contains(dataType, "int") {
entry.Set(namaField,
cast.ToInt(entry[namaField], cast.RoundingAuto))
} else if strings.Contains(dataType, "time.time") {
entry.Set(namaField,
cast.String2Date(cast.ToString(entry[namaField]), "2006-01-02 15:04:05"))
}
}
}
}
tableData = append(tableData, entry)
}
// toolkit.Println("... ::: ", tableData)
maxIndex := toolkit.SliceLen(tableData)
var e2 error
if e2 != nil {
return e2
}
end := c.start + n
if end > maxIndex || n == 0 {
end = maxIndex
}
if c.start >= maxIndex {
e2 = errors.New("No more data to fetched!")
} else {
e2 = toolkit.Serde(tableData[c.start:end], m, "json")
}
c.start = end
//.........这里部分代码省略.........
开发者ID:rinosukmandityo,项目名称:dbox,代码行数:101,代码来源:jdbc_cursor.go
示例17: Exec
//.........这里部分代码省略.........
if e != nil {
return errorlib.Error(packageName, "Query", modQuery, e.Error())
}
writer := q.Connection().(*Connection).writer
reader := q.Connection().(*Connection).reader
var execCond QueryCondition
execCond.Find, _ = toolkit.ToM(where)
switch commandType {
case dbox.QueryPartInsert, dbox.QueryPartSave:
var dataTemp []string
dataMformat, _ := toolkit.ToM(data)
// fmt.Println("LINE338:", q.Connection().(*Connection).setNewHeader)
if q.Connection().(*Connection).setNewHeader {
q.Connection().(*Connection).SetHeaderToolkitM(dataMformat)
q.Connection().(*Connection).setNewHeader = false
for _, v := range q.Connection().(*Connection).headerColumn {
dataTemp = append(dataTemp, v.name)
}
if len(dataTemp) > 0 {
writer.Write(dataTemp)
writer.Flush()
}
// fmt.Println("LINE342:", q.Connection().(*Connection).headerColumn)
dataTemp = []string{}
}
for _, v := range q.Connection().(*Connection).headerColumn {
if dataMformat.Has(v.name) {
dataTemp = append(dataTemp, cast.ToString(dataMformat[v.name]))
} else {
dataTemp = append(dataTemp, "")
}
}
if len(dataTemp) > 0 {
writer.Write(dataTemp)
writer.Flush()
}
case dbox.QueryPartDelete:
var tempHeader []string
for _, val := range q.Connection().(*Connection).headerColumn {
tempHeader = append(tempHeader, val.name)
}
for {
foundDelete := true
recData := toolkit.M{}
dataTemp, e := reader.Read()
for i, val := range dataTemp {
recData.Set(tempHeader[i], val)
}
foundDelete = execCond.getCondition(recData)
if e == io.EOF {
if !foundDelete && dataTemp != nil {
writer.Write(dataTemp)
writer.Flush()
}
开发者ID:satriasm,项目名称:dbox,代码行数:67,代码来源:csv_query.go
示例18: Cursor
func (q *Query) Cursor(in toolkit.M) (dbox.ICursor, error) {
var e error
/*
if q.Parts == nil {
return nil, errorlib.Error(packageName, modQuery,
"Cursor", fmt.Sprintf("No Query Parts"))
}
*/
// aggregate := false
dbname := q.Connection().Info().Database
session := q.Session()
cursor := dbox.NewCursor(new(Cursor))
cursor.(*Cursor).session = session
// driverName := q.GetDriverDB()
driverName := "oracle"
var QueryString string
/*
parts will return E - map{interface{}}interface{}
where each interface{} returned is slice of interfaces --> []interface{}
*/
parts := crowd.From(q.Parts()).Group(func(x interface{}) interface{} {
qp := x.(*dbox.QueryPart)
return qp.PartType
}, nil).Data
fromParts, hasFrom := parts[dbox.QueryPartFrom]
procedureParts, hasProcedure := parts["procedure"]
if hasFrom {
tablename := ""
tablename = fromParts.([]interface{})[0].(*dbox.QueryPart).Value.(string)
skip := 0
if skipParts, hasSkip := parts[dbox.QueryPartSkip]; hasSkip {
skip = skipParts.([]interface{})[0].(*dbox.QueryPart).
Value.(int)
}
take := 0
if takeParts, has := parts[dbox.QueryPartTake]; has {
take = takeParts.([]interface{})[0].(*dbox.QueryPart).
Value.(int)
}
aggrParts, hasAggr := parts[dbox.QueryPartAggr]
var aggrExpression string
if hasAggr {
// aggregate = true
incAtt := 0
for _, aggr := range aggrParts.([]interface{}) {
qp := aggr.(*dbox.QueryPart)
// isi qp : &{AGGR {$sum 1 Total Item}}
aggrInfo := qp.Value.(dbox.AggrInfo)
// isi Aggr Info : {$sum 1 Total Item}
if incAtt == 0 {
aggrExpression = strings.Replace(aggrInfo.Op, "$", "", 1) + "(" +
cast.ToString(aggrInfo.Field) + ")" + " as '" + aggrInfo.Alias + "'"
} else {
aggrExpression += ", " + strings.Replace(aggrInfo.Op, "$", "", 1) +
"(" + cast.ToString(aggrInfo.Field) + ")" + " as '" + aggrInfo.Alias + "'"
}
incAtt++
}
QueryString = "SELECT " + aggrExpression + " FROM " + tablename
// isi Aggr Expression : sum(1) as 'Total Item', max(amount) as 'Max Amount', avg(amount) as 'Average Amount'
}
selectParts, hasSelect := parts[dbox.QueryPartSelect]
var attribute string
incAtt := 0
if hasSelect {
for _, sl := range selectParts.([]interface{}) {
qp := sl.(*dbox.QueryPart)
for _, fid := range qp.Value.([]string) {
if incAtt == 0 {
attribute = fid
} else {
attribute = attribute + "," + fid
}
incAtt++
}
}
if attribute == "" {
QueryString = "SELECT * FROM " + tablename
} else {
QueryString = "SELECT " + attribute + " FROM " + tablename
}
} else {
_, hasUpdate := parts[dbox.QueryPartUpdate]
_, hasInsert := parts[dbox.QueryPartInsert]
_, hasDelete := parts[dbox.QueryPartDelete]
_, hasSave := parts[dbox.QueryPartSave]
if hasUpdate || hasInsert || hasDelete || hasSave {
return nil, errorlib.Error(packageName, modQuery, "Cursor",
"Valid operation for a cursor is select only")
//.........这里部分代码省略.........
开发者ID:Budianto55,项目名称:dbox,代码行数:101,代码来源:rdbms_query.go
示例19: Cursor
//.........这里部分代码省略.........
tablename = fromParts.([]interface{})[0].(*dbox.QueryPart).Value.(string)
skip := 0
if skipParts, hasSkip := parts[dbox.QueryPartSkip]; hasSkip {
skip = skipParts.([]interface{})[0].(*dbox.QueryPart).
Value.(int)
}
take := 0
if takeParts, has := parts[dbox.QueryPartTake]; has {
take = takeParts.([]interface{})[0].(*dbox.QueryPart).
Value.(int)
}
var fields toolkit.M
selectParts, hasSelect := parts[dbox.QueryPartSelect]
var attribute string
incAtt := 0
if hasSelect {
fields = toolkit.M{}
for _, sl := range selectParts.([]interface{}) {
qp := sl.(*dbox.QueryPart)
for _, fid := range qp.Value.([]string) {
if incAtt == 0 {
attribute = fid
} else {
attribute = attribute + "," + fid
}
incAtt++
fields.Set(fid, 1)
}
}
} else {
_, hasUpdate := parts[dbox.QueryPartUpdate]
_, hasInsert := parts[dbox.QueryPartInsert]
_, hasDelete := parts[dbox.QueryPartDelete]
_, hasSave := parts[dbox.QueryPartSave]
if hasUpdate || hasInsert || hasDelete || hasSave {
return nil, errorlib.Error(packageName, modQuery, "Cursor",
"Valid operation for a cursor is select only")
}
}
//fmt.Printf("Result: %s \n", toolkit.JsonString(fields))
//fmt.Printf("Database:%s table:%s \n", dbname, tablename)
var sort []string
sortParts, hasSort := parts[dbox.QueryPartSelect]
if hasSort {
sort = []string{}
for _, sl := range sortParts.([]interface{}) {
qp := sl.(*dbox.QueryPart)
for _, fid := range qp.Value.([]string) {
sort = append(sort, fid)
}
}
}
//where := toolkit.M{}
var where interface{}
whereParts, hasWhere := parts[dbox.QueryPartWhere]
if hasWhere {
fb := q.Connection().Fb()
for _, p := range whereParts.([]interface{}) {
fs := p.(*dbox.QueryPart).Value.([]*dbox.Filter)
for _, f := range fs {
fb.AddFilter(f)
}
}
where, e = fb.Build()
if e != nil {
return nil, errorlib.Error(packageName, modQuery, "Cursor",
e.Error())
} else {
//fmt.Printf("Where: %s", toolkit.JsonString(where))
}
//where = iwhere.(toolkit.M)
}
session := q.Session()
cursor := dbox.NewCursor(new(Cursor))
cursor.(*Cursor).session = session
if dbname != "" && tablename != "" && e != nil && skip == 0 && take == 0 && where == nil {
}
if !aggregate {
QueryString := ""
if attribute == "" {
QueryString = "SELECT * FROM " + tablename
} else {
QueryString = "SELECT " + attribute + " FROM " + tablename
}
if cast.ToString(where) != "" {
QueryString = QueryString + " WHERE " + cast.ToString(where)
}
cursor.(*Cursor).QueryString = QueryString
} else {
}
return cursor, nil
}
开发者ID:satriasm,项目名称:dbox,代码行数:101,代码来源:rdbms_query.go
示例20: Exec
//.........这里部分代码省略.........
return errorlib.Error(packageName, "Query", modQuery, "Invalid table name")
}
tablename = fromParts.([]interface{})[0].(*dbox.QueryPart).Value.(string)
var where interface{}
whereParts, hasWhere := parts[dbox.QueryPartWhere]
if hasWhere {
fb := q.Connection().Fb()
for _, p := range whereParts.([]interface{}) {
fs := p.(*dbox.QueryPart).Value.([]*dbox.Filter)
for _, f := range fs {
fb.AddFilter(f)
}
}
where, e = fb.Build()
if e != nil {
} else {
}
}
commandType := ""
multi := false
_, hasDelete := parts[dbox.QueryPartDelete]
_, hasInsert := parts[dbox.QueryPartInsert]
_, hasUpdate := parts[dbox.QueryPartUpdate]
_, hasSave := parts[dbox.QueryPartSave]
if hasDelete {
commandType = dbox.QueryPartDelete
} else if hasInsert {
commandType = dbox.QueryPartInsert
} else if hasUpdate {
commandType = dbox.QueryPartUpdate
} else if hasSave {
commandType = dbox.QueryPartSave
}
if data == nil {
//---
multi = true
} else {
if where == nil {
id := toolkit
|
请发表评论