mtfosbot/model/opay_donate_list.go

61 lines
1.5 KiB
Go

package model
import (
"database/sql"
"time"
"github.com/jmoiron/sqlx"
)
// OpayDonateList - struct
type OpayDonateList struct {
OpayID string `db:"opayid" cc:"opayid"`
DonateID string `db:"donate_id" cc:"donate_id"`
Price int `db:"price" cc:"price"`
Text string `db:"text" cc:"text"`
Name string `db:"name" cc:"name"`
Ctime time.Time `db:"ctime" cc:"ctime"`
Mtime time.Time `db:"mtime" cc:"ctime"`
}
// SumChannelDonatePriceSinceTime -
func SumChannelDonatePriceSinceTime(twitch string, t time.Time) (i int, err error) {
query := `select sum(list.price) as total from "public"."opay_donate_list" list
left join "public"."twitch_channel" tw
on tw.opayid = list.opayid
where
tw.opayid != ''
and tw.id = $1
and list.ctime >= $2
group by list.opayid`
row := x.QueryRowx(query, twitch, t)
err = row.Scan(&i)
if err == sql.ErrNoRows {
return 0, nil
}
if err != nil {
return 0, err
}
return
}
// GetDonateListWithIDs -
func GetDonateListWithIDs(ids []string) (ls []*OpayDonateList, err error) {
if len(ids) == 0 {
return
}
s, i, err := sqlx.In(`select * from "public"."opay_donate_list" where "donate_id" in (?)`, ids)
if err != nil {
return
}
s = x.Rebind(s)
err = x.Select(&ls, s, i...)
return
}
// InsertData -
func (p *OpayDonateList) InsertData() (err error) {
_, err = x.NamedExec(`insert into "public"."opay_donate_list" ("opayid", "donate_id", "price", "text", "name") values (:opayid, :donate_id, :price, :text, :name)`, p)
return
}