add feedback

This commit is contained in:
2021-05-24 02:04:03 +08:00
parent 469d72b82c
commit 6cc8b3a96b
3 changed files with 99 additions and 0 deletions

View File

@@ -21,6 +21,12 @@ var initFoldersTableQuery = `CREATE TABLE IF NOT EXISTS folders (
folder TEXT NOT NULL,
foldername TEXT NOT NULL
);`
var initFeedbacksTableQuery = `CREATE TABLE IF NOT EXISTS feedbacks (
id INTEGER PRIMARY KEY,
time INTEGER NOT NULL,
feedback TEXT NOT NULL,
header TEXT NOT NULL
);`
var insertFolderQuery = `INSERT INTO folders (folder, foldername) VALUES (?, ?);`
var findFolderQuery = `SELECT id FROM folders WHERE folder = ? LIMIT 1;`
var insertFileQuery = `INSERT INTO files (folder_id, filename, filesize) VALUES (?, ?, ?);`
@@ -32,6 +38,7 @@ var getFileQuery = `SELECT files.id, files.folder_id, files.filename, folders.fo
var searchFoldersQuery = `SELECT id, folder, foldername FROM folders WHERE foldername LIKE ? LIMIT ? OFFSET ?;`
var getFilesInFolderQuery = `SELECT id, filename, filesize FROM files WHERE folder_id = ? LIMIT ? OFFSET ?;`
var getRandomFilesQuery = `SELECT files.id, files.folder_id, files.filename, folders.foldername, files.filesize FROM files JOIN folders on files.folder_id = folders.id ORDER BY RANDOM() LIMIT ?;`
var insertFeedbackQuery = `INSERT INTO feedbacks (time, feedback, header) VALUES (?, ?, ?);`
type Database struct {
sqlConn *sql.DB
@@ -41,6 +48,7 @@ type Database struct {
type Stmt struct {
initFilesTable *sql.Stmt
initFoldersTable *sql.Stmt
initFeedbacksTable *sql.Stmt
insertFolder *sql.Stmt
insertFile *sql.Stmt
findFolder *sql.Stmt
@@ -52,6 +60,7 @@ type Stmt struct {
searchFolders *sql.Stmt
getFilesInFolder *sql.Stmt
getRandomFiles *sql.Stmt
insertFeedback *sql.Stmt
}
type File struct {
@@ -70,6 +79,14 @@ type Folder struct {
Foldername string `json:"foldername"`
}
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 {
@@ -304,6 +321,12 @@ func NewPreparedStatement(sqlConn *sql.DB) (*Stmt, error) {
return nil, err
}
// init feedbacks tables
stmt.initFeedbacksTable, err = sqlConn.Prepare(initFeedbacksTableQuery)
if err != nil {
return nil, err
}
// run init statement
_, err = stmt.initFilesTable.Exec()
if err != nil {
@@ -313,6 +336,10 @@ func NewPreparedStatement(sqlConn *sql.DB) (*Stmt, error) {
if err != nil {
return nil, err
}
_, err = stmt.initFeedbacksTable.Exec()
if err != nil {
return nil, err
}
// init insert folder statement
stmt.insertFolder, err = sqlConn.Prepare(insertFolderQuery)
@@ -380,6 +407,12 @@ func NewPreparedStatement(sqlConn *sql.DB) (*Stmt, error) {
return nil, err
}
// init insertFeedback
stmt.insertFeedback, err = sqlConn.Prepare(insertFeedbackQuery)
if err != nil {
return nil, err
}
return stmt, err
}