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_HASH=ZnPOVo2E_oWm71aQ-eOX9U3-gIE2hR6nfksboNcLNPQ
ADMIN_PASSWORD_SALT=q6kQ8SNKeaVVQDbhb7TgyqdTp8KAO31rU-6AGT1xG0o ADMIN_PASSWORD_SALT=q6kQ8SNKeaVVQDbhb7TgyqdTp8KAO31rU-6AGT1xG0o

View file

@ -41,7 +41,7 @@ export class SQLiteDatastore extends DB {
name TEXT NOT NULL, name TEXT NOT NULL,
FOREIGN KEY(token) REFERENCES wikis(token) ON DELETE CASCADE, FOREIGN KEY(token) REFERENCES wikis(token) ON DELETE CASCADE,
FOREIGN KEY(etag) REFERENCES files(etag), FOREIGN KEY(etag) REFERENCES files(etag),
PRIMARY KEY (token, etag) PRIMARY KEY (token, etag, name)
) STRICT; ) STRICT;
CREATE TRIGGER files_cleanup AFTER DELETE ON wikifiles BEGIN 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; 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) { 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` #wikiFileQuery = this.prepareQuery<[], File>(sql`