You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
website/appunti/appunti.go

56 lines
1.3 KiB
Go

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
}