|
|
|
package appunti
|
|
|
|
|
|
|
|
import (
|
|
|
|
"git.phc.dm.unipi.it/phc/website/database"
|
|
|
|
"git.phc.dm.unipi.it/phc/website/model"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Service isola l'handler dal modulo del database e si occupa solo delle interazioni riguardanti gli appunti e le dispense
|
|
|
|
type Service interface {
|
|
|
|
GetDispensa(id string) (*model.Dispensa, error)
|
|
|
|
CreateDispensa(template model.Dispensa) (string, error)
|
|
|
|
}
|
|
|
|
|
|
|
|
type DefaultService struct {
|
|
|
|
DB *database.DB
|
|
|
|
}
|
|
|
|
|
|
|
|
var _ Service = &DefaultService{}
|
|
|
|
|
|
|
|
func (s *DefaultService) GetDispensa(id string) (*model.Dispensa, error) {
|
|
|
|
dispensa, err := s.DB.Dispense.Get(id)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
tags, err := s.DB.DispensaTags.Get(id)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return &model.Dispensa{
|
|
|
|
Id: dispensa.Id,
|
|
|
|
OwnerId: dispensa.OwnerId,
|
|
|
|
Title: dispensa.Title,
|
|
|
|
Description: dispensa.Description,
|
|
|
|
Tags: tags,
|
|
|
|
}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *DefaultService) CreateDispensa(template model.Dispensa) (string, error) {
|
|
|
|
dispensaId, err := s.DB.Dispense.Create(database.Dispensa{
|
|
|
|
OwnerId: template.OwnerId,
|
|
|
|
Title: template.Title,
|
|
|
|
Description: template.Description,
|
|
|
|
})
|
|
|
|
if err != nil {
|
|
|
|
return "", err
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := s.DB.DispensaTags.Set(dispensaId, template.Tags); err != nil {
|
|
|
|
return "", err
|
|
|
|
}
|
|
|
|
|
|
|
|
return dispensaId, nil
|
|
|
|
}
|