BREAKING-ish: SQL schema correction

Amolith created

While refactoring the schema yesterday, I forgot to add primary keys
back to the sessions and projects tables. Databases existing before
commit 984d44775bcd1331eb73e4a7812d768fd8c485bb are fine and new
databases should be initialised correctly, but databases created between
commit 984d44775bcd1331eb73e4a7812d768fd8c485bb and this one require
either SQL migrations or deleting willow.sqlite (which will remove all
users, projects, login sessions, etc.).

For the migrations, open the database with `sqlite3 willow.sqlite` and
paste the SQL statements below.

```
ALTER TABLE sessions RENAME TO sessions_bak;
CREATE TABLE sessions
(
    token      TEXT      NOT NULL PRIMARY KEY,
    username   TEXT      NOT NULL,
    expires    TIMESTAMP NOT NULL,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO sessions (token, username, expires, created_at)
    SELECT token, username, expires, created_at FROM sessions_bak;
ALTER TABLE projects RENAME TO projects_bak;
CREATE TABLE projects
(
    url        TEXT      NOT NULL PRIMARY KEY,
    name       TEXT      NOT NULL,
    forge      TEXT      NOT NULL,
    version    TEXT      NOT NULL,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO projects (url, name, forge, version, created_at)
    SELECT url, name, forge, version, created_at FROM projects_bak;
```

Assuming the statements execute without error, Willow starts up
correctly, and you can log in, you can safely drop open the database
again and drop the projects_bak and sessions_bak tables with

```
DROP TABLE projects_bak;
DROP TABLE sessions_bak;
```

---

References: https://todo.sr.ht/~amolith/willow/14

Change summary

db/sql/schema.sql | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

Detailed changes

db/sql/schema.sql 🔗

@@ -16,7 +16,7 @@ CREATE TABLE users
 -- the session was created
 CREATE TABLE sessions
 (
-    token      TEXT      NOT NULL,
+    token      TEXT      NOT NULL PRIMARY KEY,
     username   TEXT      NOT NULL,
     expires    TIMESTAMP NOT NULL,
     created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
@@ -26,7 +26,7 @@ CREATE TABLE sessions
 -- timestamp of when the project was added
 CREATE TABLE projects
 (
-    url        TEXT      NOT NULL,
+    url        TEXT      NOT NULL PRIMARY KEY,
     name       TEXT      NOT NULL,
     forge      TEXT      NOT NULL,
     version    TEXT      NOT NULL,
@@ -44,4 +44,4 @@ CREATE TABLE releases
     content     TEXT      NOT NULL,
     date        TIMESTAMP NOT NULL,
     created_at  TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
-);
+);