feat: add sql database methods for webhook
This commit is contained in:
parent
0ffb3f67f1
commit
e8eb62769e
|
@ -1,5 +1,7 @@
|
||||||
package models
|
package models
|
||||||
|
|
||||||
|
import "github.com/authorizerdev/authorizer/server/graph/model"
|
||||||
|
|
||||||
// Note: any change here should be reflected in providers/casandra/provider.go as it does not have model support in collection creation
|
// Note: any change here should be reflected in providers/casandra/provider.go as it does not have model support in collection creation
|
||||||
|
|
||||||
// Webhook model for db
|
// Webhook model for db
|
||||||
|
@ -12,3 +14,14 @@ type Webhook struct {
|
||||||
CreatedAt int64 `json:"created_at" bson:"created_at" cql:"created_at"`
|
CreatedAt int64 `json:"created_at" bson:"created_at" cql:"created_at"`
|
||||||
UpdatedAt int64 `json:"updated_at" bson:"updated_at" cql:"updated_at"`
|
UpdatedAt int64 `json:"updated_at" bson:"updated_at" cql:"updated_at"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (w *Webhook) AsAPIWebhook() *model.Webhook {
|
||||||
|
return &model.Webhook{
|
||||||
|
ID: w.ID,
|
||||||
|
EventName: &w.EventName,
|
||||||
|
Endpoint: &w.EndPoint,
|
||||||
|
Enabled: &w.Enabled,
|
||||||
|
CreatedAt: &w.CreatedAt,
|
||||||
|
UpdatedAt: &w.UpdatedAt,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -17,15 +17,13 @@ type WebhookLog struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *WebhookLog) AsAPIWebhookLog() *model.WebhookLog {
|
func (w *WebhookLog) AsAPIWebhookLog() *model.WebhookLog {
|
||||||
createdAt := w.CreatedAt
|
|
||||||
updatedAt := w.UpdatedAt
|
|
||||||
return &model.WebhookLog{
|
return &model.WebhookLog{
|
||||||
ID: w.ID,
|
ID: w.ID,
|
||||||
HTTPStatus: &w.HttpStatus,
|
HTTPStatus: &w.HttpStatus,
|
||||||
Response: &w.Response,
|
Response: &w.Response,
|
||||||
Request: &w.Request,
|
Request: &w.Request,
|
||||||
WebhookID: &w.WebhookID,
|
WebhookID: &w.WebhookID,
|
||||||
CreatedAt: &createdAt,
|
CreatedAt: &w.CreatedAt,
|
||||||
UpdatedAt: &updatedAt,
|
UpdatedAt: &w.UpdatedAt,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,8 +36,8 @@ func (p *provider) GetWebhookByID(webhookID string) (models.Webhook, error) {
|
||||||
return models.Webhook{}, nil
|
return models.Webhook{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetWebhookByEvent to get webhook by event_name
|
// GetWebhookByEventName to get webhook by event_name
|
||||||
func (p *provider) GetWebhookByEvent(eventName string) (models.Webhook, error) {
|
func (p *provider) GetWebhookByEventName(eventName string) (models.Webhook, error) {
|
||||||
return models.Webhook{}, nil
|
return models.Webhook{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,8 +36,8 @@ func (p *provider) GetWebhookByID(webhookID string) (models.Webhook, error) {
|
||||||
return models.Webhook{}, nil
|
return models.Webhook{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetWebhookByEvent to get webhook by event_name
|
// GetWebhookByEventName to get webhook by event_name
|
||||||
func (p *provider) GetWebhookByEvent(eventName string) (models.Webhook, error) {
|
func (p *provider) GetWebhookByEventName(eventName string) (models.Webhook, error) {
|
||||||
return models.Webhook{}, nil
|
return models.Webhook{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,8 +36,8 @@ func (p *provider) GetWebhookByID(webhookID string) (models.Webhook, error) {
|
||||||
return models.Webhook{}, nil
|
return models.Webhook{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetWebhookByEvent to get webhook by event_name
|
// GetWebhookByEventName to get webhook by event_name
|
||||||
func (p *provider) GetWebhookByEvent(eventName string) (models.Webhook, error) {
|
func (p *provider) GetWebhookByEventName(eventName string) (models.Webhook, error) {
|
||||||
return models.Webhook{}, nil
|
return models.Webhook{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,8 +36,8 @@ func (p *provider) GetWebhookByID(webhookID string) (models.Webhook, error) {
|
||||||
return models.Webhook{}, nil
|
return models.Webhook{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetWebhookByEvent to get webhook by event_name
|
// GetWebhookByEventName to get webhook by event_name
|
||||||
func (p *provider) GetWebhookByEvent(eventName string) (models.Webhook, error) {
|
func (p *provider) GetWebhookByEventName(eventName string) (models.Webhook, error) {
|
||||||
return models.Webhook{}, nil
|
return models.Webhook{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -50,8 +50,8 @@ type Provider interface {
|
||||||
ListWebhook(pagination model.Pagination) (*model.Webhooks, error)
|
ListWebhook(pagination model.Pagination) (*model.Webhooks, error)
|
||||||
// GetWebhookByID to get webhook by id
|
// GetWebhookByID to get webhook by id
|
||||||
GetWebhookByID(webhookID string) (models.Webhook, error)
|
GetWebhookByID(webhookID string) (models.Webhook, error)
|
||||||
// GetWebhookByEvent to get webhook by event_name
|
// GetWebhookByEventName to get webhook by event_name
|
||||||
GetWebhookByEvent(eventName string) (models.Webhook, error)
|
GetWebhookByEventName(eventName string) (models.Webhook, error)
|
||||||
// DeleteWebhook to delete webhook
|
// DeleteWebhook to delete webhook
|
||||||
DeleteWebhook(webhookID string) error
|
DeleteWebhook(webhookID string) error
|
||||||
|
|
||||||
|
|
|
@ -17,31 +17,80 @@ func (p *provider) AddWebhook(webhook models.Webhook) (models.Webhook, error) {
|
||||||
webhook.Key = webhook.ID
|
webhook.Key = webhook.ID
|
||||||
webhook.CreatedAt = time.Now().Unix()
|
webhook.CreatedAt = time.Now().Unix()
|
||||||
webhook.UpdatedAt = time.Now().Unix()
|
webhook.UpdatedAt = time.Now().Unix()
|
||||||
|
res := p.db.Create(&webhook)
|
||||||
|
if res.Error != nil {
|
||||||
|
return webhook, res.Error
|
||||||
|
}
|
||||||
return webhook, nil
|
return webhook, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateWebhook to update webhook
|
// UpdateWebhook to update webhook
|
||||||
func (p *provider) UpdateWebhook(webhook models.Webhook) (models.Webhook, error) {
|
func (p *provider) UpdateWebhook(webhook models.Webhook) (models.Webhook, error) {
|
||||||
webhook.UpdatedAt = time.Now().Unix()
|
webhook.UpdatedAt = time.Now().Unix()
|
||||||
|
|
||||||
|
result := p.db.Save(&webhook)
|
||||||
|
if result.Error != nil {
|
||||||
|
return webhook, result.Error
|
||||||
|
}
|
||||||
|
|
||||||
return webhook, nil
|
return webhook, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListWebhooks to list webhook
|
// ListWebhooks to list webhook
|
||||||
func (p *provider) ListWebhook(pagination model.Pagination) (*model.Webhooks, error) {
|
func (p *provider) ListWebhook(pagination model.Pagination) (*model.Webhooks, error) {
|
||||||
return nil, nil
|
var webhooks []models.Webhook
|
||||||
|
|
||||||
|
result := p.db.Limit(int(pagination.Limit)).Offset(int(pagination.Offset)).Order("created_at DESC").Find(&webhooks)
|
||||||
|
if result.Error != nil {
|
||||||
|
return nil, result.Error
|
||||||
|
}
|
||||||
|
|
||||||
|
var total int64
|
||||||
|
totalRes := p.db.Model(&models.Webhook{}).Count(&total)
|
||||||
|
if totalRes.Error != nil {
|
||||||
|
return nil, totalRes.Error
|
||||||
|
}
|
||||||
|
|
||||||
|
paginationClone := pagination
|
||||||
|
paginationClone.Total = total
|
||||||
|
|
||||||
|
responseWebhooks := []*model.Webhook{}
|
||||||
|
for _, w := range webhooks {
|
||||||
|
responseWebhooks = append(responseWebhooks, w.AsAPIWebhook())
|
||||||
|
}
|
||||||
|
return &model.Webhooks{
|
||||||
|
Pagination: &paginationClone,
|
||||||
|
Webhooks: responseWebhooks,
|
||||||
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetWebhookByID to get webhook by id
|
// GetWebhookByID to get webhook by id
|
||||||
func (p *provider) GetWebhookByID(webhookID string) (models.Webhook, error) {
|
func (p *provider) GetWebhookByID(webhookID string) (models.Webhook, error) {
|
||||||
return models.Webhook{}, nil
|
var webhook models.Webhook
|
||||||
|
|
||||||
|
result := p.db.Where("id = ?", webhookID).First(webhook)
|
||||||
|
if result.Error != nil {
|
||||||
|
return webhook, result.Error
|
||||||
|
}
|
||||||
|
return webhook, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetWebhookByEvent to get webhook by event_name
|
// GetWebhookByEventName to get webhook by event_name
|
||||||
func (p *provider) GetWebhookByEvent(eventName string) (models.Webhook, error) {
|
func (p *provider) GetWebhookByEventName(eventName string) (models.Webhook, error) {
|
||||||
|
var webhook models.Webhook
|
||||||
|
|
||||||
|
result := p.db.Where("event_name = ?", eventName).First(webhook)
|
||||||
|
if result.Error != nil {
|
||||||
|
return webhook, result.Error
|
||||||
|
}
|
||||||
return models.Webhook{}, nil
|
return models.Webhook{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteWebhook to delete webhook
|
// DeleteWebhook to delete webhook
|
||||||
func (p *provider) DeleteWebhook(webhookID string) error {
|
func (p *provider) DeleteWebhook(webhookID string) error {
|
||||||
|
result := p.db.Delete(&models.Webhook{}, webhookID)
|
||||||
|
if result.Error != nil {
|
||||||
|
return result.Error
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user