mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-08 00:26:37 +08:00
refactor(plugins): restructure admin and message_gateway into standard layered sub-packages
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
// Copyright 2026 Arctel.net
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package service
|
||||
|
||||
import (
|
||||
"Wavelet/plugins/domain/admin/errs"
|
||||
"Wavelet/plugins/domain/admin/model"
|
||||
"Wavelet/plugins/domain/admin/repository"
|
||||
"context"
|
||||
)
|
||||
|
||||
// CreateTemplate persists a new notification template after key collision and field checks.
|
||||
func CreateTemplate(ctx context.Context, req model.CreateTemplateRequest) (model.Template, error) {
|
||||
exists, err := repository.TemplateExistsByKey(ctx, req.Key)
|
||||
if err != nil {
|
||||
return model.Template{}, err
|
||||
}
|
||||
if exists {
|
||||
return model.Template{}, errs.ErrTemplateKeyExists
|
||||
}
|
||||
|
||||
tmpl := model.Template{
|
||||
Key: req.Key,
|
||||
Name: req.Name,
|
||||
Type: req.Type,
|
||||
Subject: req.Subject,
|
||||
Content: req.Content,
|
||||
Description: req.Description,
|
||||
IsSystem: false,
|
||||
}
|
||||
if err := tmpl.Validate(); err != nil {
|
||||
return model.Template{}, err
|
||||
}
|
||||
if err := repository.CreateTemplateRecord(ctx, &tmpl); err != nil {
|
||||
return model.Template{}, err
|
||||
}
|
||||
return tmpl, nil
|
||||
}
|
||||
|
||||
// ListTemplates returns every notification template.
|
||||
func ListTemplates(ctx context.Context) ([]model.Template, error) {
|
||||
return repository.ListTemplatesRecord(ctx)
|
||||
}
|
||||
|
||||
// GetTemplate loads a template by its identifier.
|
||||
func GetTemplate(ctx context.Context, key string) (model.Template, error) {
|
||||
tmpl, err := repository.GetTemplateByKey(ctx, key)
|
||||
if err != nil {
|
||||
return model.Template{}, translateNotFound(err, errs.ErrTemplateNotFound)
|
||||
}
|
||||
return tmpl, nil
|
||||
}
|
||||
|
||||
// UpdateTemplate rewrites the mutable fields of an existing template.
|
||||
func UpdateTemplate(ctx context.Context, key string, req model.UpdateTemplateRequest) (model.Template, error) {
|
||||
tmpl, err := GetTemplate(ctx, key)
|
||||
if err != nil {
|
||||
return model.Template{}, err
|
||||
}
|
||||
|
||||
tmpl.Name = req.Name
|
||||
tmpl.Type = req.Type
|
||||
tmpl.Subject = req.Subject
|
||||
tmpl.Content = req.Content
|
||||
tmpl.Description = req.Description
|
||||
if err := tmpl.Validate(); err != nil {
|
||||
return model.Template{}, err
|
||||
}
|
||||
if err := repository.SaveTemplateRecord(ctx, &tmpl); err != nil {
|
||||
return model.Template{}, err
|
||||
}
|
||||
return tmpl, nil
|
||||
}
|
||||
|
||||
// DeleteTemplate removes a custom template; system presets are protected.
|
||||
func DeleteTemplate(ctx context.Context, key string) error {
|
||||
tmpl, err := GetTemplate(ctx, key)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if tmpl.IsSystem {
|
||||
return errs.ErrSystemTemplateCannotDelete
|
||||
}
|
||||
return repository.DeleteTemplateRecord(ctx, &tmpl)
|
||||
}
|
||||
Reference in New Issue
Block a user