reduced overhead of mapping models to ledis, I don't think we will need nested structs

This commit is contained in:
Deluan
2016-02-28 02:07:52 -05:00
parent ae5206612c
commit 08f035d99b
3 changed files with 37 additions and 12 deletions
+1 -1
View File
@@ -6,7 +6,7 @@ type BaseRepository struct {
func (r *BaseRepository) saveOrUpdate(id string, rec interface{}) error {
return hmset(r.key + "_id_" + id, rec)
return saveStruct(r.key + "_id_" + id, rec)
}
func (r *BaseRepository) Dump() {
+14 -2
View File
@@ -28,8 +28,8 @@ func db() *ledis.DB {
return _dbInstance
}
func hmset(key string, data interface{}) error {
h, err := utils.Flatten(data)
func saveStruct(key string, data interface{}) error {
h, err := utils.ToMap(data)
if err != nil {
return err
}
@@ -43,6 +43,18 @@ func hmset(key string, data interface{}) error {
return db().HMset([]byte(key), fvList...)
}
func readStruct(key string) (interface{}, error) {
fvs, _ := db().HGetAll([]byte(key))
var m = make(map[string]interface{}, len(fvs))
for _, fv := range fvs {
var v interface{}
json.Unmarshal(fv.Value, &v)
m[string(fv.Field)] = v
}
return utils.ToStruct(m)
}
func hset(key, field, value string) error {
_, err := db().HSet([]byte(key), []byte(field), []byte(value))
return err