64 lines
1.8 KiB
Go
64 lines
1.8 KiB
Go
package store
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"aiaa-notification-service/internal/model"
|
|
)
|
|
|
|
func (s *Store) CreateTemplate(ctx context.Context, t *model.Template) error {
|
|
query := `INSERT INTO template (name, content) VALUES (?, ?)`
|
|
result, err := s.DB.ExecContext(ctx, query, t.Name, t.Content)
|
|
if err != nil {
|
|
return fmt.Errorf("create template: %w", err)
|
|
}
|
|
id, _ := result.LastInsertId()
|
|
t.ID = int(id)
|
|
return nil
|
|
}
|
|
|
|
func (s *Store) GetTemplate(ctx context.Context, id int) (*model.Template, error) {
|
|
var t model.Template
|
|
err := s.DB.GetContext(ctx, &t, `SELECT * FROM template WHERE id = ?`, id)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("get template %d: %w", id, err)
|
|
}
|
|
return &t, nil
|
|
}
|
|
|
|
func (s *Store) GetTemplateByName(ctx context.Context, name string) (*model.Template, error) {
|
|
var t model.Template
|
|
err := s.DB.GetContext(ctx, &t, `SELECT * FROM template WHERE name = ?`, name)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("get template by name %s: %w", name, err)
|
|
}
|
|
return &t, nil
|
|
}
|
|
|
|
func (s *Store) ListTemplates(ctx context.Context) ([]model.Template, error) {
|
|
var templates []model.Template
|
|
err := s.DB.SelectContext(ctx, &templates, `SELECT * FROM template ORDER BY id`)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("list templates: %w", err)
|
|
}
|
|
return templates, nil
|
|
}
|
|
|
|
func (s *Store) UpdateTemplate(ctx context.Context, id int, t *model.Template) error {
|
|
query := `UPDATE template SET name=?, content=? WHERE id=?`
|
|
_, err := s.DB.ExecContext(ctx, query, t.Name, t.Content, id)
|
|
if err != nil {
|
|
return fmt.Errorf("update template %d: %w", id, err)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (s *Store) DeleteTemplate(ctx context.Context, id int) error {
|
|
_, err := s.DB.ExecContext(ctx, `DELETE FROM template WHERE id = ?`, id)
|
|
if err != nil {
|
|
return fmt.Errorf("delete template %d: %w", id, err)
|
|
}
|
|
return nil
|
|
}
|