package db import "errors" type Alias struct{ Name, Command string } func (db *DB) GetAlias(n string) (*Alias, error) { a := &Alias{} err := db.QueryRow("SELECT name, command FROM aliases WHERE name = ?", n).Scan(&a.Name, &a.Command) return a, err } func (db *DB) SetAlias(n, c string) error { _, err := db.Exec("INSERT INTO aliases (name, command) VALUES (?, ?) ON CONFLICT(name) DO UPDATE SET command = excluded.command", n, c) return err } func (db *DB) DeleteAlias(n string) error { res, err := db.Exec("DELETE FROM aliases WHERE name = ?", n) if err != nil { return err } if a, _ := res.RowsAffected(); a == 0 { return errors.New("alias not found") } return nil } func (db *DB) ListAliases() ([]*Alias, error) { rows, err := db.Query("SELECT name, command FROM aliases ORDER BY name") if err != nil { return nil, err } defer rows.Close() var aliases []*Alias for rows.Next() { a := &Alias{} rows.Scan(&a.Name, &a.Command) aliases = append(aliases, a) } return aliases, nil }