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  }