diff options
Diffstat (limited to 'database/guestbook.go')
| -rw-r--r-- | database/guestbook.go | 50 |
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 +} |
