feat: update logic for update query to db for posts
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user