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 }