diff --git a/new/backend/package.json b/new/backend/package.json index eb7eb5552..0eda20866 100644 --- a/new/backend/package.json +++ b/new/backend/package.json @@ -24,7 +24,6 @@ "keywords": [], "author": "", "dependencies": { - ".prisma/client": "link:prisma/dist", "@fastify/type-provider-typebox": "^3.5.0", "@prisma/client": "5.3.1", "@pronounspage/common": "workspace:*", @@ -44,6 +43,8 @@ "typescript": "^5.2.2" }, "imports": { - "#self/*": "./dist/*.js" + "#self/*": "./dist/*.js", + "#prisma": "./prisma/dist/index.js", + "#prisma/*": "./prisma/dist/*.js" } } diff --git a/new/backend/src/db.ts b/new/backend/src/db.ts new file mode 100644 index 000000000..7828548b2 --- /dev/null +++ b/new/backend/src/db.ts @@ -0,0 +1,4 @@ +import { PrismaClient } from "#prisma"; +export type * from "#prisma"; + +export const db = new PrismaClient(); diff --git a/new/backend/src/server/v1.ts b/new/backend/src/server/v1.ts index ef3cdcd1f..4d1284020 100644 --- a/new/backend/src/server/v1.ts +++ b/new/backend/src/server/v1.ts @@ -2,12 +2,12 @@ import { Type } from "@sinclair/typebox"; import { allPronounVariants, examplesFor, - getLocale, Locale, Pronoun, PronounExample, } from "#self/locales"; import pronouns from "#self/server/v1/pronouns"; +import inclusive from "#self/server/v1/inclusive"; export type V1AppInstance = AppInstance; @@ -107,5 +107,6 @@ export function transformPronoun( export const routes = async function (app: AppInstance) { app.register(pronouns); + app.register(inclusive); } satisfies AppPluginAsync; export default routes; diff --git a/new/backend/src/server/v1/inclusive.ts b/new/backend/src/server/v1/inclusive.ts new file mode 100644 index 000000000..fb61f6492 --- /dev/null +++ b/new/backend/src/server/v1/inclusive.ts @@ -0,0 +1,33 @@ +import { localeSpecific } from "#self/server/v1"; +import { db, Inclusive } from "#self/db"; + +export function transformInclusive(inc: Inclusive) { + return { + id: inc.id, + insteadOf: inc.insteadOf, + say: inc.say, + because: inc.because, + locale: inc.locale, + }; +} + +export const plugin = async function (app) { + app.get( + "/:locale/inclusive", + { + schema: { + params: localeSpecific, + }, + }, + async (req, reply) => { + const values = await db.inclusive.findMany({ + where: { + locale: req.params.locale, + }, + take: 50, + }); + return reply.send(values.map(transformInclusive)); + } + ); +} satisfies AppPluginAsync; +export default plugin; diff --git a/new/backend/tsconfig.json b/new/backend/tsconfig.json index c49a1544f..0058635cd 100644 --- a/new/backend/tsconfig.json +++ b/new/backend/tsconfig.json @@ -9,7 +9,8 @@ "outDir": "./dist", "resolvePackageJsonExports": true, "paths": { - "#self/*": ["./src/*.js"] + "#self/*": ["./src/*.js"], + "#prisma": ["./prisma/dist/index.d.ts"] }, "incremental": true, "strictNullChecks": true,