From 14c74f6566b1c08a21718ccbfef2d98038d53afc Mon Sep 17 00:00:00 2001 From: Lakhan Samani Date: Fri, 15 Jul 2022 10:12:24 +0530 Subject: [PATCH] feat: add email template schema --- server/db/models/email_templates.go | 32 ++ server/db/models/model.go | 2 + server/db/models/webhook.go | 1 + server/db/models/webhook_log.go | 1 + .../db/providers/arangodb/email_template.go | 48 ++ .../providers/cassandradb/email_template.go | 48 ++ server/db/providers/mongodb/email_template.go | 48 ++ .../provider_template/email_template.go | 48 ++ server/db/providers/providers.go | 13 + server/db/providers/sql/email_template.go | 48 ++ server/graph/generated/generated.go | 441 ++++++++++++++++++ server/graph/model/models_gen.go | 13 + server/graph/schema.graphqls | 13 + 13 files changed, 756 insertions(+) create mode 100644 server/db/models/email_templates.go create mode 100644 server/db/providers/arangodb/email_template.go create mode 100644 server/db/providers/cassandradb/email_template.go create mode 100644 server/db/providers/mongodb/email_template.go create mode 100644 server/db/providers/provider_template/email_template.go create mode 100644 server/db/providers/sql/email_template.go diff --git a/server/db/models/email_templates.go b/server/db/models/email_templates.go new file mode 100644 index 0000000..6aedbd2 --- /dev/null +++ b/server/db/models/email_templates.go @@ -0,0 +1,32 @@ +package models + +import ( + "strings" + + "github.com/authorizerdev/authorizer/server/graph/model" +) + +// EmailTemplate model for database +type EmailTemplate struct { + Key string `json:"_key,omitempty" bson:"_key,omitempty" cql:"_key,omitempty"` // for arangodb + ID string `gorm:"primaryKey;type:char(36)" json:"_id" bson:"_id" cql:"id"` + EventName string `gorm:"unique" json:"event_name" bson:"event_name" cql:"event_name"` + Template string `gorm:"type:text" json:"endpoint" bson:"endpoint" cql:"endpoint"` + CreatedAt int64 `json:"created_at" bson:"created_at" cql:"created_at"` + UpdatedAt int64 `json:"updated_at" bson:"updated_at" cql:"updated_at"` +} + +// AsAPIEmailTemplate to return email template as graphql response object +func (e *EmailTemplate) AsAPIEmailTemplate() *model.EmailTemplate { + id := e.ID + if strings.Contains(id, Collections.EmailTemplate+"/") { + id = strings.TrimPrefix(id, Collections.EmailTemplate+"/") + } + return &model.EmailTemplate{ + ID: id, + EventName: e.EventName, + Template: e.Template, + CreatedAt: &e.CreatedAt, + UpdatedAt: &e.UpdatedAt, + } +} diff --git a/server/db/models/model.go b/server/db/models/model.go index 4dbda36..bdbdaa3 100644 --- a/server/db/models/model.go +++ b/server/db/models/model.go @@ -8,6 +8,7 @@ type CollectionList struct { Env string Webhook string WebhookLog string + EmailTemplate string } var ( @@ -21,5 +22,6 @@ var ( Env: Prefix + "env", Webhook: Prefix + "webhook", WebhookLog: Prefix + "webhook_log", + EmailTemplate: Prefix + "email_template", } ) diff --git a/server/db/models/webhook.go b/server/db/models/webhook.go index 8cd5108..620595d 100644 --- a/server/db/models/webhook.go +++ b/server/db/models/webhook.go @@ -21,6 +21,7 @@ type Webhook struct { UpdatedAt int64 `json:"updated_at" bson:"updated_at" cql:"updated_at"` } +// AsAPIWebhook to return webhook as graphql response object func (w *Webhook) AsAPIWebhook() *model.Webhook { headersMap := make(map[string]interface{}) json.Unmarshal([]byte(w.Headers), &headersMap) diff --git a/server/db/models/webhook_log.go b/server/db/models/webhook_log.go index f8765f3..3620dda 100644 --- a/server/db/models/webhook_log.go +++ b/server/db/models/webhook_log.go @@ -20,6 +20,7 @@ type WebhookLog struct { UpdatedAt int64 `json:"updated_at" bson:"updated_at" cql:"updated_at"` } +// AsAPIWebhookLog to return webhook log as graphql response object func (w *WebhookLog) AsAPIWebhookLog() *model.WebhookLog { id := w.ID if strings.Contains(id, Collections.WebhookLog+"/") { diff --git a/server/db/providers/arangodb/email_template.go b/server/db/providers/arangodb/email_template.go new file mode 100644 index 0000000..6e1f25a --- /dev/null +++ b/server/db/providers/arangodb/email_template.go @@ -0,0 +1,48 @@ +package arangodb + +import ( + "context" + "time" + + "github.com/authorizerdev/authorizer/server/db/models" + "github.com/authorizerdev/authorizer/server/graph/model" + "github.com/google/uuid" +) + +// AddEmailTemplate to add EmailTemplate +func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { + if emailTemplate.ID == "" { + emailTemplate.ID = uuid.New().String() + } + + emailTemplate.Key = emailTemplate.ID + emailTemplate.CreatedAt = time.Now().Unix() + emailTemplate.UpdatedAt = time.Now().Unix() + return emailTemplate.AsAPIEmailTemplate(), nil +} + +// UpdateEmailTemplate to update EmailTemplate +func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { + emailTemplate.UpdatedAt = time.Now().Unix() + return emailTemplate.AsAPIEmailTemplate(), nil +} + +// ListEmailTemplates to list EmailTemplate +func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagination) (*model.EmailTemplates, error) { + return nil, nil +} + +// GetEmailTemplateByID to get EmailTemplate by id +func (p *provider) GetEmailTemplateByID(ctx context.Context, EmailTemplateID string) (*model.EmailTemplate, error) { + return nil, nil +} + +// GetEmailTemplateByEventName to get EmailTemplate by event_name +func (p *provider) GetEmailTemplateByEventName(ctx context.Context, eventName string) (*model.EmailTemplate, error) { + return nil, nil +} + +// DeleteEmailTemplate to delete EmailTemplate +func (p *provider) DeleteEmailTemplate(ctx context.Context, EmailTemplate *model.EmailTemplate) error { + return nil +} diff --git a/server/db/providers/cassandradb/email_template.go b/server/db/providers/cassandradb/email_template.go new file mode 100644 index 0000000..4808c0e --- /dev/null +++ b/server/db/providers/cassandradb/email_template.go @@ -0,0 +1,48 @@ +package cassandradb + +import ( + "context" + "time" + + "github.com/authorizerdev/authorizer/server/db/models" + "github.com/authorizerdev/authorizer/server/graph/model" + "github.com/google/uuid" +) + +// AddEmailTemplate to add EmailTemplate +func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { + if emailTemplate.ID == "" { + emailTemplate.ID = uuid.New().String() + } + + emailTemplate.Key = emailTemplate.ID + emailTemplate.CreatedAt = time.Now().Unix() + emailTemplate.UpdatedAt = time.Now().Unix() + return emailTemplate.AsAPIEmailTemplate(), nil +} + +// UpdateEmailTemplate to update EmailTemplate +func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { + emailTemplate.UpdatedAt = time.Now().Unix() + return emailTemplate.AsAPIEmailTemplate(), nil +} + +// ListEmailTemplates to list EmailTemplate +func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagination) (*model.EmailTemplates, error) { + return nil, nil +} + +// GetEmailTemplateByID to get EmailTemplate by id +func (p *provider) GetEmailTemplateByID(ctx context.Context, EmailTemplateID string) (*model.EmailTemplate, error) { + return nil, nil +} + +// GetEmailTemplateByEventName to get EmailTemplate by event_name +func (p *provider) GetEmailTemplateByEventName(ctx context.Context, eventName string) (*model.EmailTemplate, error) { + return nil, nil +} + +// DeleteEmailTemplate to delete EmailTemplate +func (p *provider) DeleteEmailTemplate(ctx context.Context, EmailTemplate *model.EmailTemplate) error { + return nil +} diff --git a/server/db/providers/mongodb/email_template.go b/server/db/providers/mongodb/email_template.go new file mode 100644 index 0000000..2f29f42 --- /dev/null +++ b/server/db/providers/mongodb/email_template.go @@ -0,0 +1,48 @@ +package mongodb + +import ( + "context" + "time" + + "github.com/authorizerdev/authorizer/server/db/models" + "github.com/authorizerdev/authorizer/server/graph/model" + "github.com/google/uuid" +) + +// AddEmailTemplate to add EmailTemplate +func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { + if emailTemplate.ID == "" { + emailTemplate.ID = uuid.New().String() + } + + emailTemplate.Key = emailTemplate.ID + emailTemplate.CreatedAt = time.Now().Unix() + emailTemplate.UpdatedAt = time.Now().Unix() + return emailTemplate.AsAPIEmailTemplate(), nil +} + +// UpdateEmailTemplate to update EmailTemplate +func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { + emailTemplate.UpdatedAt = time.Now().Unix() + return emailTemplate.AsAPIEmailTemplate(), nil +} + +// ListEmailTemplates to list EmailTemplate +func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagination) (*model.EmailTemplates, error) { + return nil, nil +} + +// GetEmailTemplateByID to get EmailTemplate by id +func (p *provider) GetEmailTemplateByID(ctx context.Context, EmailTemplateID string) (*model.EmailTemplate, error) { + return nil, nil +} + +// GetEmailTemplateByEventName to get EmailTemplate by event_name +func (p *provider) GetEmailTemplateByEventName(ctx context.Context, eventName string) (*model.EmailTemplate, error) { + return nil, nil +} + +// DeleteEmailTemplate to delete EmailTemplate +func (p *provider) DeleteEmailTemplate(ctx context.Context, EmailTemplate *model.EmailTemplate) error { + return nil +} diff --git a/server/db/providers/provider_template/email_template.go b/server/db/providers/provider_template/email_template.go new file mode 100644 index 0000000..6170a70 --- /dev/null +++ b/server/db/providers/provider_template/email_template.go @@ -0,0 +1,48 @@ +package provider_template + +import ( + "context" + "time" + + "github.com/authorizerdev/authorizer/server/db/models" + "github.com/authorizerdev/authorizer/server/graph/model" + "github.com/google/uuid" +) + +// AddEmailTemplate to add EmailTemplate +func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { + if emailTemplate.ID == "" { + emailTemplate.ID = uuid.New().String() + } + + emailTemplate.Key = emailTemplate.ID + emailTemplate.CreatedAt = time.Now().Unix() + emailTemplate.UpdatedAt = time.Now().Unix() + return emailTemplate.AsAPIEmailTemplate(), nil +} + +// UpdateEmailTemplate to update EmailTemplate +func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { + emailTemplate.UpdatedAt = time.Now().Unix() + return emailTemplate.AsAPIEmailTemplate(), nil +} + +// ListEmailTemplates to list EmailTemplate +func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagination) (*model.EmailTemplates, error) { + return nil, nil +} + +// GetEmailTemplateByID to get EmailTemplate by id +func (p *provider) GetEmailTemplateByID(ctx context.Context, EmailTemplateID string) (*model.EmailTemplate, error) { + return nil, nil +} + +// GetEmailTemplateByEventName to get EmailTemplate by event_name +func (p *provider) GetEmailTemplateByEventName(ctx context.Context, eventName string) (*model.EmailTemplate, error) { + return nil, nil +} + +// DeleteEmailTemplate to delete EmailTemplate +func (p *provider) DeleteEmailTemplate(ctx context.Context, EmailTemplate *model.EmailTemplate) error { + return nil +} diff --git a/server/db/providers/providers.go b/server/db/providers/providers.go index bd116ee..6f8c074 100644 --- a/server/db/providers/providers.go +++ b/server/db/providers/providers.go @@ -59,4 +59,17 @@ type Provider interface { AddWebhookLog(ctx context.Context, webhookLog models.WebhookLog) (*model.WebhookLog, error) // ListWebhookLogs to list webhook logs ListWebhookLogs(ctx context.Context, pagination model.Pagination, webhookID string) (*model.WebhookLogs, error) + + // AddEmailTemplate to add EmailTemplate + AddEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) + // UpdateEmailTemplate to update EmailTemplate + UpdateEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) + // ListEmailTemplates to list EmailTemplate + ListEmailTemplate(ctx context.Context, pagination model.Pagination) (*model.EmailTemplates, error) + // GetEmailTemplateByID to get EmailTemplate by id + GetEmailTemplateByID(ctx context.Context, emailTemplateID string) (*model.EmailTemplate, error) + // GetEmailTemplateByEventName to get EmailTemplate by event_name + GetEmailTemplateByEventName(ctx context.Context, eventName string) (*model.EmailTemplate, error) + // DeleteEmailTemplate to delete EmailTemplate + DeleteEmailTemplate(ctx context.Context, emailTemplate *model.EmailTemplate) error } diff --git a/server/db/providers/sql/email_template.go b/server/db/providers/sql/email_template.go new file mode 100644 index 0000000..952c728 --- /dev/null +++ b/server/db/providers/sql/email_template.go @@ -0,0 +1,48 @@ +package sql + +import ( + "context" + "time" + + "github.com/authorizerdev/authorizer/server/db/models" + "github.com/authorizerdev/authorizer/server/graph/model" + "github.com/google/uuid" +) + +// AddEmailTemplate to add EmailTemplate +func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { + if emailTemplate.ID == "" { + emailTemplate.ID = uuid.New().String() + } + + emailTemplate.Key = emailTemplate.ID + emailTemplate.CreatedAt = time.Now().Unix() + emailTemplate.UpdatedAt = time.Now().Unix() + return emailTemplate.AsAPIEmailTemplate(), nil +} + +// UpdateEmailTemplate to update EmailTemplate +func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { + emailTemplate.UpdatedAt = time.Now().Unix() + return emailTemplate.AsAPIEmailTemplate(), nil +} + +// ListEmailTemplates to list EmailTemplate +func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagination) (*model.EmailTemplates, error) { + return nil, nil +} + +// GetEmailTemplateByID to get EmailTemplate by id +func (p *provider) GetEmailTemplateByID(ctx context.Context, EmailTemplateID string) (*model.EmailTemplate, error) { + return nil, nil +} + +// GetEmailTemplateByEventName to get EmailTemplate by event_name +func (p *provider) GetEmailTemplateByEventName(ctx context.Context, eventName string) (*model.EmailTemplate, error) { + return nil, nil +} + +// DeleteEmailTemplate to delete EmailTemplate +func (p *provider) DeleteEmailTemplate(ctx context.Context, EmailTemplate *model.EmailTemplate) error { + return nil +} diff --git a/server/graph/generated/generated.go b/server/graph/generated/generated.go index 736f0f1..dbe9503 100644 --- a/server/graph/generated/generated.go +++ b/server/graph/generated/generated.go @@ -52,6 +52,19 @@ type ComplexityRoot struct { User func(childComplexity int) int } + EmailTemplate struct { + CreatedAt func(childComplexity int) int + EventName func(childComplexity int) int + ID func(childComplexity int) int + Template func(childComplexity int) int + UpdatedAt func(childComplexity int) int + } + + EmailTemplates struct { + EmailTemplates func(childComplexity int) int + Pagination func(childComplexity int) int + } + Env struct { AccessTokenExpiryTime func(childComplexity int) int AdminSecret func(childComplexity int) int @@ -361,6 +374,55 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.AuthResponse.User(childComplexity), true + case "EmailTemplate.created_at": + if e.complexity.EmailTemplate.CreatedAt == nil { + break + } + + return e.complexity.EmailTemplate.CreatedAt(childComplexity), true + + case "EmailTemplate.event_name": + if e.complexity.EmailTemplate.EventName == nil { + break + } + + return e.complexity.EmailTemplate.EventName(childComplexity), true + + case "EmailTemplate.id": + if e.complexity.EmailTemplate.ID == nil { + break + } + + return e.complexity.EmailTemplate.ID(childComplexity), true + + case "EmailTemplate.template": + if e.complexity.EmailTemplate.Template == nil { + break + } + + return e.complexity.EmailTemplate.Template(childComplexity), true + + case "EmailTemplate.updated_at": + if e.complexity.EmailTemplate.UpdatedAt == nil { + break + } + + return e.complexity.EmailTemplate.UpdatedAt(childComplexity), true + + case "EmailTemplates.EmailTemplates": + if e.complexity.EmailTemplates.EmailTemplates == nil { + break + } + + return e.complexity.EmailTemplates.EmailTemplates(childComplexity), true + + case "EmailTemplates.pagination": + if e.complexity.EmailTemplates.Pagination == nil { + break + } + + return e.complexity.EmailTemplates.Pagination(childComplexity), true + case "Env.ACCESS_TOKEN_EXPIRY_TIME": if e.complexity.Env.AccessTokenExpiryTime == nil { break @@ -2025,6 +2087,19 @@ type TestEndpointResponse { response: Map } +type EmailTemplate { + id: ID! + event_name: String! + template: String! + created_at: Int64 + updated_at: Int64 +} + +type EmailTemplates { + pagination: Pagination! + EmailTemplates: [EmailTemplate!]! +} + input ListWebhookLogRequest { pagination: PaginationInput webhook_id: String @@ -2793,6 +2868,245 @@ func (ec *executionContext) _AuthResponse_user(ctx context.Context, field graphq return ec.marshalOUser2ᚖgithubᚗcomᚋauthorizerdevᚋauthorizerᚋserverᚋgraphᚋmodelᚐUser(ctx, field.Selections, res) } +func (ec *executionContext) _EmailTemplate_id(ctx context.Context, field graphql.CollectedField, obj *model.EmailTemplate) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "EmailTemplate", + Field: field, + Args: nil, + IsMethod: false, + IsResolver: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.ID, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNID2string(ctx, field.Selections, res) +} + +func (ec *executionContext) _EmailTemplate_event_name(ctx context.Context, field graphql.CollectedField, obj *model.EmailTemplate) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "EmailTemplate", + Field: field, + Args: nil, + IsMethod: false, + IsResolver: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.EventName, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) _EmailTemplate_template(ctx context.Context, field graphql.CollectedField, obj *model.EmailTemplate) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "EmailTemplate", + Field: field, + Args: nil, + IsMethod: false, + IsResolver: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Template, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) _EmailTemplate_created_at(ctx context.Context, field graphql.CollectedField, obj *model.EmailTemplate) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "EmailTemplate", + Field: field, + Args: nil, + IsMethod: false, + IsResolver: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.CreatedAt, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*int64) + fc.Result = res + return ec.marshalOInt642ᚖint64(ctx, field.Selections, res) +} + +func (ec *executionContext) _EmailTemplate_updated_at(ctx context.Context, field graphql.CollectedField, obj *model.EmailTemplate) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "EmailTemplate", + Field: field, + Args: nil, + IsMethod: false, + IsResolver: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.UpdatedAt, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*int64) + fc.Result = res + return ec.marshalOInt642ᚖint64(ctx, field.Selections, res) +} + +func (ec *executionContext) _EmailTemplates_pagination(ctx context.Context, field graphql.CollectedField, obj *model.EmailTemplates) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "EmailTemplates", + Field: field, + Args: nil, + IsMethod: false, + IsResolver: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Pagination, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(*model.Pagination) + fc.Result = res + return ec.marshalNPagination2ᚖgithubᚗcomᚋauthorizerdevᚋauthorizerᚋserverᚋgraphᚋmodelᚐPagination(ctx, field.Selections, res) +} + +func (ec *executionContext) _EmailTemplates_EmailTemplates(ctx context.Context, field graphql.CollectedField, obj *model.EmailTemplates) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "EmailTemplates", + Field: field, + Args: nil, + IsMethod: false, + IsResolver: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.EmailTemplates, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]*model.EmailTemplate) + fc.Result = res + return ec.marshalNEmailTemplate2ᚕᚖgithubᚗcomᚋauthorizerdevᚋauthorizerᚋserverᚋgraphᚋmodelᚐEmailTemplateᚄ(ctx, field.Selections, res) +} + func (ec *executionContext) _Env_ACCESS_TOKEN_EXPIRY_TIME(ctx context.Context, field graphql.CollectedField, obj *model.Env) (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { @@ -10896,6 +11210,79 @@ func (ec *executionContext) _AuthResponse(ctx context.Context, sel ast.Selection return out } +var emailTemplateImplementors = []string{"EmailTemplate"} + +func (ec *executionContext) _EmailTemplate(ctx context.Context, sel ast.SelectionSet, obj *model.EmailTemplate) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, emailTemplateImplementors) + + out := graphql.NewFieldSet(fields) + var invalids uint32 + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("EmailTemplate") + case "id": + out.Values[i] = ec._EmailTemplate_id(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + case "event_name": + out.Values[i] = ec._EmailTemplate_event_name(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + case "template": + out.Values[i] = ec._EmailTemplate_template(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + case "created_at": + out.Values[i] = ec._EmailTemplate_created_at(ctx, field, obj) + case "updated_at": + out.Values[i] = ec._EmailTemplate_updated_at(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch() + if invalids > 0 { + return graphql.Null + } + return out +} + +var emailTemplatesImplementors = []string{"EmailTemplates"} + +func (ec *executionContext) _EmailTemplates(ctx context.Context, sel ast.SelectionSet, obj *model.EmailTemplates) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, emailTemplatesImplementors) + + out := graphql.NewFieldSet(fields) + var invalids uint32 + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("EmailTemplates") + case "pagination": + out.Values[i] = ec._EmailTemplates_pagination(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + case "EmailTemplates": + out.Values[i] = ec._EmailTemplates_EmailTemplates(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch() + if invalids > 0 { + return graphql.Null + } + return out +} + var envImplementors = []string{"Env"} func (ec *executionContext) _Env(ctx context.Context, sel ast.SelectionSet, obj *model.Env) graphql.Marshaler { @@ -12256,6 +12643,60 @@ func (ec *executionContext) unmarshalNDeleteUserInput2githubᚗcomᚋauthorizerd return res, graphql.ErrorOnPath(ctx, err) } +func (ec *executionContext) marshalNEmailTemplate2ᚕᚖgithubᚗcomᚋauthorizerdevᚋauthorizerᚋserverᚋgraphᚋmodelᚐEmailTemplateᚄ(ctx context.Context, sel ast.SelectionSet, v []*model.EmailTemplate) graphql.Marshaler { + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalNEmailTemplate2ᚖgithubᚗcomᚋauthorizerdevᚋauthorizerᚋserverᚋgraphᚋmodelᚐEmailTemplate(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + + for _, e := range ret { + if e == graphql.Null { + return graphql.Null + } + } + + return ret +} + +func (ec *executionContext) marshalNEmailTemplate2ᚖgithubᚗcomᚋauthorizerdevᚋauthorizerᚋserverᚋgraphᚋmodelᚐEmailTemplate(ctx context.Context, sel ast.SelectionSet, v *model.EmailTemplate) graphql.Marshaler { + if v == nil { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + return ec._EmailTemplate(ctx, sel, v) +} + func (ec *executionContext) marshalNEnv2githubᚗcomᚋauthorizerdevᚋauthorizerᚋserverᚋgraphᚋmodelᚐEnv(ctx context.Context, sel ast.SelectionSet, v model.Env) graphql.Marshaler { return ec._Env(ctx, sel, &v) } diff --git a/server/graph/model/models_gen.go b/server/graph/model/models_gen.go index 7e2c0ed..30747dd 100644 --- a/server/graph/model/models_gen.go +++ b/server/graph/model/models_gen.go @@ -30,6 +30,19 @@ type DeleteUserInput struct { Email string `json:"email"` } +type EmailTemplate struct { + ID string `json:"id"` + EventName string `json:"event_name"` + Template string `json:"template"` + CreatedAt *int64 `json:"created_at"` + UpdatedAt *int64 `json:"updated_at"` +} + +type EmailTemplates struct { + Pagination *Pagination `json:"pagination"` + EmailTemplates []*EmailTemplate `json:"EmailTemplates"` +} + type Env struct { AccessTokenExpiryTime *string `json:"ACCESS_TOKEN_EXPIRY_TIME"` AdminSecret *string `json:"ADMIN_SECRET"` diff --git a/server/graph/schema.graphqls b/server/graph/schema.graphqls index 3930f51..3d02d5b 100644 --- a/server/graph/schema.graphqls +++ b/server/graph/schema.graphqls @@ -354,6 +354,19 @@ type TestEndpointResponse { response: Map } +type EmailTemplate { + id: ID! + event_name: String! + template: String! + created_at: Int64 + updated_at: Int64 +} + +type EmailTemplates { + pagination: Pagination! + EmailTemplates: [EmailTemplate!]! +} + input ListWebhookLogRequest { pagination: PaginationInput webhook_id: String