From a2cb3aac72a113de27c4f8863a489341d77f9bd7 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Mon, 29 Dec 2025 11:34:52 -0800 Subject: [PATCH] Add PostgreSQL database with auto-created rsvps table --- go.mod | 5 ++++- go.sum | 2 ++ main.go | 30 +++++++++++++++++++++++++++++- 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index ad31f48..13b56d1 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,10 @@ module tickets go 1.25.4 -require google.golang.org/api v0.258.0 +require ( + github.com/lib/pq v1.10.9 + google.golang.org/api v0.258.0 +) require ( cloud.google.com/go/auth v0.17.0 // indirect diff --git a/go.sum b/go.sum index 51503de..6233b35 100644 --- a/go.sum +++ b/go.sum @@ -25,6 +25,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.7 h1:zrn2Ee/nWmHulBx5sAV github.com/googleapis/enterprise-certificate-proxy v0.3.7/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo= github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= diff --git a/main.go b/main.go index b5b235b..053111e 100644 --- a/main.go +++ b/main.go @@ -2,6 +2,7 @@ package main import ( "context" + "database/sql" "encoding/base64" "encoding/json" "html/template" @@ -11,13 +12,40 @@ import ( "path/filepath" "strings" + _ "github.com/lib/pq" "google.golang.org/api/idtoken" ) -var templates *template.Template +var ( + templates *template.Template + db *sql.DB +) func init() { templates = template.Must(template.ParseGlob("static/*.html")) + + var err error + db, err = sql.Open("postgres", os.Getenv("PGCONN")) + if err != nil { + log.Fatal("[ERROR] failed to open database: ", err) + } + + if err = db.Ping(); err != nil { + log.Fatal("[ERROR] failed to connect to database: ", err) + } + + _, err = db.Exec(` + CREATE TABLE IF NOT EXISTS rsvps ( + event_id TEXT NOT NULL, + google_username TEXT NOT NULL, + num_people INTEGER NOT NULL DEFAULT 0, + donation DECIMAL(10,2) NOT NULL DEFAULT 0, + PRIMARY KEY (event_id, google_username) + ) + `) + if err != nil { + log.Fatal("[ERROR] failed to create table: ", err) + } } func main() {