refactor: rename database tables for notification entities to improve clarity and consistency

This commit is contained in:
2026-07-02 16:04:18 +08:00
parent c5225d8c97
commit a0d26fa3a3
7 changed files with 51 additions and 51 deletions
+6 -6
View File
@@ -13,7 +13,7 @@ func (s *Store) CreateChannel(ctx context.Context, ch *model.Channel) error {
if err != nil { if err != nil {
return fmt.Errorf("marshal channel config: %w", err) return fmt.Errorf("marshal channel config: %w", err)
} }
query := `INSERT INTO channel (name, type, config, status) VALUES (?, ?, ?, ?)` query := `INSERT INTO notification_channel (name, type, config, status) VALUES (?, ?, ?, ?)`
result, err := s.DB.ExecContext(ctx, query, ch.Name, ch.Type, configJSON, ch.Status) result, err := s.DB.ExecContext(ctx, query, ch.Name, ch.Type, configJSON, ch.Status)
if err != nil { if err != nil {
return fmt.Errorf("create channel: %w", err) return fmt.Errorf("create channel: %w", err)
@@ -26,7 +26,7 @@ func (s *Store) CreateChannel(ctx context.Context, ch *model.Channel) error {
func (s *Store) GetChannel(ctx context.Context, id int) (*model.Channel, error) { func (s *Store) GetChannel(ctx context.Context, id int) (*model.Channel, error) {
var ch model.Channel var ch model.Channel
var configBytes []byte var configBytes []byte
row := s.DB.QueryRowContext(ctx, `SELECT id, name, type, config, status, created_at, updated_at FROM channel WHERE id = ?`, id) row := s.DB.QueryRowContext(ctx, `SELECT id, name, type, config, status, created_at, updated_at FROM notification_channel WHERE id = ?`, id)
if err := row.Scan(&ch.ID, &ch.Name, &ch.Type, &configBytes, &ch.Status, &ch.CreatedAt, &ch.UpdatedAt); err != nil { if err := row.Scan(&ch.ID, &ch.Name, &ch.Type, &configBytes, &ch.Status, &ch.CreatedAt, &ch.UpdatedAt); err != nil {
return nil, fmt.Errorf("get channel %d: %w", id, err) return nil, fmt.Errorf("get channel %d: %w", id, err)
} }
@@ -38,7 +38,7 @@ func (s *Store) GetChannel(ctx context.Context, id int) (*model.Channel, error)
func (s *Store) GetChannelByName(ctx context.Context, name string) (*model.Channel, error) { func (s *Store) GetChannelByName(ctx context.Context, name string) (*model.Channel, error) {
var ch model.Channel var ch model.Channel
var configBytes []byte var configBytes []byte
row := s.DB.QueryRowContext(ctx, `SELECT id, name, type, config, status, created_at, updated_at FROM channel WHERE name = ?`, name) row := s.DB.QueryRowContext(ctx, `SELECT id, name, type, config, status, created_at, updated_at FROM notification_channel WHERE name = ?`, name)
if err := row.Scan(&ch.ID, &ch.Name, &ch.Type, &configBytes, &ch.Status, &ch.CreatedAt, &ch.UpdatedAt); err != nil { if err := row.Scan(&ch.ID, &ch.Name, &ch.Type, &configBytes, &ch.Status, &ch.CreatedAt, &ch.UpdatedAt); err != nil {
return nil, fmt.Errorf("get channel by name %s: %w", name, err) return nil, fmt.Errorf("get channel by name %s: %w", name, err)
} }
@@ -48,7 +48,7 @@ func (s *Store) GetChannelByName(ctx context.Context, name string) (*model.Chann
} }
func (s *Store) ListChannels(ctx context.Context) ([]model.Channel, error) { func (s *Store) ListChannels(ctx context.Context) ([]model.Channel, error) {
rows, err := s.DB.QueryContext(ctx, `SELECT id, name, type, config, status, created_at, updated_at FROM channel ORDER BY id`) rows, err := s.DB.QueryContext(ctx, `SELECT id, name, type, config, status, created_at, updated_at FROM notification_channel ORDER BY id`)
if err != nil { if err != nil {
return nil, fmt.Errorf("list channels: %w", err) return nil, fmt.Errorf("list channels: %w", err)
} }
@@ -73,7 +73,7 @@ func (s *Store) UpdateChannel(ctx context.Context, id int, ch *model.Channel) er
if err != nil { if err != nil {
return fmt.Errorf("marshal channel config: %w", err) return fmt.Errorf("marshal channel config: %w", err)
} }
query := `UPDATE channel SET name=?, type=?, config=?, status=? WHERE id=?` query := `UPDATE notification_channel SET name=?, type=?, config=?, status=? WHERE id=?`
_, err = s.DB.ExecContext(ctx, query, ch.Name, ch.Type, configJSON, ch.Status, id) _, err = s.DB.ExecContext(ctx, query, ch.Name, ch.Type, configJSON, ch.Status, id)
if err != nil { if err != nil {
return fmt.Errorf("update channel %d: %w", id, err) return fmt.Errorf("update channel %d: %w", id, err)
@@ -82,7 +82,7 @@ func (s *Store) UpdateChannel(ctx context.Context, id int, ch *model.Channel) er
} }
func (s *Store) DeleteChannel(ctx context.Context, id int) error { func (s *Store) DeleteChannel(ctx context.Context, id int) error {
_, err := s.DB.ExecContext(ctx, `DELETE FROM channel WHERE id = ?`, id) _, err := s.DB.ExecContext(ctx, `DELETE FROM notification_channel WHERE id = ?`, id)
if err != nil { if err != nil {
return fmt.Errorf("delete channel %d: %w", id, err) return fmt.Errorf("delete channel %d: %w", id, err)
} }
+4 -4
View File
@@ -16,7 +16,7 @@ type MessageLogFilter struct {
} }
func (s *Store) CreateMessageLog(ctx context.Context, ml *model.MessageLog) error { func (s *Store) CreateMessageLog(ctx context.Context, ml *model.MessageLog) error {
query := `INSERT INTO message_log (rule_id, channel_id, source, event, payload, content, status, retry_count) VALUES (?, ?, ?, ?, ?, ?, ?, ?)` query := `INSERT INTO notification_message_log (rule_id, channel_id, source, event, payload, content, status, retry_count) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`
result, err := s.DB.ExecContext(ctx, query, ml.RuleID, ml.ChannelID, ml.Source, ml.Event, ml.Payload, ml.Content, ml.Status, ml.RetryCount) result, err := s.DB.ExecContext(ctx, query, ml.RuleID, ml.ChannelID, ml.Source, ml.Event, ml.Payload, ml.Content, ml.Status, ml.RetryCount)
if err != nil { if err != nil {
return fmt.Errorf("create message_log: %w", err) return fmt.Errorf("create message_log: %w", err)
@@ -27,7 +27,7 @@ func (s *Store) CreateMessageLog(ctx context.Context, ml *model.MessageLog) erro
} }
func (s *Store) UpdateMessageLog(ctx context.Context, id int64, status string, response, errMsg *string) error { func (s *Store) UpdateMessageLog(ctx context.Context, id int64, status string, response, errMsg *string) error {
query := `UPDATE message_log SET status=?, response=?, error_msg=? WHERE id=?` query := `UPDATE notification_message_log SET status=?, response=?, error_msg=? WHERE id=?`
_, err := s.DB.ExecContext(ctx, query, status, response, errMsg, id) _, err := s.DB.ExecContext(ctx, query, status, response, errMsg, id)
return err return err
} }
@@ -49,7 +49,7 @@ func (s *Store) ListMessageLogs(ctx context.Context, filter MessageLogFilter) ([
} }
var count int var count int
countQuery := "SELECT COUNT(*) FROM message_log " + where countQuery := "SELECT COUNT(*) FROM notification_message_log " + where
if err := s.DB.GetContext(ctx, &count, countQuery, args...); err != nil { if err := s.DB.GetContext(ctx, &count, countQuery, args...); err != nil {
return nil, 0, err return nil, 0, err
} }
@@ -63,7 +63,7 @@ func (s *Store) ListMessageLogs(ctx context.Context, filter MessageLogFilter) ([
offset := (filter.Page - 1) * filter.PageSize offset := (filter.Page - 1) * filter.PageSize
var logs []model.MessageLog var logs []model.MessageLog
query := "SELECT * FROM message_log " + where + " ORDER BY id DESC LIMIT ? OFFSET ?" query := "SELECT * FROM notification_message_log " + where + " ORDER BY id DESC LIMIT ? OFFSET ?"
args = append(args, filter.PageSize, offset) args = append(args, filter.PageSize, offset)
if err := s.DB.SelectContext(ctx, &logs, query, args...); err != nil { if err := s.DB.SelectContext(ctx, &logs, query, args...); err != nil {
return nil, 0, err return nil, 0, err
+12 -12
View File
@@ -16,7 +16,7 @@ func (s *Store) CreateRule(ctx context.Context, r *model.Rule, channelIDs []int)
} }
defer tx.Rollback() defer tx.Rollback()
query := `INSERT INTO rule (source_id, event, template_id, conditions, enabled) VALUES (?, ?, ?, ?, ?)` query := `INSERT INTO notification_rule (source_id, event, template_id, conditions, enabled) VALUES (?, ?, ?, ?, ?)`
condsJSON, err := marshalJSON(r.Conditions) condsJSON, err := marshalJSON(r.Conditions)
if err != nil { if err != nil {
return fmt.Errorf("marshal conditions: %w", err) return fmt.Errorf("marshal conditions: %w", err)
@@ -29,7 +29,7 @@ func (s *Store) CreateRule(ctx context.Context, r *model.Rule, channelIDs []int)
r.ID = int(id) r.ID = int(id)
for _, chID := range channelIDs { for _, chID := range channelIDs {
_, err := tx.ExecContext(ctx, `INSERT INTO rule_channel (rule_id, channel_id, enabled) VALUES (?, ?, 1)`, r.ID, chID) _, err := tx.ExecContext(ctx, `INSERT INTO notification_rule_channel (rule_id, channel_id, enabled) VALUES (?, ?, 1)`, r.ID, chID)
if err != nil { if err != nil {
return fmt.Errorf("add rule_channel: %w", err) return fmt.Errorf("add rule_channel: %w", err)
} }
@@ -40,7 +40,7 @@ func (s *Store) CreateRule(ctx context.Context, r *model.Rule, channelIDs []int)
func (s *Store) GetRule(ctx context.Context, id int) (*model.Rule, error) { func (s *Store) GetRule(ctx context.Context, id int) (*model.Rule, error) {
var r model.Rule var r model.Rule
var condsBytes []byte var condsBytes []byte
row := s.DB.QueryRowContext(ctx, `SELECT id, source_id, event, template_id, conditions, enabled, created_at, updated_at FROM rule WHERE id = ?`, id) row := s.DB.QueryRowContext(ctx, `SELECT id, source_id, event, template_id, conditions, enabled, created_at, updated_at FROM notification_rule WHERE id = ?`, id)
if err := row.Scan(&r.ID, &r.SourceID, &r.Event, &r.TemplateID, &condsBytes, &r.Enabled, &r.CreatedAt, &r.UpdatedAt); err != nil { if err := row.Scan(&r.ID, &r.SourceID, &r.Event, &r.TemplateID, &condsBytes, &r.Enabled, &r.CreatedAt, &r.UpdatedAt); err != nil {
return nil, fmt.Errorf("get rule %d: %w", id, err) return nil, fmt.Errorf("get rule %d: %w", id, err)
} }
@@ -54,7 +54,7 @@ func (s *Store) GetRule(ctx context.Context, id int) (*model.Rule, error) {
func (s *Store) GetRuleBySourceEvent(ctx context.Context, sourceID int, event string) (*model.Rule, error) { func (s *Store) GetRuleBySourceEvent(ctx context.Context, sourceID int, event string) (*model.Rule, error) {
var r model.Rule var r model.Rule
var condsBytes []byte var condsBytes []byte
query := `SELECT id, source_id, event, template_id, conditions, enabled, created_at, updated_at FROM rule WHERE source_id = ? AND event = ? AND enabled = 1` query := `SELECT id, source_id, event, template_id, conditions, enabled, created_at, updated_at FROM notification_rule WHERE source_id = ? AND event = ? AND enabled = 1`
row := s.DB.QueryRowContext(ctx, query, sourceID, event) row := s.DB.QueryRowContext(ctx, query, sourceID, event)
if err := row.Scan(&r.ID, &r.SourceID, &r.Event, &r.TemplateID, &condsBytes, &r.Enabled, &r.CreatedAt, &r.UpdatedAt); err != nil { if err := row.Scan(&r.ID, &r.SourceID, &r.Event, &r.TemplateID, &condsBytes, &r.Enabled, &r.CreatedAt, &r.UpdatedAt); err != nil {
return nil, fmt.Errorf("get rule by source+event: %w", err) return nil, fmt.Errorf("get rule by source+event: %w", err)
@@ -67,7 +67,7 @@ func (s *Store) GetRuleBySourceEvent(ctx context.Context, sourceID int, event st
} }
func (s *Store) ListRules(ctx context.Context) ([]model.Rule, error) { func (s *Store) ListRules(ctx context.Context) ([]model.Rule, error) {
rows, err := s.DB.QueryContext(ctx, `SELECT id, source_id, event, template_id, conditions, enabled, created_at, updated_at FROM rule ORDER BY id`) rows, err := s.DB.QueryContext(ctx, `SELECT id, source_id, event, template_id, conditions, enabled, created_at, updated_at FROM notification_rule ORDER BY id`)
if err != nil { if err != nil {
return nil, fmt.Errorf("list rules: %w", err) return nil, fmt.Errorf("list rules: %w", err)
} }
@@ -86,18 +86,18 @@ func (s *Store) UpdateRule(ctx context.Context, id int, r *model.Rule, channelID
if err != nil { if err != nil {
return fmt.Errorf("marshal conditions: %w", err) return fmt.Errorf("marshal conditions: %w", err)
} }
_, err = tx.ExecContext(ctx, `UPDATE rule SET source_id=?, event=?, template_id=?, conditions=?, enabled=? WHERE id=?`, _, err = tx.ExecContext(ctx, `UPDATE notification_rule SET source_id=?, event=?, template_id=?, conditions=?, enabled=? WHERE id=?`,
r.SourceID, r.Event, r.TemplateID, condsJSON, r.Enabled, id) r.SourceID, r.Event, r.TemplateID, condsJSON, r.Enabled, id)
if err != nil { if err != nil {
return fmt.Errorf("update rule: %w", err) return fmt.Errorf("update rule: %w", err)
} }
if channelIDs != nil { if channelIDs != nil {
if _, err := tx.ExecContext(ctx, `DELETE FROM rule_channel WHERE rule_id = ?`, id); err != nil { if _, err := tx.ExecContext(ctx, `DELETE FROM notification_rule_channel WHERE rule_id = ?`, id); err != nil {
return fmt.Errorf("delete rule channels: %w", err) return fmt.Errorf("delete rule channels: %w", err)
} }
for _, chID := range channelIDs { for _, chID := range channelIDs {
_, err := tx.ExecContext(ctx, `INSERT INTO rule_channel (rule_id, channel_id, enabled) VALUES (?, ?, 1)`, id, chID) _, err := tx.ExecContext(ctx, `INSERT INTO notification_rule_channel (rule_id, channel_id, enabled) VALUES (?, ?, 1)`, id, chID)
if err != nil { if err != nil {
return fmt.Errorf("add rule_channel: %w", err) return fmt.Errorf("add rule_channel: %w", err)
} }
@@ -107,7 +107,7 @@ func (s *Store) UpdateRule(ctx context.Context, id int, r *model.Rule, channelID
} }
func (s *Store) DeleteRule(ctx context.Context, id int) error { func (s *Store) DeleteRule(ctx context.Context, id int) error {
_, err := s.DB.ExecContext(ctx, `DELETE FROM rule WHERE id = ?`, id) _, err := s.DB.ExecContext(ctx, `DELETE FROM notification_rule WHERE id = ?`, id)
if err != nil { if err != nil {
return fmt.Errorf("delete rule %d: %w", id, err) return fmt.Errorf("delete rule %d: %w", id, err)
} }
@@ -119,7 +119,7 @@ func (s *Store) SetRuleEnabled(ctx context.Context, id int, enabled bool) error
if enabled { if enabled {
v = 1 v = 1
} }
_, err := s.DB.ExecContext(ctx, `UPDATE rule SET enabled = ? WHERE id = ?`, v, id) _, err := s.DB.ExecContext(ctx, `UPDATE notification_rule SET enabled = ? WHERE id = ?`, v, id)
if err != nil { if err != nil {
return fmt.Errorf("set rule enabled %d: %w", id, err) return fmt.Errorf("set rule enabled %d: %w", id, err)
} }
@@ -128,7 +128,7 @@ func (s *Store) SetRuleEnabled(ctx context.Context, id int, enabled bool) error
func (s *Store) GetRuleChannels(ctx context.Context, ruleID int) ([]model.RuleChannel, error) { func (s *Store) GetRuleChannels(ctx context.Context, ruleID int) ([]model.RuleChannel, error) {
var rcs []model.RuleChannel var rcs []model.RuleChannel
err := s.DB.SelectContext(ctx, &rcs, `SELECT id, rule_id, channel_id, enabled FROM rule_channel WHERE rule_id = ? AND enabled = 1`, ruleID) err := s.DB.SelectContext(ctx, &rcs, `SELECT id, rule_id, channel_id, enabled FROM notification_rule_channel WHERE rule_id = ? AND enabled = 1`, ruleID)
if err != nil { if err != nil {
return nil, fmt.Errorf("get rule channels: %w", err) return nil, fmt.Errorf("get rule channels: %w", err)
} }
@@ -140,7 +140,7 @@ func (s *Store) SetRuleChannelEnabled(ctx context.Context, ruleID, channelID int
if enabled { if enabled {
v = 1 v = 1
} }
_, err := s.DB.ExecContext(ctx, `UPDATE rule_channel SET enabled = ? WHERE rule_id = ? AND channel_id = ?`, v, ruleID, channelID) _, err := s.DB.ExecContext(ctx, `UPDATE notification_rule_channel SET enabled = ? WHERE rule_id = ? AND channel_id = ?`, v, ruleID, channelID)
if err != nil { if err != nil {
return fmt.Errorf("set rule channel enabled %d/%d: %w", ruleID, channelID, err) return fmt.Errorf("set rule channel enabled %d/%d: %w", ruleID, channelID, err)
} }
+7 -7
View File
@@ -17,7 +17,7 @@ func generateAPIKey() string {
func (s *Store) CreateSource(ctx context.Context, src *model.Source) error { func (s *Store) CreateSource(ctx context.Context, src *model.Source) error {
src.APIKey = generateAPIKey() src.APIKey = generateAPIKey()
query := `INSERT INTO source (name, api_key, parse_mode, parse_pattern, status) VALUES (?, ?, ?, ?, ?)` query := `INSERT INTO notification_source (name, api_key, parse_mode, parse_pattern, status) VALUES (?, ?, ?, ?, ?)`
result, err := s.DB.ExecContext(ctx, query, src.Name, src.APIKey, src.ParseMode, src.ParsePattern, src.Status) result, err := s.DB.ExecContext(ctx, query, src.Name, src.APIKey, src.ParseMode, src.ParsePattern, src.Status)
if err != nil { if err != nil {
return fmt.Errorf("create source: %w", err) return fmt.Errorf("create source: %w", err)
@@ -29,7 +29,7 @@ func (s *Store) CreateSource(ctx context.Context, src *model.Source) error {
func (s *Store) GetSource(ctx context.Context, id int) (*model.Source, error) { func (s *Store) GetSource(ctx context.Context, id int) (*model.Source, error) {
var src model.Source var src model.Source
err := s.DB.GetContext(ctx, &src, `SELECT * FROM source WHERE id = ?`, id) err := s.DB.GetContext(ctx, &src, `SELECT * FROM notification_source WHERE id = ?`, id)
if err != nil { if err != nil {
return nil, fmt.Errorf("get source %d: %w", id, err) return nil, fmt.Errorf("get source %d: %w", id, err)
} }
@@ -38,7 +38,7 @@ func (s *Store) GetSource(ctx context.Context, id int) (*model.Source, error) {
func (s *Store) GetSourceByAPIKey(ctx context.Context, apiKey string) (*model.Source, error) { func (s *Store) GetSourceByAPIKey(ctx context.Context, apiKey string) (*model.Source, error) {
var src model.Source var src model.Source
err := s.DB.GetContext(ctx, &src, `SELECT * FROM source WHERE api_key = ? AND status = 1`, apiKey) err := s.DB.GetContext(ctx, &src, `SELECT * FROM notification_source WHERE api_key = ? AND status = 1`, apiKey)
if err != nil { if err != nil {
return nil, fmt.Errorf("get source by api_key: %w", err) return nil, fmt.Errorf("get source by api_key: %w", err)
} }
@@ -47,7 +47,7 @@ func (s *Store) GetSourceByAPIKey(ctx context.Context, apiKey string) (*model.So
func (s *Store) GetSourceByName(ctx context.Context, name string) (*model.Source, error) { func (s *Store) GetSourceByName(ctx context.Context, name string) (*model.Source, error) {
var src model.Source var src model.Source
err := s.DB.GetContext(ctx, &src, `SELECT * FROM source WHERE name = ?`, name) err := s.DB.GetContext(ctx, &src, `SELECT * FROM notification_source WHERE name = ?`, name)
if err != nil { if err != nil {
return nil, fmt.Errorf("get source by name %s: %w", name, err) return nil, fmt.Errorf("get source by name %s: %w", name, err)
} }
@@ -56,7 +56,7 @@ func (s *Store) GetSourceByName(ctx context.Context, name string) (*model.Source
func (s *Store) ListSources(ctx context.Context) ([]model.Source, error) { func (s *Store) ListSources(ctx context.Context) ([]model.Source, error) {
var sources []model.Source var sources []model.Source
err := s.DB.SelectContext(ctx, &sources, `SELECT * FROM source ORDER BY id`) err := s.DB.SelectContext(ctx, &sources, `SELECT * FROM notification_source ORDER BY id`)
if err != nil { if err != nil {
return nil, fmt.Errorf("list sources: %w", err) return nil, fmt.Errorf("list sources: %w", err)
} }
@@ -64,7 +64,7 @@ func (s *Store) ListSources(ctx context.Context) ([]model.Source, error) {
} }
func (s *Store) UpdateSource(ctx context.Context, id int, src *model.Source) error { func (s *Store) UpdateSource(ctx context.Context, id int, src *model.Source) error {
query := `UPDATE source SET name=?, parse_mode=?, parse_pattern=?, status=? WHERE id=?` query := `UPDATE notification_source SET name=?, parse_mode=?, parse_pattern=?, status=? WHERE id=?`
_, err := s.DB.ExecContext(ctx, query, src.Name, src.ParseMode, src.ParsePattern, src.Status, id) _, err := s.DB.ExecContext(ctx, query, src.Name, src.ParseMode, src.ParsePattern, src.Status, id)
if err != nil { if err != nil {
return fmt.Errorf("update source %d: %w", id, err) return fmt.Errorf("update source %d: %w", id, err)
@@ -73,7 +73,7 @@ func (s *Store) UpdateSource(ctx context.Context, id int, src *model.Source) err
} }
func (s *Store) DeleteSource(ctx context.Context, id int) error { func (s *Store) DeleteSource(ctx context.Context, id int) error {
_, err := s.DB.ExecContext(ctx, `DELETE FROM source WHERE id = ?`, id) _, err := s.DB.ExecContext(ctx, `DELETE FROM notification_source WHERE id = ?`, id)
if err != nil { if err != nil {
return fmt.Errorf("delete source %d: %w", id, err) return fmt.Errorf("delete source %d: %w", id, err)
} }
+6 -6
View File
@@ -8,7 +8,7 @@ import (
) )
func (s *Store) CreateTemplate(ctx context.Context, t *model.Template) error { func (s *Store) CreateTemplate(ctx context.Context, t *model.Template) error {
query := `INSERT INTO template (name, content) VALUES (?, ?)` query := `INSERT INTO notification_template (name, content) VALUES (?, ?)`
result, err := s.DB.ExecContext(ctx, query, t.Name, t.Content) result, err := s.DB.ExecContext(ctx, query, t.Name, t.Content)
if err != nil { if err != nil {
return fmt.Errorf("create template: %w", err) return fmt.Errorf("create template: %w", err)
@@ -20,7 +20,7 @@ func (s *Store) CreateTemplate(ctx context.Context, t *model.Template) error {
func (s *Store) GetTemplate(ctx context.Context, id int) (*model.Template, error) { func (s *Store) GetTemplate(ctx context.Context, id int) (*model.Template, error) {
var t model.Template var t model.Template
err := s.DB.GetContext(ctx, &t, `SELECT * FROM template WHERE id = ?`, id) err := s.DB.GetContext(ctx, &t, `SELECT * FROM notification_template WHERE id = ?`, id)
if err != nil { if err != nil {
return nil, fmt.Errorf("get template %d: %w", id, err) return nil, fmt.Errorf("get template %d: %w", id, err)
} }
@@ -29,7 +29,7 @@ func (s *Store) GetTemplate(ctx context.Context, id int) (*model.Template, error
func (s *Store) GetTemplateByName(ctx context.Context, name string) (*model.Template, error) { func (s *Store) GetTemplateByName(ctx context.Context, name string) (*model.Template, error) {
var t model.Template var t model.Template
err := s.DB.GetContext(ctx, &t, `SELECT * FROM template WHERE name = ?`, name) err := s.DB.GetContext(ctx, &t, `SELECT * FROM notification_template WHERE name = ?`, name)
if err != nil { if err != nil {
return nil, fmt.Errorf("get template by name %s: %w", name, err) return nil, fmt.Errorf("get template by name %s: %w", name, err)
} }
@@ -38,7 +38,7 @@ func (s *Store) GetTemplateByName(ctx context.Context, name string) (*model.Temp
func (s *Store) ListTemplates(ctx context.Context) ([]model.Template, error) { func (s *Store) ListTemplates(ctx context.Context) ([]model.Template, error) {
var templates []model.Template var templates []model.Template
err := s.DB.SelectContext(ctx, &templates, `SELECT * FROM template ORDER BY id`) err := s.DB.SelectContext(ctx, &templates, `SELECT * FROM notification_template ORDER BY id`)
if err != nil { if err != nil {
return nil, fmt.Errorf("list templates: %w", err) return nil, fmt.Errorf("list templates: %w", err)
} }
@@ -46,7 +46,7 @@ func (s *Store) ListTemplates(ctx context.Context) ([]model.Template, error) {
} }
func (s *Store) UpdateTemplate(ctx context.Context, id int, t *model.Template) error { func (s *Store) UpdateTemplate(ctx context.Context, id int, t *model.Template) error {
query := `UPDATE template SET name=?, content=? WHERE id=?` query := `UPDATE notification_template SET name=?, content=? WHERE id=?`
_, err := s.DB.ExecContext(ctx, query, t.Name, t.Content, id) _, err := s.DB.ExecContext(ctx, query, t.Name, t.Content, id)
if err != nil { if err != nil {
return fmt.Errorf("update template %d: %w", id, err) return fmt.Errorf("update template %d: %w", id, err)
@@ -55,7 +55,7 @@ func (s *Store) UpdateTemplate(ctx context.Context, id int, t *model.Template) e
} }
func (s *Store) DeleteTemplate(ctx context.Context, id int) error { func (s *Store) DeleteTemplate(ctx context.Context, id int) error {
_, err := s.DB.ExecContext(ctx, `DELETE FROM template WHERE id = ?`, id) _, err := s.DB.ExecContext(ctx, `DELETE FROM notification_template WHERE id = ?`, id)
if err != nil { if err != nil {
return fmt.Errorf("delete template %d: %w", id, err) return fmt.Errorf("delete template %d: %w", id, err)
} }
+6 -6
View File
@@ -1,6 +1,6 @@
DROP TABLE IF EXISTS message_log; DROP TABLE IF EXISTS notification_message_log;
DROP TABLE IF EXISTS rule_channel; DROP TABLE IF EXISTS notification_rule_channel;
DROP TABLE IF EXISTS rule; DROP TABLE IF EXISTS notification_rule;
DROP TABLE IF EXISTS channel; DROP TABLE IF EXISTS notification_channel;
DROP TABLE IF EXISTS template; DROP TABLE IF EXISTS notification_template;
DROP TABLE IF EXISTS source; DROP TABLE IF EXISTS notification_source;
+10 -10
View File
@@ -1,4 +1,4 @@
CREATE TABLE source ( CREATE TABLE notification_source (
id INT AUTO_INCREMENT PRIMARY KEY, id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(64) NOT NULL, name VARCHAR(64) NOT NULL,
api_key VARCHAR(128) NOT NULL, api_key VARCHAR(128) NOT NULL,
@@ -11,7 +11,7 @@ CREATE TABLE source (
UNIQUE KEY uk_api_key (api_key) UNIQUE KEY uk_api_key (api_key)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE template ( CREATE TABLE notification_template (
id INT AUTO_INCREMENT PRIMARY KEY, id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(64) NOT NULL, name VARCHAR(64) NOT NULL,
content TEXT NOT NULL, content TEXT NOT NULL,
@@ -20,7 +20,7 @@ CREATE TABLE template (
UNIQUE KEY uk_name (name) UNIQUE KEY uk_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE channel ( CREATE TABLE notification_channel (
id INT AUTO_INCREMENT PRIMARY KEY, id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(32) NOT NULL, name VARCHAR(32) NOT NULL,
type VARCHAR(32) NOT NULL, type VARCHAR(32) NOT NULL,
@@ -31,7 +31,7 @@ CREATE TABLE channel (
UNIQUE KEY uk_name (name) UNIQUE KEY uk_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE rule ( CREATE TABLE notification_rule (
id INT AUTO_INCREMENT PRIMARY KEY, id INT AUTO_INCREMENT PRIMARY KEY,
source_id INT NOT NULL, source_id INT NOT NULL,
event VARCHAR(64) NOT NULL, event VARCHAR(64) NOT NULL,
@@ -41,21 +41,21 @@ CREATE TABLE rule (
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_source_event (source_id, event), UNIQUE KEY uk_source_event (source_id, event),
FOREIGN KEY (source_id) REFERENCES source(id), FOREIGN KEY (source_id) REFERENCES notification_source(id),
FOREIGN KEY (template_id) REFERENCES template(id) FOREIGN KEY (template_id) REFERENCES notification_template(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE rule_channel ( CREATE TABLE notification_rule_channel (
id INT AUTO_INCREMENT PRIMARY KEY, id INT AUTO_INCREMENT PRIMARY KEY,
rule_id INT NOT NULL, rule_id INT NOT NULL,
channel_id INT NOT NULL, channel_id INT NOT NULL,
enabled TINYINT NOT NULL DEFAULT 1, enabled TINYINT NOT NULL DEFAULT 1,
UNIQUE KEY uk_rule_channel (rule_id, channel_id), UNIQUE KEY uk_rule_channel (rule_id, channel_id),
FOREIGN KEY (rule_id) REFERENCES rule(id) ON DELETE CASCADE, FOREIGN KEY (rule_id) REFERENCES notification_rule(id) ON DELETE CASCADE,
FOREIGN KEY (channel_id) REFERENCES channel(id) FOREIGN KEY (channel_id) REFERENCES notification_channel(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE message_log ( CREATE TABLE notification_message_log (
id BIGINT AUTO_INCREMENT PRIMARY KEY, id BIGINT AUTO_INCREMENT PRIMARY KEY,
rule_id INT NOT NULL, rule_id INT NOT NULL,
channel_id INT NOT NULL, channel_id INT NOT NULL,