Skip to content

Commit

Permalink
ref
Browse files Browse the repository at this point in the history
  • Loading branch information
Olegsuus committed Jun 20, 2024
1 parent 8167781 commit ef7753c
Show file tree
Hide file tree
Showing 4 changed files with 287 additions and 16 deletions.
6 changes: 0 additions & 6 deletions .idea/sqldialects.xml

This file was deleted.

34 changes: 30 additions & 4 deletions internal/database/storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,12 @@ func (db *DB) Close() error {
}

func (db *DB) GetAllNews(limit, offset int) ([]models.News, error) {
db.CreateNewsCategory(&models.NewsCategory{1, 1})
db.CreateNewsCategory(&models.NewsCategory{2, 2})
db.CreateNewsCategory(&models.NewsCategory{4, 2})

var structs []reform.Struct

query := fmt.Sprintf("LIMIT %d OFFSET %d", limit, offset)
structs, err := db.DB.SelectAllFrom(models.NewsTable, query)
if err != nil {
Expand All @@ -43,10 +48,23 @@ func (db *DB) GetAllNews(limit, offset int) ([]models.News, error) {
newsList := make([]models.News, len(structs))
for i, s := range structs {
if news, ok := s.(*models.News); ok {
//_, err = db.DB.SelectAllFrom(models.NewsTable, "WHERE news_id = ?", newsID)
//if err != nil {
// return nil, err
//}
var categoryIDs []int64
query := fmt.Sprintf("WHERE news_id = %d", news.ID)
newsCategoryStructs, err := db.DB.SelectAllFrom(models.NewsCategoryTable, query)
if err != nil {

fmt.Println("newcat =", newsCategoryStructs)
log.Printf("Error selecting categories for news ID %d: %v", news.ID, err)

}
for _, ns := range newsCategoryStructs {
if nc, ok := ns.(*models.NewsCategory); ok {
categoryIDs = append(categoryIDs, nc.CategoryID)
} else {
log.Printf("Error parsing category ID for news ID %d: unexpected type %T", news.ID, ns)
}
}
news.Categories = categoryIDs
newsList[i] = *news
} else {
return nil, fmt.Errorf("unexpected type %T", s)
Expand All @@ -73,3 +91,11 @@ func (db *DB) DeleteNews(id int64) error {
news := &models.News{ID: id}
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)
}
19 changes: 13 additions & 6 deletions internal/models/models.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,22 @@ package models
//go:generate reform
//reform:news
type News struct {
ID int64 `reform:"id,pk" json:"id"`
Title string `reform:"title" json:"title"`
Content string `reform:"content" json:"content"`
Categories []int `reform:"-" json:"categories"`
ID int64 `reform:"id,pk" json:"id"`
Title string `reform:"title" json:"title"`
Content string `reform:"content" json:"content"`
Categories []int64 `reform:"-" json:"categories"`
}

//go:generate reform
//reforms:categories
//reform:newscategories
type NewsCategory struct {
NewsID int64 `reform:"news_id,pk" json:"news_id"`
CategoryID int64 `reform:"category_id,pk" json:"category_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"`
}
244 changes: 244 additions & 0 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 ef7753c

Please sign in to comment.