39 lines
890 B
Go
39 lines
890 B
Go
package model
|
|
|
|
import (
|
|
"database/sql"
|
|
"math/rand"
|
|
"time"
|
|
)
|
|
|
|
// Lottery -
|
|
type Lottery struct {
|
|
ID string `db:"id" cc:"id"`
|
|
Type string `db:"type" cc:"type"`
|
|
Message string `db:"message" cc:"message"`
|
|
Ctime time.Time `db:"ctime" cc:"ctime"`
|
|
Mtime time.Time `db:"mtime" cc:"mtime"`
|
|
}
|
|
|
|
// GetRandomLotteryByType -
|
|
func GetRandomLotteryByType(t string) (p *Lottery, err error) {
|
|
parr, err := GetRandomLotteryByTypeAndLimit(t, 1)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if parr == nil {
|
|
return nil, nil
|
|
}
|
|
return parr[0], err
|
|
}
|
|
|
|
// GetRandomLotteryByTypeAndLimit -
|
|
func GetRandomLotteryByTypeAndLimit(t string, limit int) (p []*Lottery, err error) {
|
|
offset := rand.Intn(10)
|
|
err = x.Select(&p, `select * from "public"."lottery" where "type" = $1 order by random() offset $2 limit $3`, t, offset, limit)
|
|
if err == sql.ErrNoRows {
|
|
return nil, nil
|
|
}
|
|
return
|
|
}
|