Commit Graph

6 Commits

Author SHA1 Message Date
Amolith 0675278fe2
Implement migration system, add first migration
Thank you for the help Chris!
https://github.com/whereswaldon
2023-12-22 17:59:19 -05:00
Amolith 46728ebe26
link SQL script for initial schema 2023-12-20 14:32:33 -05:00
Amolith 35f3ba1a89
remove SQL comments 2023-12-20 14:21:21 -05:00
Amolith aa29366696
BREAKING-ish: SQL schema correction
While refactoring the schema yesterday, I forgot to add primary keys
back to the sessions and projects tables. Databases existing before
commit 984d44775b are fine and new
databases should be initialised correctly, but databases created between
commit 984d44775b 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
2023-10-30 18:41:48 -04:00
Amolith 984d44775b
BREAKING: SQL schema change
- Redo schema to improve handling of lightweight tags
- Try to clean up empty directories when untracking a project

To resolve schema conflict, run `sqlite3 willow.sqlite` and paste the
following:

ALTER TABLE releases RENAME TO releases_bak;
CREATE TABLE releases
(
    id          TEXT      NOT NULL PRIMARY KEY,
    project_url TEXT      NOT NULL,
    release_url TEXT      NOT NULL,
    tag         TEXT      NOT NULL,
    content     TEXT      NOT NULL,
    date        TIMESTAMP NOT NULL,
    created_at  TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

If everything works as expected, you can `DROP TABLE releases_bak`.
2023-10-29 10:41:00 -04:00
Amolith ef9544ff7d Beeg refactor for database and users and auth 2023-10-25 00:14:32 -04:00