Skip to content

Commit

Permalink
result commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Olegsuus committed Jun 20, 2024
1 parent 26b0df5 commit 7fd9475
Show file tree
Hide file tree
Showing 8 changed files with 37 additions and 146 deletions.
1 change: 1 addition & 0 deletions config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ Database:
user: "olegsemashko"
password: "0000"
dbname: "NewsDB"
migrationPath: "migrations"

2 changes: 0 additions & 2 deletions dbconf.yml

This file was deleted.

30 changes: 27 additions & 3 deletions internal/app/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,11 +59,35 @@ func (a *App) HandleUpdateNews(c *fiber.Ctx) error {
if err := c.BodyParser(&news); err != nil {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "invalid input"})
}
news.ID = id
if err := a.DB.UpdateNews(&news); err != nil {
if news.ID != id {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "invalid id"})
}

oldNews, err := a.DB.GetNewsByID(id)
if err != nil {
return c.Status(fiber.StatusNotFound).JSON(fiber.Map{"error": "news not found"})
}

updatedNews := mergeNews(*oldNews, news)

if err := a.DB.UpdateNews(&updatedNews); err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": "failed to update news"})
}
return c.Status(fiber.StatusOK).JSON(news)
return c.Status(fiber.StatusOK).JSON(updatedNews)
}

func mergeNews(oldNews models.News, newNews models.News) models.News {
if newNews.Title != "" {
oldNews.Title = newNews.Title
}
if newNews.Content != "" {
oldNews.Content = newNews.Content
}
if len(newNews.Categories) > 0 {
oldNews.Categories = newNews.Categories
}

return oldNews
}

func (a *App) HandleDeleteNews(c *fiber.Ctx) error {
Expand Down
13 changes: 7 additions & 6 deletions internal/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@ type Config struct {
Port int
}
Database struct {
Driver string
Host string
Port int
User string
Password string
DBName string
Driver string
Host string
Port int
User string
Password string
DBName string
MigrationPath string
}
}

Expand Down
4 changes: 0 additions & 4 deletions internal/database/storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,6 @@ func (db *DB) DeleteNews(id int64) error {
return db.DB.Delete(news)
}

func (db *DB) CreateCategory(cat *models.Category) error {
return db.DB.Save(cat)
}

func (db *DB) CreateNewsCategory(nc *models.NewsCategory) error {
return db.DB.Save(nc)
}
4 changes: 2 additions & 2 deletions internal/migrations/migrations.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ var embedMigrations embed.FS
func Migrations(cfg *config.Config, db *sql.DB) {
goose.SetBaseFS(embedMigrations)

if err := goose.SetDialect("postgres"); err != nil {
if err := goose.SetDialect(cfg.Database.Driver); err != nil {
log.Fatalf("Failed to set goose dialect: %v", err)
}

if err := goose.Up(db, "migrations"); err != nil {
if err := goose.Up(db, cfg.Database.MigrationPath); err != nil {
log.Fatalf("Failed to apply migrations: %v", err)
}

Expand Down
7 changes: 0 additions & 7 deletions internal/models/models.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,3 @@ type NewsCategory struct {
NewsID int64 `reform:"news_id,pk" json:"news_id"`
CategoryID int64 `reform:"category_id" json:"category_id"`
}

//go:generate reform
//reform:categories
type Category struct {
ID int64 `reform:"id,pk" json:"id"`
Name string `reform:"name" json:"name"`
}
122 changes: 0 additions & 122 deletions internal/models/models_reform.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 7fd9475

Please sign in to comment.