You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
4.5 KiB
131 lines
4.5 KiB
package archive |
|
|
|
import ( |
|
"context" |
|
"fmt" |
|
"strconv" |
|
"strings" |
|
"time" |
|
|
|
"go-common/app/service/main/videoup/model/archive" |
|
"go-common/library/database/sql" |
|
"go-common/library/log" |
|
) |
|
|
|
const ( |
|
_inArcHistorySQL = "INSERT INTO archive_edit_history(aid,mid,title,content,cover,tag) VALUE(?,?,?,?,?,?)" |
|
_inVideoHistorySQL = "INSERT INTO archive_video_edit_history(aid,cid,hid,eptitle,description,filename) VALUE (?,?,?,?,?,?)" |
|
_upVideoHistorySQL = "UPDATE archive_video_edit_history SET cid=? WHERE aid=? AND filename=? AND cid = 0" |
|
_arcHistorySQL = "SELECT id,mid,aid,title,content,cover,tag,ctime FROM archive_edit_history WHERE id =?" |
|
_arcHistorysSQL = "SELECT id,mid,aid,title,content,cover,tag,ctime FROM archive_edit_history WHERE aid =? and ctime >=? ORDER BY id DESC" |
|
_videoHistorySQL = "SELECT cid,eptitle,description,filename FROM archive_video_edit_history WHERE hid =? ORDER BY id ASC" |
|
_inVideoHistorysSQL = "INSERT INTO archive_video_edit_history(aid,cid,hid,eptitle,description,filename) VALUES %s" |
|
) |
|
|
|
// TxAddArcHistory insert archive_edit_history. |
|
func (d *Dao) TxAddArcHistory(tx *sql.Tx, aid, mid int64, title, content, cover, tag string) (hid int64, err error) { |
|
res, err := tx.Exec(_inArcHistorySQL, aid, mid, title, content, cover, tag) |
|
if err != nil { |
|
log.Error("d.inArcHistory.Exec() error(%v)", err) |
|
return |
|
} |
|
hid, err = res.LastInsertId() |
|
return |
|
} |
|
|
|
// TxAddVideoHistory insert archive_video_edit_history. |
|
func (d *Dao) TxAddVideoHistory(tx *sql.Tx, hid int64, v *archive.Video) (rows int64, err error) { |
|
res, err := tx.Exec(_inVideoHistorySQL, v.Aid, v.Cid, hid, v.Title, v.Desc, v.Filename) |
|
if err != nil { |
|
log.Error("d.inVideoHistory.Exec() error(%v)", err) |
|
return |
|
} |
|
rows, err = res.RowsAffected() |
|
return |
|
} |
|
|
|
// TxUpVideoHistory update cid to archive_video_edit_history |
|
func (d *Dao) TxUpVideoHistory(tx *sql.Tx, aid, cid int64, filename string) (rows int64, err error) { |
|
res, err := tx.Exec(_upVideoHistorySQL, cid, aid, filename) |
|
if err != nil { |
|
log.Error("d.upVideoHistory.Exec() error(%v)", err) |
|
return |
|
} |
|
rows, err = res.RowsAffected() |
|
return |
|
} |
|
|
|
// ArcHistory select archive edit history by hid. |
|
func (d *Dao) ArcHistory(c context.Context, hid int64) (ah *archive.ArcHistory, err error) { |
|
row := d.rddb.QueryRow(c, _arcHistorySQL, hid) |
|
ah = &archive.ArcHistory{} |
|
if err = row.Scan(&ah.ID, &ah.Mid, &ah.Aid, &ah.Title, &ah.Content, &ah.Cover, &ah.Tag, &ah.CTime); err != nil { |
|
if err == sql.ErrNoRows { |
|
err = nil |
|
} else { |
|
log.Error("row.Scan error(%v)", err) |
|
} |
|
} |
|
return |
|
} |
|
|
|
// ArcHistorys select archive edit history by aid. |
|
func (d *Dao) ArcHistorys(c context.Context, aid int64, stime time.Time) (ahs []*archive.ArcHistory, err error) { |
|
rows, err := d.rddb.Query(c, _arcHistorysSQL, aid, stime) |
|
if err != nil { |
|
log.Error("d.arcHissStmt.Query(%d) error(%v)", aid, err) |
|
return |
|
} |
|
defer rows.Close() |
|
for rows.Next() { |
|
ah := &archive.ArcHistory{} |
|
if err = rows.Scan(&ah.ID, &ah.Mid, &ah.Aid, &ah.Title, &ah.Content, &ah.Cover, &ah.Tag, &ah.CTime); err != nil { |
|
log.Error("rows.Scan error(%v)", err) |
|
return |
|
} |
|
ahs = append(ahs, ah) |
|
} |
|
return |
|
} |
|
|
|
// VideoHistory select archive video edit history by hid. |
|
func (d *Dao) VideoHistory(c context.Context, hid int64) (vhs []*archive.VideoHistory, err error) { |
|
rows, err := d.rddb.Query(c, _videoHistorySQL, hid) |
|
if err != nil { |
|
log.Error("d.videoHisStmt.Query(%d) error(%v)", hid, err) |
|
return |
|
} |
|
defer rows.Close() |
|
for rows.Next() { |
|
vh := &archive.VideoHistory{} |
|
if err = rows.Scan(&vh.Cid, &vh.Title, &vh.Desc, &vh.Filename); err != nil { |
|
log.Error("rows.Scan error(%v)", err) |
|
return |
|
} |
|
vhs = append(vhs, vh) |
|
} |
|
return |
|
} |
|
|
|
// TxAddVideoHistorys batch add archive_video_history. |
|
func (d *Dao) TxAddVideoHistorys(tx *sql.Tx, hid int64, vs []*archive.Video) (err error) { |
|
log.Info("info TxAddVideoHistorys: hid(%d)|vs(%+v)|cntVs(%d)", hid, vs, len(vs)) |
|
l := len(vs) |
|
vStrs := make([]string, 0, l) |
|
vArgs := make([]interface{}, 0, l*6) |
|
for _, v := range vs { |
|
vStrs = append(vStrs, "(?, ?, ?, ?, ?, ?)") |
|
vArgs = append(vArgs, strconv.FormatInt(v.Aid, 10)) |
|
vArgs = append(vArgs, strconv.FormatInt(v.Cid, 10)) |
|
vArgs = append(vArgs, strconv.FormatInt(hid, 10)) |
|
vArgs = append(vArgs, v.Title) |
|
vArgs = append(vArgs, v.Desc) |
|
vArgs = append(vArgs, v.Filename) |
|
} |
|
stmt := fmt.Sprintf(_inVideoHistorysSQL, strings.Join(vStrs, ",")) |
|
_, err = tx.Exec(stmt, vArgs...) |
|
if err != nil { |
|
log.Error("TxAddVideoHistorys: tx.Exec(vs(%+v))|hid(%d) error(%v)", vs, hid, err) |
|
} |
|
return |
|
}
|
|
|