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.
194 lines
4.1 KiB
194 lines
4.1 KiB
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"` |
|
}
|
|
|