From 5080c566ac31ec622986c04f1812a1e88c88210e Mon Sep 17 00:00:00 2001 From: Lizzy Hunt Date: Fri, 29 Mar 2024 16:35:04 -0600 Subject: guestbook! --- database/guestbook.go | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 database/guestbook.go (limited to 'database/guestbook.go') diff --git a/database/guestbook.go b/database/guestbook.go new file mode 100644 index 0000000..2d4d8c9 --- /dev/null +++ b/database/guestbook.go @@ -0,0 +1,50 @@ +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 +} -- cgit v1.2.3-70-g09d2