Beispiel #1
0
func GetPlaceHold(typ string, name string) string {
	name = strings.ToLower(name)
	if t := datatype.GetUserType(typ, name); t != nil {
		ret := ""
		sep := ""
		for k := range t {
			sep = ""
			if k != 0 {
				sep = ","
			}
			ret += sep + "?"
		}
		return ret
	}

	return "?"
}
Beispiel #2
0
func GetDbInsertName(typ string, name string) string {
	name = strings.ToLower(name)
	if t := datatype.GetUserType(typ, name); t != nil {
		ret := ""
		sep := ""
		for k, v := range t {
			sep = ""
			if k != 0 {
				sep = ","
			}
			ret += fmt.Sprintf("%s`%s`", sep, v[0])
		}
		return ret
	}

	return fmt.Sprintf("`p_%s`", strings.ToLower(name))
}
Beispiel #3
0
func (obj *Object) CreateRecordTable() map[string]TblField {

	records := make(map[string]TblField)
	for _, r := range obj.Records {
		if r.Save == "true" && r.Type == "" {

			tbl := TblField{}
			tbl.FieldList = make([]Field, 0, len(r.Columns)+3)

			tbl.FieldList = append(tbl.FieldList, Field{"id", "BIGINT(20) UNSIGNED", false, false})
			tbl.FieldList = append(tbl.FieldList, Field{"index", "SMALLINT(6)", false, false})
			tbl.FieldList = append(tbl.FieldList, Field{"delete", "TINYINT(1) UNSIGNED", false, false})

			for _, p := range r.Columns {
				st := GetDbType(p.Type, p.Len)
				if st != "" {
					tbl.FieldList = append(tbl.FieldList, Field{"p_" + strings.ToLower(p.Name), st, false, false})
				} else {
					usertype := datatype.GetUserType(p.Type, strings.ToLower(p.Name))
					if usertype != nil {
						for _, ut := range usertype {
							if len(ut) != 3 {
								panic("user type serial failed")
							}

							typelen, e := strconv.ParseInt(ut[2], 10, 32)
							if e != nil {
								panic("user type length error")
							}
							tbl.FieldList = append(tbl.FieldList, Field{ut[0], GetDbType(ut[1], int(typelen)), false, false})
						}
					}
				}
			}

			tbl.IndexInfo = make(map[string][]string)
			tbl.IndexInfo["INDEX id"] = []string{"id"}

			records[r.Name] = tbl
		}
	}

	return records

}
Beispiel #4
0
func (obj *Object) CreateTable() TblField {
	tbl := TblField{}
	tbl.FieldList = make([]Field, 0, len(obj.Propertys)+2)
	tbl.FieldList = append(tbl.FieldList, []Field{Field{"id", "BIGINT(20) UNSIGNED", false, false},
		Field{"capacity", "SMALLINT(6)", true, false},
		Field{"configid", "CHAR(64)", true, false},
	}...)
	for _, p := range obj.Propertys {
		if p.Save == "true" {
			st := GetDbType(p.Type, p.Len)
			if st != "" {
				tbl.FieldList = append(tbl.FieldList, Field{"p_" + strings.ToLower(p.Name), st, false, false})
			} else {
				usertype := datatype.GetUserType(p.Type, strings.ToLower(p.Name))
				if usertype != nil {
					for _, ut := range usertype {
						if len(ut) != 3 {
							panic("user type serial failed")
						}

						typelen, e := strconv.ParseInt(ut[2], 10, 32)
						if e != nil {
							panic("user type length error")
						}
						tbl.FieldList = append(tbl.FieldList, Field{ut[0], GetDbType(ut[1], int(typelen)), false, false})
					}
				}
			}
		}
	}

	for _, r := range obj.Records {
		if r.Save == "true" && r.Type != "" {
			tbl.FieldList = append(tbl.FieldList, Field{"r_" + strings.ToLower(r.Name), strings.ToUpper(r.Type), false, false})
		}
	}
	tbl.FieldList = append(tbl.FieldList, Field{"childinfo", "MEDIUMTEXT", false, false})
	tbl.IndexInfo = make(map[string][]string)
	tbl.IndexInfo["PRIMARY"] = []string{"id"}

	return tbl

}