87 lines
2.2 KiB
Go
Executable File
87 lines
2.2 KiB
Go
Executable File
package repository
|
|
|
|
import (
|
|
"github.com/rovina/zsp-backend/internal/model"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type CompanyRepository interface {
|
|
CreateFolder(f *model.CompanyFolder) error
|
|
ListFolders() ([]model.CompanyFolder, error)
|
|
GetFolderByID(id uint) (*model.CompanyFolder, error)
|
|
UpdateFolder(f *model.CompanyFolder) error
|
|
DeleteFolder(id uint) error
|
|
|
|
CreateFile(f *model.CompanyFile) error
|
|
ListFiles(folderID *uint) ([]model.CompanyFile, error)
|
|
GetFileByID(id uint) (*model.CompanyFile, error)
|
|
UpdateFile(f *model.CompanyFile) error
|
|
DeleteFile(id uint) error
|
|
}
|
|
|
|
type companyRepository struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
func NewCompanyRepository(db *gorm.DB) CompanyRepository {
|
|
return &companyRepository{db: db}
|
|
}
|
|
|
|
func (r *companyRepository) CreateFolder(f *model.CompanyFolder) error {
|
|
return r.db.Create(f).Error
|
|
}
|
|
|
|
func (r *companyRepository) ListFolders() ([]model.CompanyFolder, error) {
|
|
var list []model.CompanyFolder
|
|
err := r.db.Order("create_time DESC").Find(&list).Error
|
|
return list, err
|
|
}
|
|
|
|
func (r *companyRepository) GetFolderByID(id uint) (*model.CompanyFolder, error) {
|
|
var f model.CompanyFolder
|
|
err := r.db.First(&f, id).Error
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &f, nil
|
|
}
|
|
|
|
func (r *companyRepository) UpdateFolder(f *model.CompanyFolder) error {
|
|
return r.db.Save(f).Error
|
|
}
|
|
|
|
func (r *companyRepository) DeleteFolder(id uint) error {
|
|
return r.db.Delete(&model.CompanyFolder{}, id).Error
|
|
}
|
|
|
|
func (r *companyRepository) CreateFile(f *model.CompanyFile) error {
|
|
return r.db.Create(f).Error
|
|
}
|
|
|
|
func (r *companyRepository) ListFiles(folderID *uint) ([]model.CompanyFile, error) {
|
|
var list []model.CompanyFile
|
|
q := r.db.Order("upload_time DESC")
|
|
if folderID != nil && *folderID > 0 {
|
|
q = q.Where("folder_id = ?", *folderID)
|
|
}
|
|
err := q.Find(&list).Error
|
|
return list, err
|
|
}
|
|
|
|
func (r *companyRepository) GetFileByID(id uint) (*model.CompanyFile, error) {
|
|
var f model.CompanyFile
|
|
err := r.db.First(&f, id).Error
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &f, nil
|
|
}
|
|
|
|
func (r *companyRepository) UpdateFile(f *model.CompanyFile) error {
|
|
return r.db.Save(f).Error
|
|
}
|
|
|
|
func (r *companyRepository) DeleteFile(id uint) error {
|
|
return r.db.Delete(&model.CompanyFile{}, id).Error
|
|
}
|