summaryrefslogtreecommitdiff
path: root/database/guestbook.go
diff options
context:
space:
mode:
Diffstat (limited to 'database/guestbook.go')
-rw-r--r--database/guestbook.go50
1 files changed, 50 insertions, 0 deletions
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
+}