NAM-APJATEL-BACKEND/repository/backbone_repo.go

65 lines
1.5 KiB
Go

package repository
import (
"users_management/m/model/entity"
"github.com/google/uuid"
"gorm.io/gorm"
)
type BackboneRepo interface {
Post(backbone entity.Backbone) error
GetAll() ([]entity.Backbone, error)
Update(id uuid.UUID, updates map[string]interface{}) error
GetByID(id uuid.UUID) (entity.Backbone, error)
WithTransaction(fn func(*gorm.DB) error) error
}
type backboneRepo struct {
db *gorm.DB
}
func NewBackboneRepo(db *gorm.DB) BackboneRepo {
return &backboneRepo{
db: db,
}
}
func (r *backboneRepo) Post(backbone entity.Backbone) error {
err := r.db.Create(&backbone).Error
if err != nil {
return err
}
return nil
}
func (r *backboneRepo) GetAll() ([]entity.Backbone, error) {
var backbones []entity.Backbone
// err := r.db.Find(&backbones).Error
err := r.db.Preload("DeviceStart").Preload("DeviceEnd").Find(&backbones).Error
if err != nil {
return backbones, err
}
return backbones, nil
}
func (r *backboneRepo) Update(id uuid.UUID, updates map[string]interface{}) error {
err := r.db.Model(&entity.Backbone{}).Where("id = ?", id).Updates(updates).Error
if err != nil {
return err
}
return nil
}
func (r *backboneRepo) GetByID(id uuid.UUID) (entity.Backbone, error) {
var backbone entity.Backbone
err := r.db.Where("id = ?", id).Preload("DeviceStart").Preload("DeviceEnd").First(&backbone).Error
if err != nil {
return backbone, err
}
return backbone, nil
}
func (r *backboneRepo) WithTransaction(fn func(*gorm.DB) error) error {
return r.db.Transaction(fn)
}