From e2294c24d05ef4ab509f3f5c51a9630c24dfbfd9 Mon Sep 17 00:00:00 2001 From: Lakhan Samani Date: Fri, 15 Jul 2022 12:35:35 +0530 Subject: [PATCH] feat: add email template implementation for sql provider --- .../provider_template/email_template.go | 4 +- server/db/providers/sql/email_template.go | 62 +++++++++++++++++-- 2 files changed, 59 insertions(+), 7 deletions(-) diff --git a/server/db/providers/provider_template/email_template.go b/server/db/providers/provider_template/email_template.go index 6170a70..e6a1f50 100644 --- a/server/db/providers/provider_template/email_template.go +++ b/server/db/providers/provider_template/email_template.go @@ -33,7 +33,7 @@ func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagin } // GetEmailTemplateByID to get EmailTemplate by id -func (p *provider) GetEmailTemplateByID(ctx context.Context, EmailTemplateID string) (*model.EmailTemplate, error) { +func (p *provider) GetEmailTemplateByID(ctx context.Context, emailTemplateID string) (*model.EmailTemplate, error) { return nil, nil } @@ -43,6 +43,6 @@ func (p *provider) GetEmailTemplateByEventName(ctx context.Context, eventName st } // DeleteEmailTemplate to delete EmailTemplate -func (p *provider) DeleteEmailTemplate(ctx context.Context, EmailTemplate *model.EmailTemplate) error { +func (p *provider) DeleteEmailTemplate(ctx context.Context, emailTemplate *model.EmailTemplate) error { return nil } diff --git a/server/db/providers/sql/email_template.go b/server/db/providers/sql/email_template.go index 952c728..1a8e0d2 100644 --- a/server/db/providers/sql/email_template.go +++ b/server/db/providers/sql/email_template.go @@ -18,31 +18,83 @@ func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate models.Em emailTemplate.Key = emailTemplate.ID emailTemplate.CreatedAt = time.Now().Unix() emailTemplate.UpdatedAt = time.Now().Unix() + + res := p.db.Create(&emailTemplate) + if res.Error != nil { + return nil, res.Error + } 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() + + res := p.db.Save(&emailTemplate) + if res.Error != nil { + return nil, res.Error + } return emailTemplate.AsAPIEmailTemplate(), nil } // ListEmailTemplates to list EmailTemplate func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagination) (*model.EmailTemplates, error) { - return nil, nil + var emailTemplates []models.EmailTemplate + + result := p.db.Limit(int(pagination.Limit)).Offset(int(pagination.Offset)).Order("created_at DESC").Find(&emailTemplates) + if result.Error != nil { + return nil, result.Error + } + + var total int64 + totalRes := p.db.Model(&models.EmailTemplate{}).Count(&total) + if totalRes.Error != nil { + return nil, totalRes.Error + } + + paginationClone := pagination + paginationClone.Total = total + + responseEmailTemplates := []*model.EmailTemplate{} + for _, w := range emailTemplates { + responseEmailTemplates = append(responseEmailTemplates, w.AsAPIEmailTemplate()) + } + return &model.EmailTemplates{ + Pagination: &paginationClone, + EmailTemplates: responseEmailTemplates, + }, nil } // GetEmailTemplateByID to get EmailTemplate by id -func (p *provider) GetEmailTemplateByID(ctx context.Context, EmailTemplateID string) (*model.EmailTemplate, error) { - return nil, nil +func (p *provider) GetEmailTemplateByID(ctx context.Context, emailTemplateID string) (*model.EmailTemplate, error) { + var emailTemplate models.EmailTemplate + + result := p.db.Where("id = ?", emailTemplateID).First(&emailTemplate) + if result.Error != nil { + return nil, result.Error + } + return emailTemplate.AsAPIEmailTemplate(), nil } // GetEmailTemplateByEventName to get EmailTemplate by event_name func (p *provider) GetEmailTemplateByEventName(ctx context.Context, eventName string) (*model.EmailTemplate, error) { - return nil, nil + var emailTemplate models.EmailTemplate + + result := p.db.Where("event_name = ?", eventName).First(&emailTemplate) + if result.Error != nil { + return nil, result.Error + } + return emailTemplate.AsAPIEmailTemplate(), nil } // DeleteEmailTemplate to delete EmailTemplate -func (p *provider) DeleteEmailTemplate(ctx context.Context, EmailTemplate *model.EmailTemplate) error { +func (p *provider) DeleteEmailTemplate(ctx context.Context, emailTemplate *model.EmailTemplate) error { + result := p.db.Delete(&models.EmailTemplate{ + ID: emailTemplate.ID, + }) + if result.Error != nil { + return result.Error + } + return nil }