Add: simple get tags and create tag
This commit is contained in:
40
pkg/database/method_tag.go
Normal file
40
pkg/database/method_tag.go
Normal file
@@ -0,0 +1,40 @@
|
||||
package database
|
||||
|
||||
func (database *Database) InsertTag(tag string, description string) (*Tag, error) {
|
||||
result, err := database.stmt.insertTag.Exec(tag, description)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
id, err := result.LastInsertId()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return database.GetTag(id)
|
||||
}
|
||||
|
||||
func (database *Database) GetTag(id int64) (*Tag, error) {
|
||||
tag := &Tag{}
|
||||
err := database.stmt.getTag.QueryRow(id).Scan(&tag.ID, &tag.Name, &tag.Description)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return tag, nil
|
||||
}
|
||||
|
||||
func (database *Database) GetTags() ([]Tag, error) {
|
||||
tags := []Tag{}
|
||||
rows, err := database.stmt.getTags.Query()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
tag := Tag{}
|
||||
err := rows.Scan(&tag.ID, &tag.Name, &tag.Description)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
tags = append(tags, tag)
|
||||
}
|
||||
return tags, nil
|
||||
}
|
||||
@@ -43,8 +43,9 @@ var initAvatarsTableQuery = `CREATE TABLE IF NOT EXISTS avatars (
|
||||
);`
|
||||
|
||||
var initTagsTableQuery = `CREATE TABLE IF NOT EXISTS tags (
|
||||
id INTEGER PRIMARY KEY,
|
||||
tag TEXT NOT NULL
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
description TEXT NOT NULL
|
||||
);`
|
||||
|
||||
var initFileHasTagTableQuery = `CREATE TABLE IF NOT EXISTS file_has_tag (
|
||||
@@ -169,6 +170,12 @@ var getUserByIdQuery = `SELECT id, username, role, avatar_id FROM users WHERE id
|
||||
|
||||
var getAnonymousUserQuery = `SELECT id, username, role, avatar_id FROM users WHERE role = 0 LIMIT 1;`
|
||||
|
||||
var insertTagQuery = `INSERT INTO tags (name, description) VALUES (?, ?);`
|
||||
|
||||
var getTagQuery = `SELECT id, name, description FROM tags WHERE id = ? LIMIT 1;`
|
||||
|
||||
var getTagsQuery = `SELECT id, name, description FROM tags;`
|
||||
|
||||
type Stmt struct {
|
||||
initFilesTable *sql.Stmt
|
||||
initFoldersTable *sql.Stmt
|
||||
@@ -201,6 +208,9 @@ type Stmt struct {
|
||||
getUser *sql.Stmt
|
||||
getUserById *sql.Stmt
|
||||
getAnonymousUser *sql.Stmt
|
||||
insertTag *sql.Stmt
|
||||
getTag *sql.Stmt
|
||||
getTags *sql.Stmt
|
||||
}
|
||||
|
||||
func NewPreparedStatement(sqlConn *sql.DB) (*Stmt, error) {
|
||||
@@ -457,5 +467,23 @@ func NewPreparedStatement(sqlConn *sql.DB) (*Stmt, error) {
|
||||
}
|
||||
}
|
||||
|
||||
// init insertTag
|
||||
stmt.insertTag, err = sqlConn.Prepare(insertTagQuery)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// init getTag
|
||||
stmt.getTag, err = sqlConn.Prepare(getTagQuery)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// init getTags
|
||||
stmt.getTags, err = sqlConn.Prepare(getTagsQuery)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return stmt, err
|
||||
}
|
||||
|
||||
@@ -28,10 +28,16 @@ type User struct {
|
||||
AvatarId int64 `json:"avatar_id"`
|
||||
}
|
||||
|
||||
type Tag struct {
|
||||
ID int64 `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description"`
|
||||
}
|
||||
|
||||
var (
|
||||
RoleAnonymous = int64(0)
|
||||
RoleAdmin = int64(1)
|
||||
RoleUser = int64(2)
|
||||
RoleAdmin = int64(1)
|
||||
RoleUser = int64(2)
|
||||
)
|
||||
|
||||
func (f *File) Path() (string, error) {
|
||||
|
||||
Reference in New Issue
Block a user