35 lines
928 B
Go
35 lines
928 B
Go
package useCases
|
|
|
|
import (
|
|
"RenewCMS/internal/domain/contenttype"
|
|
"RenewCMS/internal/domain/entry"
|
|
"RenewCMS/internal/domain/role"
|
|
)
|
|
|
|
type DeleteEntryUseCase struct {
|
|
contentTypes contenttype.Repository
|
|
entries entry.Repository
|
|
}
|
|
|
|
func NewDeleteEntryUseCase(contentTypes contenttype.Repository, entries entry.Repository) *DeleteEntryUseCase {
|
|
return &DeleteEntryUseCase{contentTypes, entries}
|
|
}
|
|
|
|
func (u *DeleteEntryUseCase) Delete(contentTypeKey string, id uint32, caller ContentCaller) error {
|
|
if err := caller.requireHolding(role.KeyContentDelete, contentTypeKey); err != nil {
|
|
return err
|
|
}
|
|
owner, err := u.contentTypes.GetByKey(contentTypeKey)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
found, err := u.entries.Get(owner.ID, id)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if err := caller.authorize(role.KeyContentDelete, contentTypeKey, found.CreatedBy); err != nil {
|
|
return err
|
|
}
|
|
return u.entries.Delete(owner.ID, id)
|
|
}
|