diff --git a/.env b/.env index 3bc4ef8..394d765 100644 --- a/.env +++ b/.env @@ -1,3 +1,2 @@ -DB_PATH=:memory: ADMIN_PASSWORD_HASH=ZnPOVo2E_oWm71aQ-eOX9U3-gIE2hR6nfksboNcLNPQ ADMIN_PASSWORD_SALT=q6kQ8SNKeaVVQDbhb7TgyqdTp8KAO31rU-6AGT1xG0o \ No newline at end of file diff --git a/server/sqlite.ts b/server/sqlite.ts index f03b7d7..26838fd 100644 --- a/server/sqlite.ts +++ b/server/sqlite.ts @@ -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`