3
0

Improve update message service

This commit is contained in:
Denis Arh 2018-10-20 00:59:03 +02:00
parent 4f13e8304f
commit 49ffcf3717
2 changed files with 18 additions and 9 deletions

View File

@ -38,7 +38,7 @@ const (
rel_user,
rel_channel,
reply_to,
replies,
replies,
created_at,
updated_at,
deleted_at

View File

@ -163,24 +163,33 @@ func (svc *message) Create(mod *types.Message) (message *types.Message, err erro
})
}
func (svc *message) Update(mod *types.Message) (*types.Message, error) {
func (svc *message) Update(mod *types.Message) (message *types.Message, err error) {
// @todo get user from context
var currentUserID uint64 = repository.Identity(svc.ctx)
// @todo verify if current user can access & write to this channel
_ = currentUserID
// @todo load current message
return message, svc.db.Transaction(func() (err error) {
original, err := svc.message.FindMessageByID(mod.ID)
if err != nil {
return err
}
// @todo verify ownership
if original.UserID != currentUserID {
return errors.New("Not an owner")
}
message, err := svc.message.UpdateMessage(mod)
// Allow message content to be changed, ignore everything else
original.Message = mod.Message
if err == nil {
return nil, err
}
message, err = svc.message.UpdateMessage(original)
if err == nil {
return err
}
return message, svc.sendEvent(message)
return svc.sendEvent(message)
})
}
func (svc *message) Delete(ID uint64) error {