converter/app/db/record.go
2025-06-22 22:09:21 -04:00

78 lines
1.3 KiB
Go

package db
import (
"binaryserver/app/utils"
"github.com/google/uuid"
)
type Record struct {
UUID uuid.UUID `json:"uuid"`
Handle string `json:"handle"`
URL string `json:"url"`
}
func NewRecord(handle, url string) Record {
return Record{
UUID: utils.GetUUID(),
Handle: handle,
URL: url,
}
}
func SaveRecord(record Record) error {
conn := HandleConn()
stmt, err := conn.Prepare(`INSERT INTO records
VALUES(?, ?, ?)`)
if err != nil {
return err
}
_, err = stmt.Exec(record.UUID.String(), record.Handle, record.URL)
if err != nil {
return err
}
defer stmt.Close()
return nil
}
func GetRecords(opts QueryOptions) ([]Record, error) {
conn := HandleConn()
var records []Record
stmt, err := opts.Build(conn, "records")
if err != nil {
return nil, err
}
row, err := stmt.Query()
stmt.Close()
if err != nil {
return nil, err
}
defer row.Close()
for {
if err != nil {
return nil, err
}
if !row.Next() {
break
}
record := Record{}
row.Scan(&record.UUID, &record.Handle, &record.URL)
records = append(records, record)
}
return records, nil
}
func DeleteRecord(record Record) error {
stmt, err := conn.Prepare(`DELETE FROM records
WHERE UUID = ?`)
if err != nil {
return err
}
defer stmt.Close()
_, err = stmt.Exec(record.UUID.String())
if err != nil {
return err
}
return nil
}