use gob to instead json to store pk & added json type

This commit is contained in:
Lunny Xiao 2015-04-01 16:16:22 +08:00
parent be6e7ac47d
commit 8cc025cd8e
2 changed files with 15 additions and 8 deletions

View File

@ -1,10 +1,11 @@
package core
import (
"encoding/json"
"errors"
"fmt"
"time"
"bytes"
"encoding/gob"
)
const (
@ -47,16 +48,20 @@ type Cacher interface {
}
func encodeIds(ids []PK) (string, error) {
b, err := json.Marshal(ids)
if err != nil {
return "", err
}
return string(b), nil
buf := new(bytes.Buffer)
enc := gob.NewEncoder(buf)
err := enc.Encode(ids)
return buf.String(), err
}
func decodeIds(s string) ([]PK, error) {
pks := make([]PK, 0)
err := json.Unmarshal([]byte(s), &pks)
dec := gob.NewDecoder(bytes.NewBufferString(s))
err := dec.Decode(&pks)
return pks, err
}

View File

@ -101,6 +101,8 @@ var (
Serial = "SERIAL"
BigSerial = "BIGSERIAL"
Json = "JSON"
SqlTypes = map[string]int{
Bit: NUMERIC_TYPE,
TinyInt: NUMERIC_TYPE,
@ -112,6 +114,7 @@ var (
Enum: TEXT_TYPE,
Set: TEXT_TYPE,
Json: TEXT_TYPE,
Char: TEXT_TYPE,
Varchar: TEXT_TYPE,
@ -229,7 +232,6 @@ var (
)
func Type2SQLType(t reflect.Type) (st SQLType) {
switch k := t.Kind(); k {
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32:
st = SQLType{Int, 0, 0}