From 28127f6138f9d0f2ebd727a6698f7fce26d42e23 Mon Sep 17 00:00:00 2001 From: heimoshuiyu Date: Mon, 13 Dec 2021 23:23:57 +0800 Subject: [PATCH] Add: support delete feedback --- pkg/api/api.go | 6 ++++-- pkg/api/handle_feedback.go | 29 +++++++++++++++++++++++++++++ pkg/database/method_feedback.go | 8 ++++++++ pkg/database/sql_stmt.go | 9 +++++++++ web/src/component/FeedbackPage.js | 24 +++++++++++++++++++++++- 5 files changed, 73 insertions(+), 3 deletions(-) diff --git a/pkg/api/api.go b/pkg/api/api.go index 2522f0b..25759b2 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -75,11 +75,13 @@ func NewAPI(config Config) (*API, error) { apiMux.HandleFunc("/get_random_files_with_tag", api.HandleGetRandomFilesWithTag) apiMux.HandleFunc("/get_file_stream", api.HandleGetFileStream) apiMux.HandleFunc("/get_ffmpeg_config_list", api.HandleGetFfmpegConfigs) - apiMux.HandleFunc("/feedback", api.HandleFeedback) - apiMux.HandleFunc("/get_feedbacks", api.HandleGetFeedbacks) apiMux.HandleFunc("/get_file_info", api.HandleGetFileInfo) apiMux.HandleFunc("/get_file_stream_direct", api.HandleGetFileStreamDirect) apiMux.HandleFunc("/prepare_file_stream_direct", api.HandlePrepareFileStreamDirect) + // feedback + apiMux.HandleFunc("/feedback", api.HandleFeedback) + apiMux.HandleFunc("/get_feedbacks", api.HandleGetFeedbacks) + apiMux.HandleFunc("/delete_feedback", api.HandleDeleteFeedback) // user apiMux.HandleFunc("/login", api.HandleLogin) apiMux.HandleFunc("/register", api.HandleRegister) diff --git a/pkg/api/handle_feedback.go b/pkg/api/handle_feedback.go index 018b666..eceaf7f 100644 --- a/pkg/api/handle_feedback.go +++ b/pkg/api/handle_feedback.go @@ -79,3 +79,32 @@ func (api *API) HandleGetFeedbacks(w http.ResponseWriter, r *http.Request) { return } } + +type DeleteFeedbackRequest struct { + ID int64 `json:"id"` +} + +func (api *API) HandleDeleteFeedback(w http.ResponseWriter, r *http.Request) { + // check if admin + err := api.CheckAdmin(w, r) + if err != nil { + api.HandleError(w, r, err) + return + } + + req := &DeleteFeedbackRequest{} + err = json.NewDecoder(r.Body).Decode(req) + if err != nil { + api.HandleError(w, r, err) + return + } + + err = api.Db.DeleteFeedback(req.ID) + if err != nil { + api.HandleError(w, r, err) + return + } + + + api.HandleOK(w, r) +} diff --git a/pkg/database/method_feedback.go b/pkg/database/method_feedback.go index 4c4f5d9..65f7f6c 100644 --- a/pkg/database/method_feedback.go +++ b/pkg/database/method_feedback.go @@ -30,3 +30,11 @@ func (database *Database) GetFeedbacks() ([]*Feedback, error) { } return feedbacks, nil } + +func (database *Database) DeleteFeedback(id int64) error { + _, err := database.stmt.deleteFeedback.Exec(id) + if err != nil { + return err + } + return nil +} diff --git a/pkg/database/sql_stmt.go b/pkg/database/sql_stmt.go index 98ba6c1..4719db0 100644 --- a/pkg/database/sql_stmt.go +++ b/pkg/database/sql_stmt.go @@ -180,6 +180,8 @@ JOIN users ON feedbacks.user_id = users.id ORDER BY feedbacks.time ;` +var deleteFeedbackQuery = `DELETE FROM feedbacks WHERE id = ?;` + var insertUserQuery = `INSERT INTO users (username, password, role, active, avatar_id) VALUES (?, ?, ?, ?, ?);` @@ -290,6 +292,7 @@ type Stmt struct { getRandomFilesWithTag *sql.Stmt insertFeedback *sql.Stmt getFeedbacks *sql.Stmt + deleteFeedback *sql.Stmt insertUser *sql.Stmt countUser *sql.Stmt countAdmin *sql.Stmt @@ -533,6 +536,12 @@ func NewPreparedStatement(sqlConn *sql.DB) (*Stmt, error) { return nil, err } + // init deleteFeedback + stmt.deleteFeedback, err = sqlConn.Prepare(deleteFeedbackQuery) + if err != nil { + return nil, err + } + // init insertUser stmt.insertUser, err = sqlConn.Prepare(insertUserQuery) if err != nil { diff --git a/web/src/component/FeedbackPage.js b/web/src/component/FeedbackPage.js index f92fdb1..ce7d922 100644 --- a/web/src/component/FeedbackPage.js +++ b/web/src/component/FeedbackPage.js @@ -69,7 +69,29 @@ function FeedbackPage() { {feedback.content} {convertIntToDateTime(feedback.time)} - + ))}