diff --git a/databases/_private.db.sql b/databases/_private.db.sql index 4517c71..7e41b16 100644 --- a/databases/_private.db.sql +++ b/databases/_private.db.sql @@ -29,7 +29,7 @@ CREATE TABLE IF NOT EXISTS "config" ( "value" TEXT NOT NULL ); -CREATE INDEX IF NOT EXISTS sponsorTimes_hashedIP on sponsorTimes(hashedIP); -CREATE INDEX IF NOT EXISTS votes_userID on votes(UUID); +CREATE INDEX IF NOT EXISTS "sponsorTimes_hashedIP" on "sponsorTimes"("hashedIP"); +CREATE INDEX IF NOT EXISTS "votes_userID" on "votes"("UUID"); COMMIT; diff --git a/databases/_upgrade_private_1.sql b/databases/_upgrade_private_1.sql index c4de7e9..b4d7fec 100644 --- a/databases/_upgrade_private_1.sql +++ b/databases/_upgrade_private_1.sql @@ -3,6 +3,6 @@ BEGIN TRANSACTION; /* for testing the db upgrade, don't remove because it looks empty */ /* Add version to config */ -INSERT INTO config (key, value) VALUES("version", 1); +INSERT INTO config (key, value) VALUES('version', 1); COMMIT; \ No newline at end of file diff --git a/src/databases/databases.ts b/src/databases/databases.ts index 41c6b9e..255840b 100644 --- a/src/databases/databases.ts +++ b/src/databases/databases.ts @@ -17,18 +17,28 @@ if (config.mysql) { fileNamePrefix: 'sponsorTimes', readOnly: config.readOnly, createDbIfNotExists: config.createDatabaseIfNotExist, - enableWalCheckpointNumber: !config.readOnly && config.mode === "production", - postgres: config.postgres + postgres: { + user: config.postgres?.user, + host: config.postgres?.host, + database: "sponsorTimes", + password: config.postgres?.password, + port: config.postgres?.port, + } }); - privateDB = new Sqlite({ - dbPath: config.privateDB, + privateDB = new Postgres({ dbSchemaFileName: config.privateDBSchema, dbSchemaFolder: config.schemaFolder, fileNamePrefix: 'private', readOnly: config.readOnly, createDbIfNotExists: config.createDatabaseIfNotExist, - enableWalCheckpointNumber: false + postgres: { + user: config.postgres?.user, + host: config.postgres?.host, + database: "privateDB", + password: config.postgres?.password, + port: config.postgres?.port, + } }); } else { db = new Sqlite({ diff --git a/src/routes/voteOnSponsorTime.ts b/src/routes/voteOnSponsorTime.ts index d74bc9b..bfe9110 100644 --- a/src/routes/voteOnSponsorTime.ts +++ b/src/routes/voteOnSponsorTime.ts @@ -143,7 +143,7 @@ async function sendWebhooks(voteData: VoteData) { async function categoryVote(UUID: string, userID: string, isVIP: boolean, isOwnSubmission: boolean, category: string, hashedIP: string, res: Response) { // Check if they've already made a vote - const usersLastVoteInfo = await privateDB.prepare('get', `select count(*) as votes, category from "categoryVotes" where "UUID" = ? and "userID" = ?`, [UUID, userID]); + const usersLastVoteInfo = await privateDB.prepare('get', `select count(*) as votes, category from "categoryVotes" where "UUID" = ? and "userID" = ? group by category`, [UUID, userID]); if (usersLastVoteInfo?.category === category) { // Double vote, ignore @@ -250,7 +250,6 @@ export async function voteOnSponsorTime(req: Request, res: Response) { //check if user voting on own submission const isOwnSubmission = (await db.prepare("get", `SELECT "UUID" as "submissionCount" FROM "sponsorTimes" where "userID" = ? AND "UUID" = ?`, [nonAnonUserID, UUID])) !== undefined; - // If not upvote if (!isVIP && type !== 1) { const isSegmentLocked = async () => !!(await db.prepare('get', `SELECT "locked" FROM "sponsorTimes" WHERE "UUID" = ?`, [UUID]))?.locked;