|
|
|
@ -392,39 +392,40 @@ func CreateWebhooks(ctx context.Context, ws []*Webhook) error { |
|
|
|
|
return db.Insert(ctx, ws) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// getWebhook uses argument bean as query condition,
|
|
|
|
|
// ID must be specified and do not assign unnecessary fields.
|
|
|
|
|
func getWebhook(ctx context.Context, bean *Webhook) (*Webhook, error) { |
|
|
|
|
has, err := db.GetEngine(ctx).Get(bean) |
|
|
|
|
// GetWebhookByID returns webhook of repository by given ID.
|
|
|
|
|
func GetWebhookByID(ctx context.Context, id int64) (*Webhook, error) { |
|
|
|
|
bean := new(Webhook) |
|
|
|
|
has, err := db.GetEngine(ctx).ID(id).Get(bean) |
|
|
|
|
if err != nil { |
|
|
|
|
return nil, err |
|
|
|
|
} else if !has { |
|
|
|
|
return nil, ErrWebhookNotExist{ID: bean.ID} |
|
|
|
|
return nil, ErrWebhookNotExist{ID: id} |
|
|
|
|
} |
|
|
|
|
return bean, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// GetWebhookByID returns webhook of repository by given ID.
|
|
|
|
|
func GetWebhookByID(ctx context.Context, id int64) (*Webhook, error) { |
|
|
|
|
return getWebhook(ctx, &Webhook{ |
|
|
|
|
ID: id, |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// GetWebhookByRepoID returns webhook of repository by given ID.
|
|
|
|
|
func GetWebhookByRepoID(ctx context.Context, repoID, id int64) (*Webhook, error) { |
|
|
|
|
return getWebhook(ctx, &Webhook{ |
|
|
|
|
ID: id, |
|
|
|
|
RepoID: repoID, |
|
|
|
|
}) |
|
|
|
|
webhook := new(Webhook) |
|
|
|
|
has, err := db.GetEngine(ctx).Where("id=? AND repo_id=?", id, repoID).Get(webhook) |
|
|
|
|
if err != nil { |
|
|
|
|
return nil, err |
|
|
|
|
} else if !has { |
|
|
|
|
return nil, ErrWebhookNotExist{ID: id} |
|
|
|
|
} |
|
|
|
|
return webhook, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// GetWebhookByOwnerID returns webhook of a user or organization by given ID.
|
|
|
|
|
func GetWebhookByOwnerID(ctx context.Context, ownerID, id int64) (*Webhook, error) { |
|
|
|
|
return getWebhook(ctx, &Webhook{ |
|
|
|
|
ID: id, |
|
|
|
|
OwnerID: ownerID, |
|
|
|
|
}) |
|
|
|
|
webhook := new(Webhook) |
|
|
|
|
has, err := db.GetEngine(ctx).Where("id=? AND owner_id=?", id, ownerID).Get(webhook) |
|
|
|
|
if err != nil { |
|
|
|
|
return nil, err |
|
|
|
|
} else if !has { |
|
|
|
|
return nil, ErrWebhookNotExist{ID: id} |
|
|
|
|
} |
|
|
|
|
return webhook, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// ListWebhookOptions are options to filter webhooks on ListWebhooksByOpts
|
|
|
|
@ -461,20 +462,20 @@ func UpdateWebhookLastStatus(ctx context.Context, w *Webhook) error { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// deleteWebhook uses argument bean as query condition,
|
|
|
|
|
// DeleteWebhookByID uses argument bean as query condition,
|
|
|
|
|
// ID must be specified and do not assign unnecessary fields.
|
|
|
|
|
func deleteWebhook(ctx context.Context, bean *Webhook) (err error) { |
|
|
|
|
func DeleteWebhookByID(ctx context.Context, id int64) (err error) { |
|
|
|
|
ctx, committer, err := db.TxContext(ctx) |
|
|
|
|
if err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
defer committer.Close() |
|
|
|
|
|
|
|
|
|
if count, err := db.DeleteByBean(ctx, bean); err != nil { |
|
|
|
|
if count, err := db.DeleteByID(ctx, id, new(Webhook)); err != nil { |
|
|
|
|
return err |
|
|
|
|
} else if count == 0 { |
|
|
|
|
return ErrWebhookNotExist{ID: bean.ID} |
|
|
|
|
} else if _, err = db.DeleteByBean(ctx, &HookTask{HookID: bean.ID}); err != nil { |
|
|
|
|
return ErrWebhookNotExist{ID: id} |
|
|
|
|
} else if _, err = db.DeleteByBean(ctx, &HookTask{HookID: id}); err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -483,16 +484,16 @@ func deleteWebhook(ctx context.Context, bean *Webhook) (err error) { |
|
|
|
|
|
|
|
|
|
// DeleteWebhookByRepoID deletes webhook of repository by given ID.
|
|
|
|
|
func DeleteWebhookByRepoID(ctx context.Context, repoID, id int64) error { |
|
|
|
|
return deleteWebhook(ctx, &Webhook{ |
|
|
|
|
ID: id, |
|
|
|
|
RepoID: repoID, |
|
|
|
|
}) |
|
|
|
|
if _, err := GetWebhookByRepoID(ctx, repoID, id); err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
return DeleteWebhookByID(ctx, id) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// DeleteWebhookByOwnerID deletes webhook of a user or organization by given ID.
|
|
|
|
|
func DeleteWebhookByOwnerID(ctx context.Context, ownerID, id int64) error { |
|
|
|
|
return deleteWebhook(ctx, &Webhook{ |
|
|
|
|
ID: id, |
|
|
|
|
OwnerID: ownerID, |
|
|
|
|
}) |
|
|
|
|
if _, err := GetWebhookByOwnerID(ctx, ownerID, id); err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
return DeleteWebhookByID(ctx, id) |
|
|
|
|
} |
|
|
|
|