Add: delete tag on file

This commit is contained in:
2021-12-12 17:35:30 +08:00
parent 003f8cace2
commit 93a0fe7a31
6 changed files with 104 additions and 3 deletions

10
pkg/database/error.go Normal file
View File

@@ -0,0 +1,10 @@
package database
import (
"errors"
)
var (
ErrNotFound = errors.New("object not found")
ErrTagNotFound = errors.New("tag not found")
)

View File

@@ -1,8 +1,14 @@
package database
func (database *Database) PutTagOnFile(tagID, fileID, userID int64) error {
_, err := database.stmt.putTagOnFile.Exec(tagID, fileID, userID)
return err
result, err := database.stmt.putTagOnFile.Exec(tagID, fileID, userID)
if err != nil {
return err
}
if rows, _ := result.RowsAffected(); rows == 0 {
return ErrTagNotFound
}
return nil
}
func (database *Database) GetTagsOnFile(fileID int64) ([]*Tag, error) {
@@ -23,3 +29,14 @@ func (database *Database) GetTagsOnFile(fileID int64) ([]*Tag, error) {
}
return tags, nil
}
func (database *Database) DeleteTagOnFile(tagID, fileID int64) error {
result, err := database.stmt.deleteTagOnFile.Exec(tagID, fileID)
if err != nil {
return err
}
if rows, _ := result.RowsAffected(); rows == 0 {
return ErrTagNotFound
}
return nil
}

View File

@@ -198,6 +198,8 @@ FROM file_has_tag
JOIN tags ON file_has_tag.tag_id = tags.id
WHERE file_has_tag.file_id = ?;`
var deleteTagOnFileQuery = `DELETE FROM file_has_tag WHERE tag_id = ? AND file_id = ?;`
type Stmt struct {
initFilesTable *sql.Stmt
initFoldersTable *sql.Stmt
@@ -236,6 +238,7 @@ type Stmt struct {
updateTag *sql.Stmt
putTagOnFile *sql.Stmt
getTagsOnFile *sql.Stmt
deleteTagOnFile *sql.Stmt
}
func NewPreparedStatement(sqlConn *sql.DB) (*Stmt, error) {
@@ -528,5 +531,11 @@ func NewPreparedStatement(sqlConn *sql.DB) (*Stmt, error) {
return nil, err
}
// init deleteTagOnFile
stmt.deleteTagOnFile, err = sqlConn.Prepare(deleteTagOnFileQuery)
if err != nil {
return nil, err
}
return stmt, err
}