@@ -0,0 +1,47 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"errors"
|
||||
)
|
||||
|
||||
func (s *Store) SaveLegacyRevision(name, raw, note, actor string) (LegacyJsonRevision, error) {
|
||||
item := LegacyJsonRevision{Name: name, Raw: raw, Note: sanitize(note), CreatedBy: firstNonEmpty(actor, "admin"), CreatedAt: Now()}
|
||||
id, err := s.insertID(`INSERT INTO legacy_json_revisions (name, raw, note, created_by, created_at) VALUES (?, ?, ?, ?, ?)`,
|
||||
item.Name, item.Raw, item.Note, item.CreatedBy, item.CreatedAt)
|
||||
if err != nil {
|
||||
return LegacyJsonRevision{}, err
|
||||
}
|
||||
item.ID = id
|
||||
return item, nil
|
||||
}
|
||||
|
||||
func (s *Store) ListLegacyRevisions(name string, limit int) ([]LegacyJsonRevision, error) {
|
||||
if limit <= 0 || limit > 100 {
|
||||
limit = 20
|
||||
}
|
||||
rows, err := s.query(`SELECT id, name, raw, note, created_by, created_at FROM legacy_json_revisions WHERE name = ? ORDER BY id DESC LIMIT ?`, name, limit)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
items := []LegacyJsonRevision{}
|
||||
for rows.Next() {
|
||||
var item LegacyJsonRevision
|
||||
if err := rows.Scan(&item.ID, &item.Name, &item.Raw, &item.Note, &item.CreatedBy, &item.CreatedAt); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, item)
|
||||
}
|
||||
return items, rows.Err()
|
||||
}
|
||||
|
||||
func (s *Store) GetLegacyRevision(name string, id int64) (LegacyJsonRevision, error) {
|
||||
var item LegacyJsonRevision
|
||||
err := s.queryRow(`SELECT id, name, raw, note, created_by, created_at FROM legacy_json_revisions WHERE name = ? AND id = ?`, name, id).
|
||||
Scan(&item.ID, &item.Name, &item.Raw, &item.Note, &item.CreatedBy, &item.CreatedAt)
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
return LegacyJsonRevision{}, errors.New("revision not found")
|
||||
}
|
||||
return item, err
|
||||
}
|
||||
Reference in New Issue
Block a user