backend support record playback history

This commit is contained in:
2022-11-04 18:39:24 +08:00
parent 3b90ad56d6
commit 61391ff2a5
6 changed files with 98 additions and 19 deletions

View File

@@ -0,0 +1,7 @@
package database
func (database *Database) RecordPlayback(playback Playback) error {
_, err := database.stmt.recordPlaybackStmt.Exec(
playback.UserID, playback.FileID, playback.Time, playback.Method, playback.Duration)
return err
}

View File

@@ -2,6 +2,7 @@ package database
import (
"database/sql"
"log"
)
var initFilesTableQuery = `CREATE TABLE IF NOT EXISTS files (
@@ -87,7 +88,8 @@ var initPlaybacksTableQuery = `CREATE TABLE IF NOT EXISTS playbacks (
user_id INTEGER NOT NULL,
file_id INTEGER NOT NULL,
time INTEGER NOT NULL,
mothod INTEGER NOT NULL,
method INTEGER NOT NULL,
duration INTEGER NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (file_id) REFERENCES files(id)
);`
@@ -285,6 +287,8 @@ var updateFilenameQuery = `UPDATE files SET filename = ? WHERE id = ?;`
var resetFilenameQuery = `UPDATE files SET filename = realname WHERE id = ?;`
var recordPlaybackQuery = `INSERT INTO playbacks (user_id, file_id, time, method, duration) VALUES ($1, $2, $3, $4, $5);`
type Stmt struct {
initFilesTable *sql.Stmt
initFoldersTable *sql.Stmt
@@ -345,6 +349,7 @@ type Stmt struct {
deleteFileReferenceInReviews *sql.Stmt
updateFilename *sql.Stmt
resetFilename *sql.Stmt
recordPlaybackStmt *sql.Stmt
}
func NewPreparedStatement(sqlConn *sql.DB) (*Stmt, error) {
@@ -772,5 +777,12 @@ func NewPreparedStatement(sqlConn *sql.DB) (*Stmt, error) {
return nil, err
}
stmt.recordPlaybackStmt, err = sqlConn.Prepare(recordPlaybackQuery)
if err != nil {
return nil, err
}
log.Println("Init statements finished")
return stmt, err
}

View File

@@ -2,6 +2,7 @@ package database
import (
"path/filepath"
"time"
)
type File struct {
@@ -58,6 +59,15 @@ type Feedback struct {
Time int64 `json:"time"`
}
type Playback struct {
ID int64 `json:"id"`
UserID int64 `json:"user_id"`
FileID int64 `json:"file_id"`
Time time.Time `json:"time"`
Method int64 `json:"method"`
Duration time.Duration `json:"Duration"`
}
var (
RoleAnonymous = int64(0)
RoleAdmin = int64(1)