From fe8dcfe3e3e98bcda40f21b7c1d242914a4833e4 Mon Sep 17 00:00:00 2001 From: Lewis Dale Date: Thu, 9 May 2024 07:12:24 +0100 Subject: [PATCH] Add ping and status table --- main.go | 11 ++++------ ping/ping.go | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++ test.sqlite3 | Bin 12288 -> 0 bytes 3 files changed, 62 insertions(+), 7 deletions(-) create mode 100644 ping/ping.go delete mode 100644 test.sqlite3 diff --git a/main.go b/main.go index 674aa17..1687a45 100644 --- a/main.go +++ b/main.go @@ -5,20 +5,17 @@ import ( _ "github.com/mattn/go-sqlite3" "lewisdale.dev/oopsie/data" + "lewisdale.dev/oopsie/ping" "lewisdale.dev/oopsie/sites" ) -const createSitesTable = `CREATE TABLE IF NOT EXISTS sites ( -id INTEGER NOT NULL PRIMARY KEY, -created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -name TEXT NOT NULL, -url TEXT NOT NULL -);` - func main() { db := data.Connect("test.sqlite3") + db.Exec("PRAGMA foreign_keys = ON;") + sites.CreateTable(db) + ping.CreateTable(db) site := sites.Site{Name: "Lewisdale.dev", Url: "https://lewisdale.dev"} site.Save(db) diff --git a/ping/ping.go b/ping/ping.go new file mode 100644 index 0000000..791c2c2 --- /dev/null +++ b/ping/ping.go @@ -0,0 +1,58 @@ +package ping + +import ( + "database/sql" + + "lewisdale.dev/oopsie/sites" +) + +type Status int16 + +const ( + Success Status = iota + Failure +) + +type Ping struct { + Site sites.Site + Timestamp string + Status Status +} + +const createQuery = `CREATE TABLE IF NOT EXISTS statuses ( + id INTEGER PRIMARY KEY, + name TEXT NOT NULL +); + +CREATE TABLE IF NOT EXISTS ping ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + site TEXT NOT NULL, + timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + status INTEGER NOT NULL, + FOREIGN KEY (site) REFERENCES sites(url), + FOREIGN KEY (status) REFERENCES statuses(id) +);` + +const seedStatusQuery = `INSERT INTO statuses (id, name) VALUES (?, ?) +ON CONFLICT (id) DO NOTHING` + +func CreateTable(db *sql.DB) { + if _, err := db.Exec(createQuery); err != nil { + panic(err) + } + + seedStatuses(db) +} + +func seedStatuses(db *sql.DB) { + if _, err := db.Exec(seedStatusQuery, Success, "Success"); err != nil { + panic(err) + } + if _, err := db.Exec(seedStatusQuery, Failure, "Failure"); err != nil { + panic(err) + } +} + +func (p *Ping) Save(db *sql.DB) { + +} diff --git a/test.sqlite3 b/test.sqlite3 deleted file mode 100644 index bd24f75c69436316fb8a0d8cb3fc05229c0cde59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI$O;5rw7zgkci0BeBZ}ZrjlJGJC142xkSQFwv93_#{GNne60m=q?@xaj!=F!jL zSMX?Ag26=YnEabQ>(h2wy5H?-=h_~GlHHFdLoZ}SvP&o>r;HIok}BdVmTi$ImJ>D7 zm3&>AB)QpJO8+7;y+-t!{;}>wtU~|-5P$##AOHafKmY;|fB*zGRA8>tq+u9z{u+9> zz6?|y9Yl{<-QkwtOju_&XVDTn(54fg34SA3>qo~k6+@GC{Hu8q@_xH4PI<{q;7?cb~efbhR`RYWjHx0+p z+>H+69!A5Wmfv2urc_Y