reduced overhead of mapping models to ledis, I don't think we will need nested structs
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user