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  }