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) }