51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
|
package database
|
||
|
|
||
|
import (
|
||
|
"database/sql"
|
||
|
"log"
|
||
|
"time"
|
||
|
|
||
|
_ "github.com/mattn/go-sqlite3"
|
||
|
)
|
||
|
|
||
|
type GuestbookEntry struct {
|
||
|
ID string `json:"id"`
|
||
|
Name string `json:"name"`
|
||
|
Message string `json:"message"`
|
||
|
CreatedAt time.Time `json:"created_at"`
|
||
|
}
|
||
|
|
||
|
func GetGuestbookEntries(db *sql.DB) ([]GuestbookEntry, error) {
|
||
|
log.Println("getting guest_book entries")
|
||
|
|
||
|
rows, err := db.Query("SELECT * FROM guest_book ORDER BY created_at DESC LIMIT 200")
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
defer rows.Close()
|
||
|
|
||
|
var entries []GuestbookEntry
|
||
|
for rows.Next() {
|
||
|
var entry GuestbookEntry
|
||
|
err := rows.Scan(&entry.ID, &entry.Name, &entry.Message, &entry.CreatedAt)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
entries = append(entries, entry)
|
||
|
}
|
||
|
|
||
|
return entries, nil
|
||
|
}
|
||
|
|
||
|
func SaveGuestbookEntry(db *sql.DB, entry *GuestbookEntry) (*GuestbookEntry, error) {
|
||
|
log.Println("saving guest_book entry", entry.ID)
|
||
|
|
||
|
entry.CreatedAt = time.Now()
|
||
|
_, err := db.Exec("INSERT OR REPLACE INTO guest_book (id, name, message, created_at) VALUES (?, ?, ?, ?)", entry.ID, entry.Name, entry.Message, entry.CreatedAt)
|
||
|
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return entry, nil
|
||
|
}
|