start rmser

This commit is contained in:
2025-11-29 08:40:24 +03:00
commit 5aa2238eea
2117 changed files with 375169 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
package recipes
import (
"rmser/internal/domain/recipes"
"gorm.io/gorm"
"gorm.io/gorm/clause"
)
type pgRepository struct {
db *gorm.DB
}
func NewRepository(db *gorm.DB) recipes.Repository {
return &pgRepository{db: db}
}
func (r *pgRepository) SaveRecipes(list []recipes.Recipe) error {
return r.db.Transaction(func(tx *gorm.DB) error {
for _, recipe := range list {
if err := tx.Omit("Items").Clauses(clause.OnConflict{
Columns: []clause.Column{{Name: "id"}},
UpdateAll: true,
}).Create(&recipe).Error; err != nil {
return err
}
if err := tx.Where("recipe_id = ?", recipe.ID).Delete(&recipes.RecipeItem{}).Error; err != nil {
return err
}
if len(recipe.Items) > 0 {
if err := tx.Create(&recipe.Items).Error; err != nil {
return err
}
}
}
return nil
})
}