| 51 | } |
| 52 | |
| 53 | func (u *userDB) register(user, passwd string, id int64) error { |
| 54 | log.Debugf("user:%v passwd:%v", user, passwd) |
| 55 | txn, err := u.db.OpenTransaction() |
| 56 | if err != nil { |
| 57 | txn.Discard() |
| 58 | return errors.Trace(err) |
| 59 | } |
| 60 | |
| 61 | log.Debugf("open transaction finished") |
| 62 | v, err := txn.Get([]byte(user), nil) |
| 63 | if err != nil && err != leveldb.ErrNotFound { |
| 64 | txn.Discard() |
| 65 | return errors.Trace(err) |
| 66 | } |
| 67 | |
| 68 | log.Debugf("check whether the user exist") |
| 69 | |
| 70 | if len(v) != 0 { |
| 71 | txn.Discard() |
| 72 | return errors.Errorf("user:%s exist info:%s", user, string(v)) |
| 73 | } |
| 74 | |
| 75 | buf, err := json.Marshal(account{Name: user, Password: passwd, ID: id}) |
| 76 | if err != nil { |
| 77 | txn.Discard() |
| 78 | return errors.Trace(err) |
| 79 | } |
| 80 | |
| 81 | if err = txn.Put([]byte(user), buf, nil); err != nil { |
| 82 | txn.Discard() |
| 83 | return errors.Trace(err) |
| 84 | } |
| 85 | |
| 86 | //创建用户的同时增加userid+@+username的编码key,提供通过userid查找用户数据 |
| 87 | buf, err = json.Marshal(user) |
| 88 | if err != nil { |
| 89 | txn.Discard() |
| 90 | return errors.Trace(err) |
| 91 | } |
| 92 | |
| 93 | if err = txn.Put(UserUnionKey(id), buf, nil); err != nil { |
| 94 | txn.Discard() |
| 95 | return errors.Trace(err) |
| 96 | } |
| 97 | |
| 98 | if err = txn.Commit(); err != nil { |
| 99 | txn.Discard() |
| 100 | return errors.Trace(err) |
| 101 | } |
| 102 | |
| 103 | log.Debugf("user:%s, passwd:%s, id:%d", user, passwd, id) |
| 104 | return nil |
| 105 | } |
| 106 | |
| 107 | func (u *userDB) findUser(user string) ([]string, error) { |
| 108 | var users []string |