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) }