Add sanity check and username importing

This commit is contained in:
Hamcha 2016-02-12 16:20:48 +00:00
parent e907f31cda
commit ac39359607
1 changed files with 28 additions and 1 deletions

View File

@ -14,7 +14,8 @@ import (
) )
type User struct { type User struct {
Username string `json:"username"` Username string `json:"username"`
FirstName string `json:"first_name"`
} }
type Message struct { type Message struct {
@ -34,6 +35,7 @@ type Stats struct {
ByDate map[string]uint64 ByDate map[string]uint64
Replies uint64 Replies uint64
Forward uint64 Forward uint64
Username map[string]string
} }
func assert(err error) { func assert(err error) {
@ -108,6 +110,8 @@ func processMessage(msg Message, data *Stats) {
val = 0 val = 0
} }
data.ByDate[datekey] = val + 1 data.ByDate[datekey] = val + 1
data.Username[msg.From.Username] = msg.From.FirstName
} }
func MakeUint(bval []byte, bucketName string, key string) uint64 { func MakeUint(bval []byte, bucketName string, key string) uint64 {
@ -213,6 +217,10 @@ func update(db *bolt.DB, data Stats) error {
} }
for user, count := range data.ByUser { for user, count := range data.ByUser {
// Why do I even need this?
if len(user) < 1 {
continue
}
count += MakeUint(b.Get([]byte(user)), "users-count", user) count += MakeUint(b.Get([]byte(user)), "users-count", user)
err = b.Put([]byte(user), PutUint(count)) err = b.Put([]byte(user), PutUint(count))
if err != nil { if err != nil {
@ -220,6 +228,25 @@ func update(db *bolt.DB, data Stats) error {
} }
} }
// Add to username table exclusively if not already present
b, err = tx.CreateBucketIfNotExists([]byte("usernames"))
if err != nil {
return err
}
for user, first := range data.Username {
// Why do I even need this? (2)
if len(user) < 1 {
continue
}
val := b.Get([]byte(user))
if val == nil {
err = b.Put([]byte(user), []byte(first))
if err != nil {
return err
}
}
}
return nil return nil
}) })
} }