package store import ( "context" "fmt" "aiaa-notification-service/internal/model" ) func (s *Store) CreateTemplate(ctx context.Context, t *model.Template) error { query := `INSERT INTO notification_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 notification_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 notification_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, page PageFilter) ([]model.Template, int, error) { var count int if err := s.DB.GetContext(ctx, &count, `SELECT COUNT(*) FROM notification_template`); err != nil { return nil, 0, fmt.Errorf("count templates: %w", err) } page.Normalize() templates := make([]model.Template, 0) err := s.DB.SelectContext(ctx, &templates, `SELECT * FROM notification_template ORDER BY id LIMIT ? OFFSET ?`, page.PageSize, page.Offset()) if err != nil { return nil, 0, fmt.Errorf("list templates: %w", err) } return templates, count, nil } func (s *Store) UpdateTemplate(ctx context.Context, id int, t *model.Template) error { query := `UPDATE notification_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 notification_template WHERE id = ?`, id) if err != nil { return fmt.Errorf("delete template %d: %w", id, err) } return nil }