stats-import: It's fine, make the module 'whole' again
This commit is contained in:
parent
e2e2e5aae0
commit
bf7f2b6b55
1 changed files with 114 additions and 114 deletions
|
@ -7,7 +7,9 @@ import (
|
||||||
"flag"
|
"flag"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/boltdb/bolt"
|
"github.com/boltdb/bolt"
|
||||||
)
|
)
|
||||||
|
@ -87,37 +89,36 @@ func main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func processMessage(msg Message, data *Stats) {
|
func processMessage(msg Message, data *Stats) {
|
||||||
/*
|
data.Total++
|
||||||
data.Total++
|
|
||||||
|
|
||||||
if msg.ReplyID != nil {
|
if msg.ReplyID != nil {
|
||||||
data.Replies++
|
data.Replies++
|
||||||
}
|
}
|
||||||
|
|
||||||
if msg.FwdUser != nil {
|
if msg.FwdUser != nil {
|
||||||
data.Forward++
|
data.Forward++
|
||||||
}
|
}
|
||||||
|
|
||||||
date := time.Unix(int64(msg.Date), 0)
|
date := time.Unix(int64(msg.Date), 0)
|
||||||
|
|
||||||
data.ByHour[date.Hour()]++
|
data.ByHour[date.Hour()]++
|
||||||
data.ByWeekday[date.Weekday()]++
|
data.ByWeekday[date.Weekday()]++
|
||||||
|
|
||||||
val, exists := data.ByUser[msg.From.Username]
|
val, exists := data.ByUser[msg.From.Username]
|
||||||
if !exists {
|
if !exists {
|
||||||
val = 0
|
val = 0
|
||||||
}
|
}
|
||||||
data.ByUser[msg.From.Username] = val + 1
|
data.ByUser[msg.From.Username] = val + 1
|
||||||
|
|
||||||
datekey := date.Format("2006-1-2")
|
datekey := date.Format("2006-1-2")
|
||||||
val, exists = data.ByDate[datekey]
|
val, exists = data.ByDate[datekey]
|
||||||
if !exists {
|
if !exists {
|
||||||
val = 0
|
val = 0
|
||||||
}
|
}
|
||||||
data.ByDate[datekey] = val + 1
|
data.ByDate[datekey] = val + 1
|
||||||
|
|
||||||
|
data.Username[msg.From.Username] = msg.From.FirstName
|
||||||
|
|
||||||
data.Username[msg.From.Username] = msg.From.FirstName
|
|
||||||
*/
|
|
||||||
if len(msg.Text) > 2 {
|
if len(msg.Text) > 2 {
|
||||||
wordList := strings.Split(msg.Text, " ")
|
wordList := strings.Split(msg.Text, " ")
|
||||||
for _, word := range wordList {
|
for _, word := range wordList {
|
||||||
|
@ -169,119 +170,118 @@ func PutUint(value uint64) []byte {
|
||||||
|
|
||||||
func update(db *bolt.DB, data Stats) error {
|
func update(db *bolt.DB, data Stats) error {
|
||||||
return db.Update(func(tx *bolt.Tx) error {
|
return db.Update(func(tx *bolt.Tx) error {
|
||||||
/*
|
b, err := tx.CreateBucketIfNotExists([]byte("global"))
|
||||||
b, err := tx.CreateBucketIfNotExists([]byte("global"))
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update total
|
||||||
|
total := MakeUint(b.Get([]byte("count")), "global", "count")
|
||||||
|
total += data.Total
|
||||||
|
err = b.Put([]byte("count"), PutUint(total))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update replies
|
||||||
|
replies := MakeUint(b.Get([]byte("replies")), "global", "replies")
|
||||||
|
replies += data.Replies
|
||||||
|
err = b.Put([]byte("replies"), PutUint(total))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update forward
|
||||||
|
forward := MakeUint(b.Get([]byte("forward")), "global", "forward")
|
||||||
|
forward += data.Forward
|
||||||
|
err = b.Put([]byte("forward"), PutUint(total))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update hour counters
|
||||||
|
b, err = tx.CreateBucketIfNotExists([]byte("hour"))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 0; i < 24; i++ {
|
||||||
|
curhour := MakeUint(b.Get([]byte{byte(i)}), "hour", strconv.Itoa(i))
|
||||||
|
curhour += data.ByHour[i]
|
||||||
|
err = b.Put([]byte{byte(i)}, PutUint(curhour))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Update total
|
// Update weekday counters
|
||||||
total := MakeUint(b.Get([]byte("count")), "global", "count")
|
b, err = tx.CreateBucketIfNotExists([]byte("weekday"))
|
||||||
total += data.Total
|
if err != nil {
|
||||||
err = b.Put([]byte("count"), PutUint(total))
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 0; i < 7; i++ {
|
||||||
|
curwday := MakeUint(b.Get([]byte{byte(i)}), "weekday", strconv.Itoa(i))
|
||||||
|
curwday += data.ByWeekday[i]
|
||||||
|
err = b.Put([]byte{byte(i)}, PutUint(curwday))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Update replies
|
// Update date counters
|
||||||
replies := MakeUint(b.Get([]byte("replies")), "global", "replies")
|
b, err = tx.CreateBucketIfNotExists([]byte("date"))
|
||||||
replies += data.Replies
|
if err != nil {
|
||||||
err = b.Put([]byte("replies"), PutUint(total))
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
for day, count := range data.ByDate {
|
||||||
|
count += MakeUint(b.Get([]byte(day)), "date", day)
|
||||||
|
err = b.Put([]byte(day), PutUint(count))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Update forward
|
// Update user counters
|
||||||
forward := MakeUint(b.Get([]byte("forward")), "global", "forward")
|
b, err = tx.CreateBucketIfNotExists([]byte("users-count"))
|
||||||
forward += data.Forward
|
if err != nil {
|
||||||
err = b.Put([]byte("forward"), PutUint(total))
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
|
err = b.Put([]byte(user), PutUint(count))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Update hour counters
|
// Add to username table exclusively if not already present
|
||||||
b, err = tx.CreateBucketIfNotExists([]byte("hour"))
|
b, err = tx.CreateBucketIfNotExists([]byte("usernames"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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))
|
||||||
for i := 0; i < 24; i++ {
|
if val == nil {
|
||||||
curhour := MakeUint(b.Get([]byte{byte(i)}), "hour", strconv.Itoa(i))
|
err = b.Put([]byte(user), []byte(first))
|
||||||
curhour += data.ByHour[i]
|
|
||||||
err = b.Put([]byte{byte(i)}, PutUint(curhour))
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Update weekday counters
|
|
||||||
b, err = tx.CreateBucketIfNotExists([]byte("weekday"))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
for i := 0; i < 7; i++ {
|
|
||||||
curwday := MakeUint(b.Get([]byte{byte(i)}), "weekday", strconv.Itoa(i))
|
|
||||||
curwday += data.ByWeekday[i]
|
|
||||||
err = b.Put([]byte{byte(i)}, PutUint(curwday))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update date counters
|
|
||||||
b, err = tx.CreateBucketIfNotExists([]byte("date"))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
for day, count := range data.ByDate {
|
|
||||||
count += MakeUint(b.Get([]byte(day)), "date", day)
|
|
||||||
err = b.Put([]byte(day), PutUint(count))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update user counters
|
|
||||||
b, err = tx.CreateBucketIfNotExists([]byte("users-count"))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
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)
|
|
||||||
err = b.Put([]byte(user), PutUint(count))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
// Add word frequency
|
// Add word frequency
|
||||||
b, err := tx.CreateBucketIfNotExists([]byte("words"))
|
b, err = tx.CreateBucketIfNotExists([]byte("words"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue