TerraOceanPlugin/GoBot/db/trust.go

49 lines
1.1 KiB
Go

package db
import (
"errors"
"time"
)
var ErrRecentlyChanged = errors.New("db: attempt to change the trust for a user twice in a month")
func GetTrustVote(targetID string) ([]int, error) {
rows, err := db.Query("SELECT trust FROM trustVote WHERE targetUser=?", targetID)
if err != nil {
return nil, err
}
defer rows.Close()
array := make([]int, 0)
for rows.Next() {
var trust int
rows.Scan(&trust)
array = append(array, trust)
}
return array, nil
}
func UpdateTrust(sourceID, targetID string, voteValue int, force bool) error {
if !force {
rows, err := db.Query("SELECT lastUpdated FROM trustVote WHERE sourceUser=? AND targetUser=?", sourceID, targetID)
if err != nil {
return err
}
if rows.Next() {
//Check that it was not changed within a month.
var lastUpdated time.Time
rows.Scan(&lastUpdated)
if time.Now().Sub(lastUpdated) > 24*30*time.Hour {
rows.Close()
return ErrRecentlyChanged
}
}
rows.Close()
}
_, err := db.Exec("REPLACE INTO trustVote(sourceUser,targetUser,lastUpdated,trust) VALUES(?,?,?,?)", sourceID, targetID, time.Now(), voteValue)
return err
}