From 0ea09941a5a7c71c955fd637383fe64a902e9fdc Mon Sep 17 00:00:00 2001 From: Lewis Dale Date: Wed, 8 May 2024 09:26:26 +0100 Subject: [PATCH] Use url as the unique id for a site, rather than an id --- sites/sites.go | 25 +++++++++---------------- test.sqlite3 | Bin 8192 -> 12288 bytes 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/sites/sites.go b/sites/sites.go index 13d6a77..62c1edf 100644 --- a/sites/sites.go +++ b/sites/sites.go @@ -6,10 +6,9 @@ import ( ) const createSitesTable = `CREATE TABLE IF NOT EXISTS sites ( -id INTEGER NOT NULL PRIMARY KEY, +url TEXT NOT NULL PRIMARY KEY, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -name TEXT NOT NULL, -url TEXT NOT NULL +name TEXT NOT NULL );` func CreateTable(db *sql.DB) { @@ -19,23 +18,17 @@ func CreateTable(db *sql.DB) { } type Site struct { - id uint64 created_at uint64 Name string Url string } +const upsertQuery = `INSERT INTO sites (url, name) VALUES (?, ?) +ON CONFLICT (url) DO UPDATE +SET + name = excluded.name +` + func (s *Site) Save(db *sql.DB) { - if s.id != 0 { - query := `UPDATE SITES - SET - name=?, - url=? - WHERE id =? - ` - db.Exec(query, s.Name, s.Url, s.id) - } else { - query := `INSERT INTO SITES (name, url) VALUES (?, ?)` - db.Exec(query, s.Name, s.Url) - } + db.Exec(upsertQuery, s.Url, s.Name) } diff --git a/test.sqlite3 b/test.sqlite3 index 9f08f6b0ca6db320358d3e04424f87194e766cc9..bd24f75c69436316fb8a0d8cb3fc05229c0cde59 100644 GIT binary patch delta 220 zcmZp0Xh@hKEy&Kmz`zW|Fu*)f#~3K6SJuhP|AT>v-#VBOCd_@6^{r?E&dn{$Hn0s!s1HRAvP delta 185 zcmZojXmFSyEy%*az`z8=Fu*ub$C#gmK`(C?FHne)Kaznza