Skip to content

Commit 5cf445c

Browse files
committed
wip
1 parent 0f05fe5 commit 5cf445c

37 files changed

Lines changed: 3239 additions & 139 deletions

File tree

.vscode/settings.json

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,6 @@
6363
"**/test-dist": true,
6464
"**/.output": true,
6565
"**/.data": true,
66-
"apps/docs/": true,
67-
"apps/learn": true,
68-
"apps/netlogo": true,
69-
"apps/nettango": true,
7066
},
7167

7268
"cSpell.words": ["autogen", "iconify", "netlogo", "Nuxt", "Pathnames", "reka", "vueuse"]

apps/modeling-commons-backend/.adminjs/bundle.js

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
AdminJS.UserComponents = {}

apps/modeling-commons-backend/package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@
4444
"seed": "tsx prisma/seed.ts"
4545
},
4646
"dependencies": {
47+
"@adminjs/fastify": "^4.2.0",
48+
"@adminjs/prisma": "^5.0.4",
49+
"@adminjs/sql": "^2.2.6",
4750
"@fastify/autoload": "6.3.1",
4851
"@fastify/awilix": "8.2.0",
4952
"@fastify/cors": "11.2.0",
@@ -62,6 +65,8 @@
6265
"@prisma/adapter-pg": "^7.6.0",
6366
"@prisma/client": "latest",
6467
"@repo/modeling-commons-shared": "0.0.0",
68+
"@scalar/fastify-api-reference": "^1.49.7",
69+
"adminjs": "^7.8.17",
6570
"ajv": "8.18.0",
6671
"ajv-formats": "3.0.1",
6772
"awilix": "13.0.3",

apps/modeling-commons-backend/scripts/generate-types.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@ echo "Server is ready (took ${elapsed}s)"
2727

2828
# ── Generate REST types (OpenAPI) ───────────────────────────────────────────
2929
echo "Generating REST client types…"
30-
openapi-typescript "$SERVER_URL/api-docs/json" -o ./client/rest.d.ts
30+
openapi-typescript "$SERVER_URL/api-docs/openapi.json" -o ./client/rest.d.ts
3131
echo "Done — client types written to client/"
3232

3333
# if env CLIENT_TYPES_OUTPUT_DIR is set, also write to that location (for CI)
3434
if [ -n "${CLIENT_TYPES_OUTPUT_DIR:-}" ]; then
3535
echo "Also writing REST client types to ${CLIENT_TYPES_OUTPUT_DIR}"
36-
openapi-typescript "$SERVER_URL/api-docs/json" -o "${CLIENT_TYPES_OUTPUT_DIR}"
36+
openapi-typescript "$SERVER_URL/api-docs/openapi.json" -o "${CLIENT_TYPES_OUTPUT_DIR}"
3737
echo "Done — client types written to ${CLIENT_TYPES_OUTPUT_DIR}"
3838
fi
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
const adminJsDependencies = {
2+
getAdapter: () => import('@adminjs/prisma'),
3+
getDbModule: () => import('#prisma/client'),
4+
getDbClient: async () => {
5+
return (await import('#src/lib/prisma.ts')).default;
6+
},
7+
};
8+
9+
export type AdminJsDependencies = typeof adminJsDependencies;
10+
11+
export default adminJsDependencies;

apps/modeling-commons-backend/src/lib/auth.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import env from '#src/config/env.ts';
22
import { betterAuth } from 'better-auth';
33
import { prismaAdapter } from 'better-auth/adapters/prisma';
4+
import { openAPI } from 'better-auth/plugins';
45

56
import { prisma } from './prisma.ts';
67

@@ -15,6 +16,7 @@ export const auth = betterAuth({
1516
emailAndPassword: {
1617
enabled: true,
1718
},
19+
plugins: [openAPI({ disableDefaultReference: false })],
1820
});
1921

2022
export type Session = typeof auth.$Infer.Session;

apps/modeling-commons-backend/src/modules/file/file.route.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export default async function fileRoutes(fastify: FastifyInstance) {
1212
schema: {
1313
params: fileIdParamsSchema,
1414
response: { 200: fileResponseDtoSchema },
15+
tags: ['File'],
1516
},
1617
preHandler: [requireAuth],
1718
},
@@ -24,7 +25,7 @@ export default async function fileRoutes(fastify: FastifyInstance) {
2425
fastify.get<{ Params: FileIdParams }>(
2526
'/v1/files/:id/download',
2627
{
27-
schema: { params: fileIdParamsSchema },
28+
schema: { params: fileIdParamsSchema, tags: ['File'] },
2829
preHandler: [requireAuth],
2930
},
3031
async (request, reply) => {

apps/modeling-commons-backend/src/modules/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import makePrismaTransactionManager from '#src/shared/db/prisma-transaction.mana
88
import type { TransactionManager } from '#src/shared/db/transaction.port.ts';
99
import { asFunction, asValue, type Resolver } from 'awilix';
1010
import type { FastifyBaseLogger } from 'fastify';
11+
import type { AdminJsDependencies } from '#src/lib/adminjs.ts';
12+
import adminJsDependencies from '#src/lib/adminjs.ts';
1113

1214
type Resolvers<T> = {
1315
[K in keyof T]: Resolver<T[K]>;

apps/modeling-commons-backend/src/modules/model-additional-file/model-additional-file.route.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export default async function modelAdditionalFileRoutes(fastify: FastifyInstance
2121
schema: {
2222
params: modelIdParamsSchema,
2323
response: { 201: modelAdditionalFileResponseDtoSchema },
24+
tags: ['Model', 'File'],
2425
},
2526
preHandler: [requireAuth, resolveModel('write')],
2627
},
@@ -58,14 +59,12 @@ export default async function modelAdditionalFileRoutes(fastify: FastifyInstance
5859
{
5960
schema: {
6061
params: additionalFileParamsSchema,
62+
tags: ['Model', 'File'],
6163
},
6264
preHandler: [requireAuth, resolveModel('admin')],
6365
},
6466
async (request, reply) => {
65-
await modelAdditionalFileService.remove(
66-
request.params.fileId,
67-
request.user!.id,
68-
);
67+
await modelAdditionalFileService.remove(request.params.fileId, request.user!.id);
6968
return reply.code(204).send();
7069
},
7170
);
@@ -77,6 +76,7 @@ export default async function modelAdditionalFileRoutes(fastify: FastifyInstance
7776
params: modelIdParamsSchema,
7877
querystring: listAdditionalFilesQuerySchema,
7978
response: { 200: Type.Array(modelAdditionalFileResponseDtoSchema) },
79+
tags: ['Model', 'File'],
8080
},
8181
preHandler: [resolveModel('read')],
8282
},

0 commit comments

Comments
 (0)