Server: SQL fixes

This commit is contained in:
Val Packett 2023-07-12 02:22:32 -03:00
parent 363a6ae586
commit cafd88663a
2 changed files with 8 additions and 3 deletions

1
.env
View file

@ -1,3 +1,2 @@
DB_PATH=:memory:
ADMIN_PASSWORD_HASH=ZnPOVo2E_oWm71aQ-eOX9U3-gIE2hR6nfksboNcLNPQ
ADMIN_PASSWORD_SALT=q6kQ8SNKeaVVQDbhb7TgyqdTp8KAO31rU-6AGT1xG0o

View file

@ -41,7 +41,7 @@ export class SQLiteDatastore extends DB {
name TEXT NOT NULL,
FOREIGN KEY(token) REFERENCES wikis(token) ON DELETE CASCADE,
FOREIGN KEY(etag) REFERENCES files(etag),
PRIMARY KEY (token, etag)
PRIMARY KEY (token, etag, name)
) STRICT;
CREATE TRIGGER files_cleanup AFTER DELETE ON wikifiles BEGIN
DELETE FROM files WHERE etag = OLD.etag AND (SELECT COUNT(*) FROM wikifiles WHERE etag = OLD.etag) = 0;
@ -118,7 +118,13 @@ export class SQLiteDatastore extends DB {
}
associateFile(token: string, etag: Uint8Array, name: string) {
this.query(sql`INSERT INTO wikifiles (token, etag, name) VALUES (:token, :etag, :name)`, { token, etag, name });
this.query(
sql`
INSERT INTO wikifiles (token, etag, name) VALUES (:token, :etag, :name)
ON CONFLICT (token, etag, name) DO NOTHING
`,
{ token, etag, name },
);
}
#wikiFileQuery = this.prepareQuery<[], File>(sql`