github.com/RevenueMonster/sqlike@v1.0.6/sql/dump/mapper.go (about) 1 package sqldump 2 3 import ( 4 "bytes" 5 "strconv" 6 "strings" 7 "time" 8 9 "github.com/RevenueMonster/sqlike/util" 10 ) 11 12 var null = []byte(`null`) 13 14 // Parser : 15 type Parser func([]byte) string 16 17 func byteToString(data []byte) string { 18 if len(data) == 0 { 19 return `""` 20 } 21 return strconv.Quote(string(data)) 22 } 23 24 func numToString(data []byte) string { 25 return string(data) 26 } 27 28 func tsToString(data []byte) string { 29 t, _ := time.Parse(time.RFC3339, string(data)) 30 return t.UTC().Format(`"2006-01-02 15:04:05.999999999"`) 31 } 32 33 func dateToString(data []byte) string { 34 t, _ := time.Parse(time.RFC3339, string(data)) 35 return t.UTC().Format(`"2006-01-02"`) 36 } 37 38 func jsonToString(data []byte) string { 39 if bytes.Equal(data, null) { 40 return `"null"` 41 } 42 return strconv.Quote(string(data)) 43 } 44 45 func setToString(data []byte) string { 46 str := string(data) 47 vals := strings.Split(str, ",") 48 blr := util.AcquireString() 49 defer util.ReleaseString(blr) 50 blr.WriteString(`'`) 51 for i, v := range vals { 52 if i > 0 { 53 blr.WriteByte(',') 54 } 55 blr.WriteString(v) 56 } 57 blr.WriteString(`'`) 58 return blr.String() 59 }