diff --git a/backend/docs/docs.go b/backend/docs/docs.go index 70aaa57..b179ebf 100644 --- a/backend/docs/docs.go +++ b/backend/docs/docs.go @@ -455,6 +455,9 @@ const docTemplate = `{ "id": { "type": "integer" }, + "published": { + "type": "boolean" + }, "title": { "type": "string" } @@ -466,6 +469,9 @@ const docTemplate = `{ "content": { "type": "string" }, + "published": { + "type": "boolean" + }, "title": { "type": "string" } diff --git a/backend/docs/swagger.json b/backend/docs/swagger.json index 86967b0..6f365dc 100644 --- a/backend/docs/swagger.json +++ b/backend/docs/swagger.json @@ -444,6 +444,9 @@ "id": { "type": "integer" }, + "published": { + "type": "boolean" + }, "title": { "type": "string" } @@ -455,6 +458,9 @@ "content": { "type": "string" }, + "published": { + "type": "boolean" + }, "title": { "type": "string" } diff --git a/backend/docs/swagger.yaml b/backend/docs/swagger.yaml index 6bbafa1..98d6a4c 100644 --- a/backend/docs/swagger.yaml +++ b/backend/docs/swagger.yaml @@ -25,6 +25,8 @@ definitions: type: string id: type: integer + published: + type: boolean title: type: string type: object @@ -32,6 +34,8 @@ definitions: properties: content: type: string + published: + type: boolean title: type: string type: object diff --git a/backend/internal/repositories/post_repository.go b/backend/internal/repositories/post_repository.go index 5216441..e981a4b 100644 --- a/backend/internal/repositories/post_repository.go +++ b/backend/internal/repositories/post_repository.go @@ -3,6 +3,7 @@ package repositories import ( "context" "database/sql" + "strings" "gitea.d3m0k1d.ru/d3m0k1d/d3m0k1d.ru/backend/internal/logger" "gitea.d3m0k1d.ru/d3m0k1d/d3m0k1d.ru/backend/internal/storage" @@ -78,17 +79,29 @@ func (p *postRepository) Create(ctx context.Context, post storage.Post) error { } func (p *postRepository) Update(ctx context.Context, id int, post storage.Post) error { - _, err := p.db.Exec( - "UPDATE posts SET title = ?, content = ? WHERE id = ?", - post.Title, - post.Content, - id, - ) - if err != nil { - return err + query := "UPDATE posts SET " + args := []interface{}{} + updates := []string{} + + if post.Title != "" { + updates = append(updates, "title = ?") + args = append(args, post.Title) } - p.logger.Info("Post updated:", "id", id) - return nil + + if post.Content != "" { + updates = append(updates, "content = ?") + args = append(args, post.Content) + } + + updates = append(updates, "published = ?") + args = append(args, post.Published) + updates = append(updates, "updated_at = CURRENT_TIMESTAMP") + query += strings.Join(updates, ", ") + query += " WHERE id = ?" + args = append(args, id) + + _, err := p.db.ExecContext(ctx, query, args...) + return err } func (p *postRepository) Delete(ctx context.Context, id int) error { @@ -122,5 +135,3 @@ func (p *postRepository) IsExist(ctx context.Context, id int) bool { } return true } - -// TODO: Add query for change published status