-
-
Notifications
You must be signed in to change notification settings - Fork 1
refactor: dataloader app #75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
022f8cd
81f6043
d59efbd
e855fd8
6ca7ba9
34fa5c5
c5693de
dc6971f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -2,7 +2,7 @@ | |||||
| "name": "@metro-now/backend", | ||||||
| "scripts": { | ||||||
| "typegen": "ts-node ./src/scripts/generate-types.ts", | ||||||
| "prebuild": "rimraf dist && pnpm prisma:generate && pnpm typegen", | ||||||
| "prebuild": "rimraf dist && pnpm typegen", | ||||||
| "build": "nest build", | ||||||
| "start": "nest start", | ||||||
| "dev": "nest start --watch", | ||||||
|
|
@@ -15,18 +15,13 @@ | |||||
| "test:watch": "jest --watch", | ||||||
| "test:cov": "jest --coverage", | ||||||
| "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", | ||||||
| "test:e2e": "jest --config ./e2e/jest-e2e.json", | ||||||
| "prisma:studio": "dotenv -e .env.local -- prisma studio", | ||||||
| "prisma:generate": "prisma generate", | ||||||
| "prisma:migrate:create": "dotenv -e .env.local -- prisma migrate dev", | ||||||
| "prisma:migrate:deploy": "dotenv -e .env.local -- prisma migrate deploy", | ||||||
| "prisma:push": "dotenv -e .env.local -- prisma db push", | ||||||
| "prisma:seed": "prisma db seed" | ||||||
| "test:e2e": "jest --config ./e2e/jest-e2e.json" | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Line 16 now builds 🔁 Suggested fix- "test:e2e": "jest --config ./e2e/jest-e2e.json"
+ "test:e2e": "pnpm --filter `@metro-now/shared` build && pnpm --filter `@metro-now/database` build && jest --config ./e2e/jest-e2e.json"📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||
| }, | ||||||
| "dependencies": { | ||||||
| "@apollo/server": "^4.11.3", | ||||||
| "@fast-csv/parse": "^5.0.2", | ||||||
| "@keyv/redis": "^4.3.3", | ||||||
| "@metro-now/database": "workspace:*", | ||||||
| "@nestjs/apollo": "^13.0.4", | ||||||
| "@nestjs/cache-manager": "^3.0.1", | ||||||
| "@nestjs/common": "^11.0.13", | ||||||
|
|
@@ -36,7 +31,6 @@ | |||||
| "@nestjs/platform-express": "^11.0.13", | ||||||
| "@nestjs/schedule": "^5.0.1", | ||||||
| "@nestjs/swagger": "^11.1.1", | ||||||
| "@prisma/client": "5.20.0", | ||||||
| "cache-manager": "^6.4.2", | ||||||
| "dataloader": "^2.2.3", | ||||||
| "graphql": "^16.10.0", | ||||||
|
|
@@ -74,10 +68,6 @@ | |||||
| "tsconfig-paths": "^4.2.0", | ||||||
| "typescript": "^5.8.3" | ||||||
| }, | ||||||
| "optionalDependencies": { | ||||||
| "dotenv-cli": "^8.0.0", | ||||||
| "prisma": "^5.20.0" | ||||||
| }, | ||||||
| "jest": { | ||||||
| "moduleFileExtensions": [ | ||||||
| "js", | ||||||
|
|
@@ -97,8 +87,5 @@ | |||||
| ], | ||||||
| "coverageDirectory": "../coverage", | ||||||
| "testEnvironment": "node" | ||||||
| }, | ||||||
| "prisma": { | ||||||
| "seed": "dotenv -e .env.local -- ts-node prisma/seed.ts" | ||||||
| } | ||||||
| } | ||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,5 @@ | ||
| import { Injectable } from "@nestjs/common"; | ||
| import { Prisma } from "@prisma/client"; | ||
| import { Prisma } from "@metro-now/database"; | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chainPrisma model types missing via @metro-now/database; generate and re‑export properly The switch to
Minimal code tweak (type‑only import) to avoid value import, though the root cause still needs the generation step: -import { Prisma } from "@metro-now/database";
+import type { Prisma } from "@metro-now/database";To restore CI determinism, reintroduce a workspace generate step in backend prebuild (see package.json comment). Run to verify database pkg wiring: 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "Check database index.ts re-exports:"
fd -a '^index\.(ts|tsx|cts|mts)$' apps/database | xargs -I{} sed -n '1,120p' {}
echo "Check prisma generate hooks in apps/database/package.json:"
jq -r '.scripts | to_entries[] | select(.key|test("prepare|postinstall|generate|prisma")).key + ": " + .value' apps/database/package.json || true
echo "Check root/workspace db scripts:"
jq -r '.scripts | to_entries[] | select(.key|test("^db:")).key + ": " + .value' package.json || true
echo "Check backend prebuild:"
jq -r '.scripts.prebuild' apps/backend/package.jsonLength of output: 1252 Import Prisma types as type-only and run workspace prisma:generate before backend build
-import { Prisma } from "@metro-now/database";
+import type { Prisma } from "@metro-now/database";
"prebuild": "rimraf dist && pnpm -w run db:generate && pnpm typegen"🤖 Prompt for AI Agents |
||
| import { group } from "radash"; | ||
|
|
||
| import { PrismaService } from "src/modules/prisma/prisma.service"; | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| DATABASE_URL="postgresql://postgres_user:postgres_password@localhost:5432/metro-now?schema=public" |
| Original file line number | Diff line number | Diff line change | ||||||
|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1 @@ | ||||||||
| export * from "@prisma/client"; | ||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Re-export Prisma namespace explicitly (unblocks compile errors for Prisma.sql/empty and generated model types). Some TS setups don’t forward the namespace cleanly with -export * from "@prisma/client";
+export { Prisma, PrismaClient } from "@prisma/client";
+export * from "@prisma/client";📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,29 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "name": "@metro-now/database", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "main": "index.ts", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "types": "index.ts", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "scripts": { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "prisma:studio": "dotenv -e ../backend/.env.local -- prisma studio", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "prisma:generate": "prisma generate", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "prisma:migrate:create": "dotenv -e ../backend/.env.local -- prisma migrate dev", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "prisma:migrate:deploy": "dotenv -e ../backend/.env.local -- prisma migrate deploy", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "prisma:push": "dotenv -e ../backend/.env.local -- prisma db push", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "prisma:seed": "prisma db seed", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "prisma:reset": "dotenv -e ../backend/.env.local -- prisma migrate reset", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "prisma:status": "dotenv -e ../backend/.env.local -- prisma migrate status" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "dependencies": { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "@prisma/client": "5.20.0" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "devDependencies": { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "typescript": "^5.8.3", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "ts-node": "^10.9.2" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "optionalDependencies": { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "dotenv-cli": "^8.0.0", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "prisma": "^5.20.0" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "prisma": { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "seed": "dotenv -e ../backend/.env.local -- ts-node prisma/seed.ts" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+1
to
+23
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion 🧩 Analysis chainPublish built artifacts and generate Prisma client on install (prevents backend TS errors). Point {
"name": "@metro-now/database",
- "main": "index.ts",
- "types": "index.ts",
+ "main": "dist/index.js",
+ "types": "dist/index.d.ts",
"scripts": {
+ "build": "tsc -p tsconfig.json",
+ "prepare": "pnpm run build",
+ "postinstall": "pnpm run prisma:generate",
"prisma:studio": "dotenv -e ../backend/.env.local -- prisma studio",
"prisma:generate": "prisma generate",
"prisma:migrate:create": "dotenv -e ../backend/.env.local -- prisma migrate dev",
"prisma:migrate:deploy": "dotenv -e ../backend/.env.local -- prisma migrate deploy",
"prisma:push": "dotenv -e ../backend/.env.local -- prisma db push",
"prisma:seed": "prisma db seed",
"prisma:reset": "dotenv -e ../backend/.env.local -- prisma migrate reset",
"prisma:status": "dotenv -e ../backend/.env.local -- prisma migrate status"
},Optional: add an 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "PWD: $(pwd)"
echo "---- root package.json (upto 200 lines) ----"
[ -f package.json ] && sed -n '1,200p' package.json || echo "no root package.json"
echo "---- apps/database/package.json ----"
[ -f apps/database/package.json ] && sed -n '1,200p' apps/database/package.json || echo "no apps/database/package.json"
echo "---- apps/database listing ----"
ls -la apps/database || true
echo "---- apps/database/tsconfig.json ----"
[ -f apps/database/tsconfig.json ] && sed -n '1,200p' apps/database/tsconfig.json || echo "no apps/database/tsconfig.json"
echo "---- root tsconfig.json ----"
[ -f tsconfig.json ] && sed -n '1,200p' tsconfig.json || echo "no root tsconfig.json"
echo "---- apps/database/dist exists? ----"
[ -d apps/database/dist ] && { echo "dist exists:"; ls -la apps/database/dist || true; } || echo "no apps/database/dist"
echo "---- search repo for prisma/schema and related scripts ----"
rg -n --hidden --glob '!node_modules/**' "schema.prisma|prisma generate|prisma:generate|prisma:studio" || true
echo "---- search repo for @metro-now/database usage ----"
rg -n --hidden --glob '!node_modules/**' "@metro-now/database" || true
echo "---- search for 'main\": \"index.ts' occurrences ----"
rg -n --hidden --glob '!node_modules/**' '"main"\s*:\s*"index\.ts"' || true
echo "---- search for prepare/postinstall/build scripts ----"
rg -n --hidden --glob '!node_modules/**' '"prepare"\s*:|"postinstall"\s*:|"build"\s*:' || true
echo "---- pnpm markers ----"
[ -f pnpm-workspace.yaml ] && echo "pnpm-workspace.yaml present" || echo "no pnpm-workspace.yaml"
[ -f pnpm-lock.yaml ] && echo "pnpm-lock.yaml present" || echo "no pnpm-lock.yaml"
rg -n --hidden --glob '!node_modules/**' '"packageManager"\s*:\s*".*pnpm' || true
echo "---- done ----"Length of output: 5392 Publish built artifacts and run Prisma generate on install tsconfig outputs to ./dist but package.json points at index.ts and has no build — add build/prepare/postinstall so workspace builds the package and generated Prisma types are present. File: apps/database/package.json {
"name": "@metro-now/database",
- "main": "index.ts",
- "types": "index.ts",
+ "main": "dist/index.js",
+ "types": "dist/index.d.ts",
"scripts": {
+ "build": "tsc -p tsconfig.json",
+ "prepare": "pnpm run build",
+ "postinstall": "pnpm run prisma:generate",
"prisma:studio": "dotenv -e ../backend/.env.local -- prisma studio",
"prisma:generate": "prisma generate",
"prisma:migrate:create": "dotenv -e ../backend/.env.local -- prisma migrate dev",
"prisma:migrate:deploy": "dotenv -e ../backend/.env.local -- prisma migrate deploy",
"prisma:push": "dotenv -e ../backend/.env.local -- prisma db push",
"prisma:seed": "prisma db seed",
"prisma:reset": "dotenv -e ../backend/.env.local -- prisma migrate reset",
"prisma:status": "dotenv -e ../backend/.env.local -- prisma migrate status"
},📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| { | ||
| "compilerOptions": { | ||
| "target": "ES2020", | ||
| "module": "commonjs", | ||
| "lib": ["ES2020"], | ||
| "outDir": "./dist", | ||
| "rootDir": "./", | ||
| "strict": true, | ||
| "esModuleInterop": true, | ||
| "skipLibCheck": true, | ||
| "forceConsistentCasingInFileNames": true, | ||
| "declaration": true, | ||
| "declarationMap": true, | ||
| "sourceMap": true | ||
| }, | ||
| "include": ["index.ts", "prisma/**/*"], | ||
| "exclude": ["node_modules", "dist"] | ||
| } |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Uh oh!
There was an error while loading. Please reload this page.