123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- package archive
- import (
- "context"
- "fmt"
- "go-common/library/log"
- "go-common/library/time"
- "go-common/library/xstr"
- "github.com/pkg/errors"
- )
- const (
- _upCntSQL = "SELECT COUNT(*) FROM archive WHERE mid=? AND (state>=0 or state=-6)"
- _upsCntSQL = "SELECT mid,COUNT(*) FROM archive WHERE mid IN(%s) AND (state>=0 or state=-6) GROUP BY mid"
- _upPasSQL = "SELECT aid,pubtime,copyright FROM archive WHERE mid=? AND state>=0 ORDER BY pubtime DESC"
- _upsPasSQL = "SELECT aid,mid,pubtime,copyright FROM archive WHERE mid IN (%s) AND state>=0 ORDER BY pubtime DESC"
- )
- // UppersCount get mids count
- func (d *Dao) UppersCount(c context.Context, mids []int64) (uc map[int64]int64, err error) {
- rows, err := d.resultDB.Query(c, fmt.Sprintf(_upsCntSQL, xstr.JoinInts(mids)))
- if err != nil {
- err = errors.WithStack(err)
- return
- }
- uc = make(map[int64]int64, len(mids))
- defer rows.Close()
- for rows.Next() {
- var (
- mid int64
- cnt int64
- )
- if err = rows.Scan(&mid, &cnt); err != nil {
- err = errors.WithStack(err)
- return
- }
- uc[mid] = cnt
- }
- return
- }
- // UpperCount get the count of archives by mid of Up.
- func (d *Dao) UpperCount(c context.Context, mid int64) (count int64, err error) {
- d.infoProm.Incr("UpperCount")
- row := d.resultDB.QueryRow(c, _upCntSQL, mid)
- if err = row.Scan(&count); err != nil {
- log.Error("row.Scan error(%v)", err)
- }
- return
- }
- // UpperPassed get upper passed archives.
- func (d *Dao) UpperPassed(c context.Context, mid int64) (aids []int64, ptimes []time.Time, copyrights []int8, err error) {
- d.infoProm.Incr("UpperPassed")
- rows, err := d.resultDB.Query(c, _upPasSQL, mid)
- if err != nil {
- log.Error("getUpPasStmt.Query(%d) error(%v)", mid, err)
- return
- }
- defer rows.Close()
- for rows.Next() {
- var (
- aid int64
- ptime time.Time
- copyright int8
- )
- if err = rows.Scan(&aid, &ptime, ©right); err != nil {
- log.Error("rows.Scan error(%v)", err)
- return
- }
- aids = append(aids, aid)
- ptimes = append(ptimes, ptime)
- copyrights = append(copyrights, copyright)
- }
- return
- }
- // UppersPassed get uppers passed archives.
- func (d *Dao) UppersPassed(c context.Context, mids []int64) (aidm map[int64][]int64, ptimes map[int64][]time.Time, copyrights map[int64][]int8, err error) {
- d.infoProm.Incr("UppersPassed")
- rows, err := d.resultDB.Query(c, fmt.Sprintf(_upsPasSQL, xstr.JoinInts(mids)))
- if err != nil {
- log.Error("UpsPassed error(%v)", err)
- return
- }
- defer rows.Close()
- aidm = make(map[int64][]int64, len(mids))
- ptimes = make(map[int64][]time.Time, len(mids))
- copyrights = make(map[int64][]int8, len(mids))
- for rows.Next() {
- var (
- aid, mid int64
- ptime time.Time
- copyright int8
- )
- if err = rows.Scan(&aid, &mid, &ptime, ©right); err != nil {
- log.Error("rows.Scan error(%v)", err)
- return
- }
- aidm[mid] = append(aidm[mid], aid)
- ptimes[mid] = append(ptimes[mid], ptime)
- copyrights[mid] = append(copyrights[mid], copyright)
- }
- return
- }
|