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