diff --git a/pkg/api/handle_tag.go b/pkg/api/handle_tag.go index 8ce9534..c2dc47c 100644 --- a/pkg/api/handle_tag.go +++ b/pkg/api/handle_tag.go @@ -29,11 +29,6 @@ func (api *API) HandleGetTags(w http.ResponseWriter, r *http.Request) { } } -type InsertTagRequest struct { - Name string `json:"name"` - Description string `json:"description"` -} - type InsertTagResponse struct { Tag *database.Tag `json:"tag"` } @@ -46,14 +41,14 @@ func (api *API) HandleInsertTag(w http.ResponseWriter, r *http.Request) { return } - var req InsertTagRequest + req := &database.Tag{} err = json.NewDecoder(r.Body).Decode(&req) if err != nil { api.HandleError(w, r, err) return } - tag, err := api.Db.InsertTag(req.Name, req.Description) + tag, err := api.Db.InsertTag(req) if err != nil { api.HandleError(w, r, err) return diff --git a/pkg/database/method_tag.go b/pkg/database/method_tag.go index 95353f9..158e636 100644 --- a/pkg/database/method_tag.go +++ b/pkg/database/method_tag.go @@ -2,8 +2,8 @@ package database import "errors" -func (database *Database) InsertTag(tag string, description string) (*Tag, error) { - result, err := database.stmt.insertTag.Exec(tag, description) +func (database *Database) InsertTag(tag *Tag) (*Tag, error) { + result, err := database.stmt.insertTag.Exec(tag.Name, tag.Description, tag.CreatedByUserId) if err != nil { return nil, err } diff --git a/pkg/database/sql_stmt.go b/pkg/database/sql_stmt.go index 21d7a2c..14c6781 100644 --- a/pkg/database/sql_stmt.go +++ b/pkg/database/sql_stmt.go @@ -45,7 +45,9 @@ var initAvatarsTableQuery = `CREATE TABLE IF NOT EXISTS avatars ( var initTagsTableQuery = `CREATE TABLE IF NOT EXISTS tags ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL UNIQUE, - description TEXT NOT NULL + description TEXT NOT NULL, + created_by_user_id INTEGER NOT NULL, + FOREIGN KEY(created_by_user_id) REFERENCES users(id) );` var initFileHasTagTableQuery = `CREATE TABLE IF NOT EXISTS file_has_tag ( @@ -170,7 +172,7 @@ 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 insertTagQuery = `INSERT INTO tags (name, description, created_by_user_id) VALUES (?, ?, ?);` var getTagQuery = `SELECT id, name, description FROM tags WHERE id = ? LIMIT 1;` diff --git a/pkg/database/struct.go b/pkg/database/struct.go index 13aab35..068fe78 100644 --- a/pkg/database/struct.go +++ b/pkg/database/struct.go @@ -29,9 +29,10 @@ type User struct { } type Tag struct { - ID int64 `json:"id"` - Name string `json:"name"` - Description string `json:"description"` + ID int64 `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + CreatedByUserId int64 `json:"created_by_user_id"` } var (