2025-01-09 18:56:30 +08:00

66 lines
1.8 KiB
Go

package services
import (
"git.solsynth.dev/matrix/nucleus/pkg/internal/database"
"git.solsynth.dev/matrix/nucleus/pkg/internal/models"
"gorm.io/gorm"
"gorm.io/gorm/clause"
)
func CountRelease(product int) (int64, error) {
var count int64
if err := database.C.Model(&models.ProductRelease{}).Where("product_id = ?", product).Count(&count).Error; err != nil {
return count, err
}
return count, nil
}
func ListRelease(product int, take, offset int) ([]models.ProductRelease, error) {
var items []models.ProductRelease
if err := database.C.
Where("product_id = ?", product).Preload("Meta").
Limit(take).Offset(offset).Find(&items).Error; err != nil {
return items, err
}
return items, nil
}
func GetRelease(id uint) (models.ProductRelease, error) {
var item models.ProductRelease
if err := database.C.Where("id = ?", id).Preload("Meta").First(&item).Error; err != nil {
return item, err
}
return item, nil
}
func GetReleaseWithProduct(id uint, product uint) (models.ProductRelease, error) {
var item models.ProductRelease
if err := database.C.Where("id = ? AND product_id = ?", id, product).Preload("Meta").First(&item).Error; err != nil {
return item, err
}
return item, nil
}
func NewRelease(item models.ProductRelease) (models.ProductRelease, error) {
if err := database.C.Create(&item).Error; err != nil {
return item, err
}
return item, nil
}
func UpdateRelease(item models.ProductRelease) (models.ProductRelease, error) {
if err := database.C.Session(&gorm.Session{
FullSaveAssociations: true,
}).Save(&item).Error; err != nil {
return item, err
}
return item, nil
}
func DeleteRelease(item models.ProductRelease) (models.ProductRelease, error) {
if err := database.C.Select(clause.Associations).Delete(&item).Error; err != nil {
return item, err
}
return item, nil
}