go-common/app/job/main/favorite/model/fav.go
2019-04-22 18:49:16 +08:00

195 lines
4.1 KiB
Go

package model
import (
"database/sql/driver"
"encoding/json"
"errors"
"strconv"
"time"
)
var (
// ErrFavResourceExist error this has been favoured.
ErrFavResourceExist = errors.New("error this has been favoured")
// ErrFavResourceAlreadyDel error this has been unfavoured.
ErrFavResourceAlreadyDel = errors.New("error this has been unfavoured")
)
const (
// CacheNotFound .
CacheNotFound = -1
// SyncInsert binlog action.
SyncInsert = "insert"
// SyncUpdate binlog action.
SyncUpdate = "update"
// SyncDelete binlog action.
SyncDelete = "delete"
)
// CanelMessage binlog message.
type CanelMessage struct {
Action string `json:"action"`
Table string `json:"table"`
New json.RawMessage `json:"new"`
Old json.RawMessage `json:"old"`
}
// OldCount .
type OldCount struct {
ID int64 `json:"id"`
Aid int64 `json:"aid"`
Count int64 `json:"count"`
CTime Stime `json:"ctime"`
MTime Stime `json:"mtime"`
}
// NewCount .
type NewCount struct {
ID int64 `json:"id"`
Type int8 `json:"type"`
Oid int64 `json:"oid"`
Count int64 `json:"count"`
CTime Stime `json:"ctime"`
MTime Stime `json:"mtime"`
}
// OldFolder .
type OldFolder struct {
ID int64 `json:"id"`
Mid int64 `json:"mid"`
Name string `json:"name"`
CurCount int `json:"cur_count"`
State int8 `json:"state"`
CTime Stime `json:"ctime"`
MTime Stime `json:"mtime"`
}
// NewFolder .
type NewFolder struct {
ID int64 `json:"id"`
Type int8 `json:"type"`
Mid int64 `json:"mid"`
Name string `json:"name"`
Count int `json:"count"`
Attr int8 `json:"attr"`
State int8 `json:"state"`
CTime Stime `json:"ctime"`
MTime Stime `json:"mtime"`
}
// VideoFolder .
type VideoFolder struct {
ID int64 `json:"id"`
Mid int64 `json:"mid"`
Fid int64 `json:"fid"`
VideoFid int64 `json:"video_fid"`
CTime Stime `json:"ctime"`
MTime Stime `json:"mtime"`
}
// OldVideo .
type OldVideo struct {
ID int64 `json:"id"`
Mid int64 `json:"mid"`
Fid int64 `json:"fid"`
Aid int64 `json:"aid"`
CTime Stime `json:"ctime"`
MTime Stime `json:"mtime"`
}
// NewRelation .
type NewRelation struct {
ID int64 `json:"id"`
Type int8 `json:"type"`
Mid int64 `json:"mid"`
Fid int64 `json:"fid"`
Oid int64 `json:"oid"`
State int8 `json:"state"`
CTime Stime `json:"ctime"`
MTime Stime `json:"mtime"`
}
// OldFolderSort .
type OldFolderSort struct {
ID int64 `json:"id"`
Mid int64 `json:"mid"`
Sort string `json:"sort"`
CTime Stime `json:"ctime"`
MTime Stime `json:"mtime"`
}
// NewFolderSort .
type NewFolderSort struct {
ID int64 `json:"id"`
Type int8 `json:"type"`
Mid int64 `json:"mid"`
Sort []byte `json:"sort"`
CTime Stime `json:"ctime"`
MTime Stime `json:"mtime"`
}
// Stime .
type Stime int64
// Scan scan time.
func (st *Stime) Scan(src interface{}) (err error) {
switch sc := src.(type) {
case time.Time:
*st = Stime(sc.Unix())
case string:
var i int64
i, err = strconv.ParseInt(sc, 10, 64)
*st = Stime(i)
}
return
}
// Value get time value.
func (st Stime) Value() (driver.Value, error) {
return time.Unix(int64(st), 0), nil
}
// UnmarshalJSON implements the json.Unmarshaler interface.
func (st *Stime) UnmarshalJSON(data []byte) error {
timestamp, err := strconv.ParseInt(string(data), 10, 64)
if err == nil {
*st = Stime(timestamp)
return nil
}
t, err := time.ParseInLocation(`"2006-01-02 15:04:05"`, string(data), time.Local)
if err == nil {
*st = Stime(t.Unix())
}
return nil
}
// StatMsg .
type StatMsg struct {
Play *int64 `json:"play"`
Fav *int64 `json:"fav"`
Share *int64 `json:"share"`
Oid int64 `json:"oid"`
}
// StatCount .
type StatCount struct {
Type string `json:"type"`
ID int64 `json:"id"`
Count int64 `json:"count"`
DisLike int64 `json:"dislike_count"`
TimeStamp int64 `json:"timestamp"`
}
// PlayReport .
type PlayReport struct {
ID int64 `json:"id"`
Mid int64 `json:"mid"`
LV string `json:"lv"`
IP string `json:"ip"`
Buvid string `json:"buvid"`
DeviceID string `json:"device_id"`
UA string `json:"ua"`
Refer string `json:"refer"`
TS int64 `json:"ts"`
}