You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
FROM "casualVotes" LEFT JOIN "casualVoteTitles" ON "casualVotes"."videoID" = "casualVoteTitles"."videoID" AND "casualVotes"."service" = "casualVoteTitles"."service" AND "casualVotes"."titleID" = "casualVoteTitles"."id"
58
+
WHERE "casualVotes"."videoID" = ? AND "casualVotes"."service" = ?
59
+
ORDER BY "casualVotes"."timeSubmitted" ASC`,
59
60
[videoID,service],
60
61
{useReplica: true}
61
62
)asPromise<CasualVoteDBResult[]>;
@@ -131,9 +132,10 @@ export async function getVideoBrandingByHash(videoHashPrefix: VideoIDHash, servi
131
132
132
133
constgetCasualVotes=()=>db.prepare(
133
134
"all",
134
-
`SELECT "videoID", "category", "upvotes" FROM "casualVotes"
FROM "casualVotes" LEFT JOIN "casualVoteTitles" ON "casualVotes"."videoID" = "casualVoteTitles"."videoID" AND "casualVotes"."service" = "casualVoteTitles"."service" AND "casualVotes"."titleID" = "casualVoteTitles"."id"
137
+
WHERE "casualVotes"."hashedVideoID" LIKE ? AND "casualVotes"."service" = ?
138
+
ORDER BY "casualVotes"."timeSubmitted" ASC`,
137
139
[`${videoHashPrefix}%`,service],
138
140
{useReplica: true}
139
141
)asPromise<CasualVoteHashDBResult[]>;
@@ -233,7 +235,8 @@ async function filterAndSortBranding(videoID: VideoID, returnUserID: boolean, fe
consttitles=awaitdb.prepare("all",`SELECT "title", "id" from "casualVoteTitles" WHERE "videoID" = ? AND "service" = ? ORDER BY "id"`,[videoID,service])as{title: string,id: number}[];
consttitles=awaitdb.prepare("all",`SELECT "title", "id" from "casualVoteTitles" WHERE "videoID" = ? AND "service" = ? ORDER BY "id"`,[videoID,service])as{title: string,id: number}[];
71
+
if(titles.length>0){
72
+
titleID=titles[titles.length-1].id;
73
+
}
74
+
}
75
+
53
76
constnow=Date.now();
54
77
for(constcategoryofcategories){
55
-
constexistingUUID=(awaitdb.prepare("get",`SELECT "UUID" from "casualVotes" where "videoID" = ? AND "category" = ?`,[videoID,category]))?.UUID;
78
+
constexistingUUID=(awaitdb.prepare("get",`SELECT "UUID" from "casualVotes" where "videoID" = ? AND "service" = ? AND "titleID" = ? AND "category" = ?`,[videoID,service,titleID,category]))?.UUID;
constexistingVote=awaitprivateDB.prepare("get",`SELECT "UUID" from "casualVotes" WHERE "videoID" = ? AND "service" = ? AND "userID" = ? AND "category" = ?`,[videoID,service,hashedUserID,category])asExistingVote;
105
+
constexistingVote=awaitprivateDB.prepare("get",`SELECT "UUID" from "casualVotes" WHERE "videoID" = ? AND "service" = ? AND "titleID" = ? AND "userID" = ? AND "category" = ?`,[videoID,service,titleID,hashedUserID,category])asExistingVote;
83
106
if(existingVote){
84
107
returntrue;
85
108
}else{
86
109
if(downvote){
87
110
// Remove upvotes for all categories on this video
88
-
constexistingUpvotes=awaitprivateDB.prepare("all",`SELECT "category" from "casualVotes" WHERE "category" != 'downvote' AND "videoID" = ? AND "service" = ? AND "userID" = ?`,[videoID,service,hashedUserID]);
111
+
constexistingUpvotes=awaitprivateDB.prepare("all",`SELECT "category" from "casualVotes" WHERE "category" != 'downvote' AND "videoID" = ? AND "service" = ? AND "titleID" = ? AND "userID" = ?`,[videoID,service,titleID,hashedUserID]);
89
112
for(constexistingUpvoteofexistingUpvotes){
90
-
awaitdb.prepare("run",`UPDATE "casualVotes" SET "upvotes" = "upvotes" - 1 WHERE "videoID" = ? AND "category" = ?`,[videoID,existingUpvote.category]);
91
-
awaitprivateDB.prepare("run",`DELETE FROM "casualVotes" WHERE "videoID" = ? AND "userID" = ? AND "category" = ?`,[videoID,hashedUserID,existingUpvote.category]);
113
+
awaitdb.prepare("run",`UPDATE "casualVotes" SET "upvotes" = "upvotes" - 1 WHERE "videoID" = ? AND "service" = ? AND "titleID" = ? AND "category" = ?`,[videoID,service,titleID,existingUpvote.category]);
114
+
awaitprivateDB.prepare("run",`DELETE FROM "casualVotes" WHERE "videoID" = ? AND "service" = ? AND "titleID" = ? AND "userID" = ? AND "category" = ?`,[videoID,service,titleID,hashedUserID,existingUpvote.category]);
92
115
}
93
116
}else{
94
117
// Undo a downvote if it exists
95
-
constexistingDownvote=awaitprivateDB.prepare("get",`SELECT "UUID" from "casualVotes" WHERE "category" = 'downvote' AND "videoID" = ? AND "service" = ? AND "userID" = ?`,[videoID,service,hashedUserID])asExistingVote;
118
+
constexistingDownvote=awaitprivateDB.prepare("get",`SELECT "UUID" from "casualVotes" WHERE "category" = 'downvote' AND "videoID" = ? AND "service" = ? AND "titleID" = ? AND "userID" = ?`,[videoID,service,titleID,hashedUserID])asExistingVote;
96
119
if(existingDownvote){
97
-
awaitdb.prepare("run",`UPDATE "casualVotes" SET "upvotes" = "upvotes" - 1 WHERE "category" = 'downvote' AND "videoID" = ?`,[videoID]);
98
-
awaitprivateDB.prepare("run",`DELETE FROM "casualVotes" WHERE "category" = 'downvote' AND "videoID" = ? AND "userID" = ?`,[videoID,hashedUserID]);
120
+
awaitdb.prepare("run",`UPDATE "casualVotes" SET "upvotes" = "upvotes" - 1 WHERE "category" = 'downvote' AND "videoID" = ? AND "service" = ? AND "titleID" = ?`,[videoID,service,titleID]);
121
+
awaitprivateDB.prepare("run",`DELETE FROM "casualVotes" WHERE "category" = 'downvote' AND "videoID" = ? AND "service" = ? AND "titleID" = ? AND "userID" = ?`,[videoID,service,titleID,hashedUserID]);
Copy file name to clipboardExpand all lines: test/cases/postCasual.ts
+39-1Lines changed: 39 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ describe("postCasual", () => {
16
16
data
17
17
});
18
18
19
-
constqueryCasualVotesByVideo=(videoID: string,all=false)=>db.prepare(all ? "all" : "get",`SELECT * FROM "casualVotes" WHERE "videoID" = ? ORDER BY "timeSubmitted" ASC`,[videoID]);
19
+
constqueryCasualVotesByVideo=(videoID: string,all=false,titleID=0)=>db.prepare(all ? "all" : "get",`SELECT * FROM "casualVotes" WHERE "videoID" = ? AND "titleID" = ? ORDER BY "timeSubmitted" ASC`,[videoID,titleID]);
0 commit comments