init
This commit is contained in:
77
cmd/getdb/getdb.go
Normal file
77
cmd/getdb/getdb.go
Normal file
@ -0,0 +1,77 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"log"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
_ "github.com/glebarez/go-sqlite"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
var db *sqlx.DB
|
||||
|
||||
func InitDb() error {
|
||||
newdb, err := sqlx.Connect("sqlite", "./bot.db?_time_format=sqlite")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
db = newdb
|
||||
return nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
if err := InitDb(); err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
type User struct {
|
||||
Id int64 `json:"uid" db:"id"`
|
||||
Name string `json:"full_name" db:"name"`
|
||||
Username string `json:"username" db:"username"`
|
||||
MessageCount int `json:"messagesCount" db:"message_count"`
|
||||
Karma int `json:"karma" db:"karma_history"`
|
||||
KarmaSent int `json:"karmaChanged" db:"karma_sent_history"`
|
||||
KarmaReceived int `json:"karmaGot" db:"karma_received_history"`
|
||||
Created time.Time `db:"created"`
|
||||
}
|
||||
|
||||
var users []User
|
||||
|
||||
data, _ := os.ReadFile("godot.users.json")
|
||||
err := json.Unmarshal(data, &users)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
for _, user := range users {
|
||||
var dbuser User
|
||||
err := db.Get(&dbuser, `SELECT * FROM users WHERE id = $1`, user.Id)
|
||||
if err != nil {
|
||||
db.Exec(
|
||||
`INSERT INTO users (id, name, username, message_count, karma_history, karma_sent_history, karma_received_history) VALUES ($1, $2, $3, $4, $5, $6, $7)`,
|
||||
user.Id,
|
||||
user.Name,
|
||||
user.Username,
|
||||
user.MessageCount,
|
||||
user.Karma,
|
||||
user.KarmaSent,
|
||||
user.KarmaReceived,
|
||||
)
|
||||
db.Exec(
|
||||
`INSERT INTO karma (from_user, to_user, change, message) VALUES (-1, $1, $2, "historical")`,
|
||||
user.Id,
|
||||
user.Karma,
|
||||
)
|
||||
} else {
|
||||
if user.MessageCount > dbuser.MessageCount || user.Karma > dbuser.Karma {
|
||||
_, err := db.Exec(`UPDATE users SET karma_history=$2, message_count=$3, karma_sent_history=$4, karma_received_history=$5 WHERE id=$1;`, user.Id, user.Karma, user.MessageCount, user.KarmaSent, user.KarmaReceived)
|
||||
if err != nil {
|
||||
log.Println(user.Id, err)
|
||||
}
|
||||
db.Exec(`UPDATE karma SET change=$2 WHERE from_user=-1 AND to_user=$1;`, user.Id, user.Karma)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user