package unit import ( e "simrs-vx/internal/domain/main-entities/unit" dg "github.com/karincake/apem/db-gorm-pg" gh "github.com/karincake/getuk" "gorm.io/gorm" ) func CreateData(input *e.Unit, dbx ...*gorm.DB) (*e.Unit, error) { var tx *gorm.DB if len(dbx) > 0 { tx = dbx[0] } else { tx = dg.I } if err := tx.Create(&input).Error; err != nil { return nil, err } return input, nil } func ReadListData(input e.ReadListDto, dbx ...*gorm.DB) ([]e.Unit, *e.MetaDto, error) { data := []e.Unit{} pagination := gh.Pagination{} count := int64(0) meta := e.MetaDto{} var tx *gorm.DB if len(dbx) > 0 { tx = dbx[0] } else { tx = dg.I } tx = tx. Model(&e.Unit{}). // Joins("Patient"). // if needed // Preload("Patient"). // if needed Preload("Installation"). // if needed Scopes(gh.Filter(input)). Count(&count). Scopes(gh.Paginate(input, &pagination)). Order("\"CreatedAt\" DESC") if err := tx.Debug().Find(&data).Error; err != nil { if err == gorm.ErrRecordNotFound { return nil, &meta, nil } return nil, nil, err } meta.Count = int(count) meta.PageNumber = pagination.PageNumber meta.PageSize = pagination.PageSize return data, &meta, nil } func ReadDetailData(input e.ReadDetailDto, dbx ...*gorm.DB) (*e.Unit, error) { data := e.Unit{} var tx *gorm.DB if len(dbx) > 0 { tx = dbx[0] } else { tx = dg.I } if err := tx.First(&data, input.Id).Error; err != nil { return nil, err } return &data, nil } func UpdateData(input e.Unit, dbx ...*gorm.DB) error { var tx *gorm.DB if len(dbx) > 0 { tx = dbx[0] } else { tx = dg.I } return tx.Save(&input).Error } func DeleteData(input *e.Unit, dbx ...*gorm.DB) error { var tx *gorm.DB if len(dbx) > 0 { tx = dbx[0] } else { tx = dg.I } return tx.Delete(input).Error }