mirror of
https://github.com/zitadel/zitadel.git
synced 2025-11-13 10:04:15 +00:00
feat: e-mail templates (#1158)
* View definition added * Get templates and texts from the database. * Fill in texts in templates * Fill in texts in templates * Client API added * Weekly backup * Weekly backup * Daily backup * Weekly backup * Tests added * Corrections from merge branch * Fixes from pull request review
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
package view
|
||||
|
||||
import (
|
||||
"github.com/caos/zitadel/internal/errors"
|
||||
"github.com/caos/zitadel/internal/eventstore/models"
|
||||
"github.com/caos/zitadel/internal/iam/repository/view"
|
||||
"github.com/caos/zitadel/internal/iam/repository/view/model"
|
||||
global_view "github.com/caos/zitadel/internal/view/repository"
|
||||
)
|
||||
|
||||
const (
|
||||
mailTemplateTable = "management.mail_templates"
|
||||
)
|
||||
|
||||
func (v *View) MailTemplateByAggregateID(aggregateID string) (*model.MailTemplateView, error) {
|
||||
return view.GetMailTemplateByAggregateID(v.Db, mailTemplateTable, aggregateID)
|
||||
}
|
||||
|
||||
func (v *View) PutMailTemplate(template *model.MailTemplateView, event *models.Event) error {
|
||||
err := view.PutMailTemplate(v.Db, mailTemplateTable, template)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return v.ProcessedMailTemplateSequence(event)
|
||||
}
|
||||
|
||||
func (v *View) DeleteMailTemplate(aggregateID string, event *models.Event) error {
|
||||
err := view.DeleteMailTemplate(v.Db, mailTemplateTable, aggregateID)
|
||||
if err != nil && !errors.IsNotFound(err) {
|
||||
return err
|
||||
}
|
||||
return v.ProcessedMailTemplateSequence(event)
|
||||
}
|
||||
|
||||
func (v *View) GetLatestMailTemplateSequence(aggregateType string) (*global_view.CurrentSequence, error) {
|
||||
return v.latestSequence(mailTemplateTable, aggregateType)
|
||||
}
|
||||
|
||||
func (v *View) ProcessedMailTemplateSequence(event *models.Event) error {
|
||||
return v.saveCurrentSequence(mailTemplateTable, event)
|
||||
}
|
||||
|
||||
func (v *View) UpdateMailTemplateSpoolerRunTimestamp() error {
|
||||
return v.updateSpoolerRunSequence(mailTemplateTable)
|
||||
}
|
||||
|
||||
func (v *View) GetLatestMailTemplateFailedEvent(sequence uint64) (*global_view.FailedEvent, error) {
|
||||
return v.latestFailedEvent(mailTemplateTable, sequence)
|
||||
}
|
||||
|
||||
func (v *View) ProcessedMailTemplateFailedEvent(failedEvent *global_view.FailedEvent) error {
|
||||
return v.saveFailedEvent(failedEvent)
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package view
|
||||
|
||||
import (
|
||||
"github.com/caos/zitadel/internal/errors"
|
||||
"github.com/caos/zitadel/internal/eventstore/models"
|
||||
"github.com/caos/zitadel/internal/iam/repository/view"
|
||||
"github.com/caos/zitadel/internal/iam/repository/view/model"
|
||||
global_view "github.com/caos/zitadel/internal/view/repository"
|
||||
)
|
||||
|
||||
const (
|
||||
mailTextTable = "management.mail_texts"
|
||||
)
|
||||
|
||||
func (v *View) MailTextsByAggregateID(aggregateID string) ([]*model.MailTextView, error) {
|
||||
return view.GetMailTexts(v.Db, mailTextTable, aggregateID)
|
||||
}
|
||||
|
||||
func (v *View) MailTextByIDs(aggregateID string, textType string, language string) (*model.MailTextView, error) {
|
||||
return view.GetMailTextByIDs(v.Db, mailTextTable, aggregateID, textType, language)
|
||||
}
|
||||
|
||||
func (v *View) PutMailText(template *model.MailTextView, event *models.Event) error {
|
||||
err := view.PutMailText(v.Db, mailTextTable, template)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return v.ProcessedMailTextSequence(event)
|
||||
}
|
||||
|
||||
func (v *View) DeleteMailText(aggregateID string, textType string, language string, event *models.Event) error {
|
||||
err := view.DeleteMailText(v.Db, mailTextTable, aggregateID, textType, language)
|
||||
if err != nil && !errors.IsNotFound(err) {
|
||||
return err
|
||||
}
|
||||
return v.ProcessedMailTextSequence(event)
|
||||
}
|
||||
|
||||
func (v *View) GetLatestMailTextSequence(aggregateType string) (*global_view.CurrentSequence, error) {
|
||||
return v.latestSequence(mailTextTable, aggregateType)
|
||||
}
|
||||
|
||||
func (v *View) ProcessedMailTextSequence(event *models.Event) error {
|
||||
return v.saveCurrentSequence(mailTextTable, event)
|
||||
}
|
||||
|
||||
func (v *View) UpdateMailTextSpoolerRunTimestamp() error {
|
||||
return v.updateSpoolerRunSequence(mailTextTable)
|
||||
}
|
||||
|
||||
func (v *View) GetLatestMailTextFailedEvent(sequence uint64) (*global_view.FailedEvent, error) {
|
||||
return v.latestFailedEvent(mailTextTable, sequence)
|
||||
}
|
||||
|
||||
func (v *View) ProcessedMailTextFailedEvent(failedEvent *global_view.FailedEvent) error {
|
||||
return v.saveFailedEvent(failedEvent)
|
||||
}
|
||||
Reference in New Issue
Block a user