github.com/easysoft/zendata@v0.0.0-20240513203326-705bd5a7fd67/internal/server/repo/excel.go (about) 1 package serverRepo 2 3 import ( 4 consts "github.com/easysoft/zendata/internal/pkg/const" 5 "github.com/easysoft/zendata/internal/pkg/model" 6 "gorm.io/gorm" 7 ) 8 9 type ExcelRepo struct { 10 DB *gorm.DB `inject:""` 11 } 12 13 func (r *ExcelRepo) ListAll() (models []*model.ZdExcel) { 14 r.DB.Select("id,title,referName,fileName,folder,path,updatedAt").Find(&models) 15 return 16 } 17 18 func (r *ExcelRepo) List(keywords string, page int) (models []*model.ZdExcel, total int, err error) { 19 query := r.DB.Select("id,title,referName,fileName,folder,path").Order("id ASC") 20 if keywords != "" { 21 query = query.Where("title LIKE ?", "%"+keywords+"%") 22 } 23 if page > 0 { 24 query = query.Offset((page - 1) * consts.PageSize).Limit(consts.PageSize) 25 } 26 27 err = query.Find(&models).Error 28 29 var total64 int64 30 err = r.DB.Model(&model.ZdExcel{}).Count(&total64).Error 31 32 total = int(total64) 33 return 34 } 35 36 func (r *ExcelRepo) ListFiles() (models []*model.ZdExcel) { 37 tbl := (&model.ZdExcel{}).TableName() 38 sql := "select id,title,referName,fileName,folder,path from " + 39 tbl + " where id in (select max(id) from " + tbl + " group by referName)" 40 r.DB.Raw(sql).Find(&models) 41 return 42 } 43 func (r *ExcelRepo) ListSheets(referName string) (models []*model.ZdExcel) { 44 r.DB.Select("id,sheet").Where("referName=?", referName).Find(&models) 45 return 46 } 47 48 func (r *ExcelRepo) Get(id uint) (model model.ZdExcel, err error) { 49 err = r.DB.Where("id=?", id).First(&model).Error 50 return 51 } 52 func (r *ExcelRepo) GetBySheet(referName, sheet string) (model model.ZdExcel, err error) { 53 err = r.DB.Where("referName=? AND sheet=?", referName, sheet).First(&model).Error 54 return 55 } 56 57 func (r *ExcelRepo) Create(model *model.ZdExcel) (err error) { 58 err = r.DB.Create(model).Error 59 return 60 } 61 func (r *ExcelRepo) Update(model *model.ZdExcel) (err error) { 62 err = r.DB.Save(model).Error 63 return 64 } 65 66 func (r *ExcelRepo) Remove(id uint) (err error) { 67 model := model.ZdExcel{} 68 model.ID = id 69 err = r.DB.Delete(model).Error 70 71 return 72 } 73 74 func NewExcelRepo(db *gorm.DB) *ExcelRepo { 75 return &ExcelRepo{DB: db} 76 }