Add: support feedback

This commit is contained in:
2021-12-13 23:18:46 +08:00
parent 22f7ea8476
commit 0c9048072f
9 changed files with 190 additions and 15 deletions

View File

@@ -7,14 +7,6 @@ import (
"path/filepath"
)
func (database *Database) InsertFeedback(time int64, feedback string, header string) error {
_, err := database.stmt.insertFeedback.Exec(time, feedback, header)
if err != nil {
return err
}
return nil
}
func (database *Database) GetRandomFiles(limit int64) ([]File, error) {
rows, err := database.stmt.getRandomFiles.Query(limit)
if err != nil {

View File

@@ -0,0 +1,32 @@
package database
func (database *Database) InsertFeedback(time int64, content string, userID int64, header string) error {
_, err := database.stmt.insertFeedback.Exec(time, content, userID, header)
if err != nil {
return err
}
return nil
}
func (database *Database) GetFeedbacks() ([]*Feedback, error) {
rows, err := database.stmt.getFeedbacks.Query()
if err != nil {
return nil, err
}
defer rows.Close()
feedbacks := make([]*Feedback, 0)
for rows.Next() {
feedback := &Feedback{
User: &User{},
}
err := rows.Scan(
&feedback.ID, &feedback.Time, &feedback.Content, &feedback.Header,
&feedback.User.ID, &feedback.User.Username, &feedback.User.Role, &feedback.User.Active, &feedback.User.AvatarId)
if err != nil {
return nil, err
}
feedbacks = append(feedbacks, feedback)
}
return feedbacks, nil
}

View File

@@ -21,7 +21,8 @@ var initFoldersTableQuery = `CREATE TABLE IF NOT EXISTS folders (
var initFeedbacksTableQuery = `CREATE TABLE IF NOT EXISTS feedbacks (
id INTEGER PRIMARY KEY,
time INTEGER NOT NULL,
feedback TEXT NOT NULL,
content TEXT NOT NULL,
user_id INTEGER NOT NULL,
header TEXT NOT NULL
);`
@@ -168,8 +169,16 @@ WHERE file_has_tag.tag_id = ?
ORDER BY RANDOM()
LIMIT ?;`
var insertFeedbackQuery = `INSERT INTO feedbacks (time, feedback, header)
VALUES (?, ?, ?);`
var insertFeedbackQuery = `INSERT INTO feedbacks (time, content, user_id, header)
VALUES (?, ?, ?, ?);`
var getFeedbacksQuery = `SELECT
feedbacks.id, feedbacks.time, feedbacks.content, feedbacks.header,
users.id, users.username, users.role, users.active, users.avatar_id
FROM feedbacks
JOIN users ON feedbacks.user_id = users.id
ORDER BY feedbacks.time
;`
var insertUserQuery = `INSERT INTO users (username, password, role, active, avatar_id)
VALUES (?, ?, ?, ?, ?);`
@@ -280,6 +289,7 @@ type Stmt struct {
getRandomFiles *sql.Stmt
getRandomFilesWithTag *sql.Stmt
insertFeedback *sql.Stmt
getFeedbacks *sql.Stmt
insertUser *sql.Stmt
countUser *sql.Stmt
countAdmin *sql.Stmt
@@ -517,6 +527,12 @@ func NewPreparedStatement(sqlConn *sql.DB) (*Stmt, error) {
return nil, err
}
// init getFeedbacks
stmt.getFeedbacks, err = sqlConn.Prepare(getFeedbacksQuery)
if err != nil {
return nil, err
}
// init insertUser
stmt.insertUser, err = sqlConn.Prepare(insertUserQuery)
if err != nil {

View File

@@ -48,6 +48,15 @@ type Review struct {
Content string `json:"content"`
}
type Feedback struct {
ID int64 `json:"id"`
UserId int64 `json:"user_id"`
User *User `json:"user"`
Content string `json:"content"`
Header string `json:"header"`
Time int64 `json:"time"`
}
var (
RoleAnonymous = int64(0)
RoleAdmin = int64(1)