61 lines
1.5 KiB
Go
Executable File
61 lines
1.5 KiB
Go
Executable File
package service
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/rovina/zsp-backend/internal/model"
|
|
"github.com/rovina/zsp-backend/internal/repository"
|
|
)
|
|
|
|
type ContractFolderService interface {
|
|
List() ([]model.ContractFolder, error)
|
|
GetByID(id uint) (*model.ContractFolder, error)
|
|
Create(name, description string) (*model.ContractFolder, error)
|
|
Update(id uint, name, description string) error
|
|
Delete(id uint) error
|
|
}
|
|
|
|
type contractFolderService struct {
|
|
repo repository.ContractFolderRepository
|
|
}
|
|
|
|
func NewContractFolderService(repo repository.ContractFolderRepository) ContractFolderService {
|
|
return &contractFolderService{repo: repo}
|
|
}
|
|
|
|
func (s *contractFolderService) List() ([]model.ContractFolder, error) {
|
|
return s.repo.List()
|
|
}
|
|
|
|
func (s *contractFolderService) GetByID(id uint) (*model.ContractFolder, error) {
|
|
return s.repo.GetByID(id)
|
|
}
|
|
|
|
func (s *contractFolderService) Create(name, description string) (*model.ContractFolder, error) {
|
|
f := &model.ContractFolder{
|
|
Name: name,
|
|
Description: description,
|
|
CreateTime: time.Now(),
|
|
UpdateTime: time.Now(),
|
|
}
|
|
if err := s.repo.Create(f); err != nil {
|
|
return nil, err
|
|
}
|
|
return f, nil
|
|
}
|
|
|
|
func (s *contractFolderService) Update(id uint, name, description string) error {
|
|
f, err := s.repo.GetByID(id)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
f.Name = name
|
|
f.Description = description
|
|
f.UpdateTime = time.Now()
|
|
return s.repo.Update(f)
|
|
}
|
|
|
|
func (s *contractFolderService) Delete(id uint) error {
|
|
return s.repo.Delete(id)
|
|
}
|