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 9f08f6b..bd24f75 100644 Binary files a/test.sqlite3 and b/test.sqlite3 differ