83 lines
1.9 KiB
Go
83 lines
1.9 KiB
Go
package repositories
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"gorm.io/gorm"
|
|
|
|
"git.dynamicdiscord.de/kalipso/zineshop/models"
|
|
)
|
|
|
|
type PrintJobRepository interface {
|
|
Create(models.PrintJob) (models.PrintJob, error)
|
|
GetAll() ([]models.PrintJob, error)
|
|
GetById(string) (models.PrintJob, error)
|
|
//GetByShopItemId(string) (models.PrintJob, error)
|
|
Update(models.PrintJob) (models.PrintJob, error)
|
|
DeleteById(string) error
|
|
}
|
|
|
|
type GORMPrintJobRepository struct {
|
|
DB *gorm.DB
|
|
}
|
|
|
|
func NewGORMPrintJobRepository(db *gorm.DB) PrintJobRepository {
|
|
return &GORMPrintJobRepository{
|
|
DB: db,
|
|
}
|
|
}
|
|
|
|
func (t *GORMPrintJobRepository) Create(printJob models.PrintJob) (models.PrintJob, error) {
|
|
result := t.DB.Create(&printJob)
|
|
|
|
if result.Error != nil {
|
|
return models.PrintJob{}, result.Error
|
|
}
|
|
|
|
return printJob, nil
|
|
}
|
|
|
|
func (t *GORMPrintJobRepository) GetAll() ([]models.PrintJob, error) {
|
|
var printJobs []models.PrintJob
|
|
result := t.DB.Preload("ShopItem").Preload("Variant").Preload("PaperType").Preload("CoverPaperType").Find(&printJobs)
|
|
|
|
return printJobs, result.Error
|
|
}
|
|
|
|
func (t *GORMPrintJobRepository) GetById(id string) (models.PrintJob, error) {
|
|
printJobId, err := strconv.Atoi(id)
|
|
|
|
if err != nil {
|
|
return models.PrintJob{}, err
|
|
}
|
|
|
|
var printJob models.PrintJob
|
|
result := t.DB.Preload("ShopItem").Preload("Variant").Preload("PaperType").Preload("CoverPaperType").First(&printJob, uint(printJobId))
|
|
|
|
if result.Error != nil {
|
|
return models.PrintJob{}, result.Error
|
|
}
|
|
|
|
return printJob, nil
|
|
}
|
|
|
|
func (t *GORMPrintJobRepository) Update(printJob models.PrintJob) (models.PrintJob, error) {
|
|
result := t.DB.Save(&printJob)
|
|
if result.Error != nil {
|
|
return models.PrintJob{}, result.Error
|
|
}
|
|
|
|
return printJob, nil
|
|
}
|
|
|
|
func (t *GORMPrintJobRepository) DeleteById(id string) error {
|
|
printJobId, err := strconv.Atoi(id)
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
result := t.DB.Delete(&models.PrintJob{}, printJobId)
|
|
return result.Error
|
|
}
|