Skip to content
This repository was archived by the owner on Nov 10, 2025. It is now read-only.

Commit 645e5bb

Browse files
authored
feat: PMD-83 & PMD-84 & PMD-85 (#725)
1 parent f193f78 commit 645e5bb

23 files changed

+271
-72
lines changed

master/pnpm-lock.yaml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pnpm-lock.yaml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

worker/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
"build": "tsc && devScript --copyOnly"
1010
},
1111
"dependencies": {
12+
"@keyv/redis": "^2.5.1",
1213
"@sentry/node": "^6.19.2",
1314
"@sentry/tracing": "^6.19.2",
1415
"apollo-datasource": "^3.3.1",
15-
"apollo-mongodb-datasource": "^1.3.3",
1616
"apollo-server-cache-redis": "^3.3.1",
1717
"apollo-server-caching": "^3.3.0",
1818
"apollo-server-core": "^3.6.6",
@@ -27,6 +27,7 @@
2727
"language-flag-colors": "^2.1.1",
2828
"lodash": "^4.17.21",
2929
"mongodb": "^4.4.1",
30+
"mongodb-caching": "^1.1.0",
3031
"p-event": "^4.2.0",
3132
"source-map-support": "^0.5.21",
3233
"validator": "^13.7.0"

worker/pnpm-lock.yaml

Lines changed: 50 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

worker/src/generic/ffUpdates.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import MongoDataSource from "apollo-mongodb-datasource";
21
import { RouteGenericInterface, RouteHandlerMethod } from "fastify/types/route";
32
import { IncomingMessage, Server, ServerResponse } from "http";
3+
import MongoDBCaching from "mongodb-caching";
44

55
import { dSources } from "../util/dataSources";
66

7-
export class FFUpdates extends MongoDataSource {
7+
export class FFUpdates extends MongoDBCaching {
88
getAll() {
99
return this.find();
1010
}
@@ -19,6 +19,7 @@ const handler: RouteHandlerMethod<
1919
> = async (req, res) => {
2020
const updates = await dSources.ffUpdates.getAll();
2121

22+
//@ts-ignore
2223
for (const u of updates) delete u._id;
2324

2425
return res.send({

worker/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,14 @@ async function run() {
8181
]
8282
};
8383

84+
//@ts-ignore
8485
v3Server = new ApolloServer({
8586
...apolloGenericSettings,
8687
typeDefs: await v3TypeDefs,
8788
resolvers: await v3Resolvers
8889
});
8990

91+
//@ts-ignore
9092
v4Server = new ApolloServer({
9193
...apolloGenericSettings,
9294
typeDefs: await v4TypeDefs,

worker/src/util/dataSources.ts

Lines changed: 66 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Db } from "mongodb";
22

3-
import { baseRedisCache, mongodb } from "..";
3+
import { mongodb } from "..";
44
import { FFUpdates } from "../generic/ffUpdates";
55
import { Benefits } from "../v3/fields/benefits";
66
import { BetaUsers } from "../v3/fields/betaUsers";
@@ -21,25 +21,72 @@ export let pmdDb: Db, dSources: ReturnType<typeof dataSources>;
2121
export default function dataSources() {
2222
pmdDb = mongodb.db("PreMiD");
2323

24+
const keyvDefaultOptions = {
25+
uri: process.env.REDIS_URL || "redis://localhost:6379",
26+
ttl: 60 * 1000
27+
};
28+
2429
const sources = {
25-
usage: new Usage(pmdDb.collection("science"), baseRedisCache),
26-
presences: new Presences(pmdDb.collection("presences"), baseRedisCache),
27-
versions: new Versions(pmdDb.collection("versions"), baseRedisCache),
28-
discordUsers: new DiscordUsers(
29-
pmdDb.collection("discordUsers"),
30-
baseRedisCache
31-
),
32-
langFiles: new LangFiles(pmdDb.collection("langFiles"), baseRedisCache),
33-
strings: new Strings(pmdDb.collection("strings"), baseRedisCache),
34-
sponsors: new Sponsors(pmdDb.collection("sponsors"), baseRedisCache),
35-
partners: new Partners(pmdDb.collection("partners"), baseRedisCache),
36-
jobs: new Jobs(pmdDb.collection("jobs"), baseRedisCache),
37-
downloads: new Downloads(pmdDb.collection("downloads"), baseRedisCache),
38-
alphaUsers: new AlphaUsers(pmdDb.collection("alphaUsers"), baseRedisCache),
39-
betaUsers: new BetaUsers(pmdDb.collection("betaUsers"), baseRedisCache),
40-
credits: new Credits(pmdDb.collection("credits"), baseRedisCache),
41-
benefits: new Benefits(pmdDb.collection("benefits"), baseRedisCache),
42-
ffUpdates: new FFUpdates(pmdDb.collection("ffUpdates"), baseRedisCache)
30+
usage: new Usage(pmdDb.collection("science"), {
31+
...keyvDefaultOptions,
32+
namespace: "science"
33+
}),
34+
presences: new Presences(pmdDb.collection("presences"), {
35+
...keyvDefaultOptions,
36+
namespace: "presences"
37+
}),
38+
versions: new Versions(pmdDb.collection("versions"), {
39+
...keyvDefaultOptions,
40+
namespace: "versions"
41+
}),
42+
discordUsers: new DiscordUsers(pmdDb.collection("discordUsers"), {
43+
...keyvDefaultOptions,
44+
namespace: "discordUsers"
45+
}),
46+
langFiles: new LangFiles(pmdDb.collection("langFiles"), {
47+
...keyvDefaultOptions,
48+
namespace: "langFiles"
49+
}),
50+
strings: new Strings(pmdDb.collection("strings"), {
51+
...keyvDefaultOptions,
52+
namespace: "strings"
53+
}),
54+
sponsors: new Sponsors(pmdDb.collection("sponsors"), {
55+
...keyvDefaultOptions,
56+
namespace: "sponsors"
57+
}),
58+
partners: new Partners(pmdDb.collection("partners"), {
59+
...keyvDefaultOptions,
60+
namespace: "partners"
61+
}),
62+
jobs: new Jobs(pmdDb.collection("jobs"), {
63+
...keyvDefaultOptions,
64+
namespace: "jobs"
65+
}),
66+
downloads: new Downloads(pmdDb.collection("downloads"), {
67+
...keyvDefaultOptions,
68+
namespace: "downloads"
69+
}),
70+
alphaUsers: new AlphaUsers(pmdDb.collection("alphaUsers"), {
71+
...keyvDefaultOptions,
72+
namespace: "alphaUsers"
73+
}),
74+
betaUsers: new BetaUsers(pmdDb.collection("betaUsers"), {
75+
...keyvDefaultOptions,
76+
namespace: "betaUsers"
77+
}),
78+
credits: new Credits(pmdDb.collection("credits"), {
79+
...keyvDefaultOptions,
80+
namespace: "credits"
81+
}),
82+
benefits: new Benefits(pmdDb.collection("benefits"), {
83+
...keyvDefaultOptions,
84+
namespace: "benefits"
85+
}),
86+
ffUpdates: new FFUpdates(pmdDb.collection("ffUpdates"), {
87+
...keyvDefaultOptions,
88+
namespace: "ffUpdates"
89+
})
4390
};
4491

4592
dSources = sources;

worker/src/v3/fields/addBetaUser.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ export async function resolver(
4141
}
4242

4343
if (
44-
(await betaUsers.count()) > Math.floor((await discordUsers.count()) * 1)
44+
(await betaUsers.countDocuments()) >
45+
Math.floor((await discordUsers.countDocuments()) * 1)
4546
) {
4647
res.message = "error.noslots";
4748
return res;
@@ -53,7 +54,9 @@ export async function resolver(
5354
}
5455

5556
await betaUsers.add(user.id);
56-
await betaUsers.delete("findOne", { userId: user.id });
57+
await betaUsers.keyv.delete(
58+
"findOne-" + betaUsers.getCacheKey({ userId: user.id }, undefined)
59+
);
5760

5861
res.success = true;
5962
res.message = "User recieved beta access.";

worker/src/v3/fields/benefits.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import MongoDataSource from "apollo-mongodb-datasource";
21
import { gql } from "apollo-server-core";
2+
import MongoDBCaching from "mongodb-caching";
33

44
export const schema = gql`
55
type Query {
@@ -13,7 +13,7 @@ export const schema = gql`
1313
}
1414
`;
1515

16-
export class Benefits extends MongoDataSource {
16+
export class Benefits extends MongoDBCaching {
1717
getAll() {
1818
return this.find();
1919
}

worker/src/v3/fields/betaUsers.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import MongoDataSource from "apollo-mongodb-datasource";
21
import { gql } from "apollo-server-core";
2+
import MongoDBCaching from "mongodb-caching";
33

44
import { pmdDb } from "../../util/dataSources";
55

@@ -13,7 +13,7 @@ export const schema = gql`
1313
}
1414
`;
1515

16-
export class BetaUsers extends MongoDataSource {
16+
export class BetaUsers extends MongoDBCaching {
1717
async has(userId: string) {
1818
return (await this.findOne({ userId })) !== null;
1919
}
@@ -29,5 +29,5 @@ export function resolver(
2929
_1: any,
3030
{ dataSources: { betaUsers } }: { dataSources: { betaUsers: BetaUsers } }
3131
) {
32-
return { number: betaUsers.count() };
32+
return { number: betaUsers.countDocuments() };
3333
}

0 commit comments

Comments
 (0)