From 4a9a27fa3421516c37e55a6de8b297844ecdde98 Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Sat, 18 Apr 2026 00:01:57 +0100 Subject: [PATCH] fix prisma interface error --- prisma/schema.prisma | 2 ++ src/module/articles/articles.controller.ts | 3 ++- src/module/articles/articles.service.ts | 3 ++- src/module/bookmarks/bookmarks.controller.ts | 2 +- src/module/bookmarks/bookmarks.service.ts | 3 ++- src/module/comments/comments.controller.ts | 2 +- src/module/comments/comments.service.ts | 3 ++- src/module/profile/profile.controller.ts | 8 ++++---- src/module/users/users.controller.ts | 2 +- src/module/users/users.service.ts | 3 ++- src/shared/decorators/current-db-user.decorator.ts | 2 +- src/types/express.d.ts | 2 +- tsconfig.json | 3 +++ 13 files changed, 24 insertions(+), 14 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 6ce7e44..828d495 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -1,5 +1,7 @@ generator client { provider = "prisma-client-js" + // Stable location for types + runtime; fixes TS not resolving `@prisma/client` → `.prisma/…` under pnpm + NodeNext + output = "../node_modules/.prisma/client" } datasource db { diff --git a/src/module/articles/articles.controller.ts b/src/module/articles/articles.controller.ts index 978f0a1..71f367d 100644 --- a/src/module/articles/articles.controller.ts +++ b/src/module/articles/articles.controller.ts @@ -11,7 +11,8 @@ import { UseGuards, } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; -import { User, UserRole } from '@prisma/client'; +import type { User } from '@prisma/client'; +import { UserRole } from '@prisma/client'; import { CurrentDbUser } from '../../shared/decorators/current-db-user.decorator'; import { Roles } from '../../shared/decorators/roles.decorator'; import { RolesGuard } from '../../shared/guards/roles.guard'; diff --git a/src/module/articles/articles.service.ts b/src/module/articles/articles.service.ts index d2f851a..9bf1289 100644 --- a/src/module/articles/articles.service.ts +++ b/src/module/articles/articles.service.ts @@ -4,7 +4,8 @@ import { Injectable, NotFoundException, } from '@nestjs/common'; -import { Article, ArticleStatus, Prisma, User, UserRole } from '@prisma/client'; +import { ArticleStatus, Prisma, UserRole } from '@prisma/client'; +import type { Article, User } from '@prisma/client'; import { PrismaService } from '../../shared/prisma/prisma.service'; import { slugify } from '../../shared/utils/slug'; import { AttachImageDto } from './dto/attach-image.dto'; diff --git a/src/module/bookmarks/bookmarks.controller.ts b/src/module/bookmarks/bookmarks.controller.ts index 4b1d4ca..8a6db5d 100644 --- a/src/module/bookmarks/bookmarks.controller.ts +++ b/src/module/bookmarks/bookmarks.controller.ts @@ -12,7 +12,7 @@ import { } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; import { CurrentDbUser } from '../../shared/decorators/current-db-user.decorator'; -import { User } from '@prisma/client'; +import type { User } from '@prisma/client'; import { UserProvisioningGuard } from '../users/user-provisioning.guard'; import { BookmarksService } from './bookmarks.service'; diff --git a/src/module/bookmarks/bookmarks.service.ts b/src/module/bookmarks/bookmarks.service.ts index 0bb3d2d..56724ab 100644 --- a/src/module/bookmarks/bookmarks.service.ts +++ b/src/module/bookmarks/bookmarks.service.ts @@ -1,5 +1,6 @@ import { Injectable, NotFoundException } from '@nestjs/common'; -import { ArticleStatus, User } from '@prisma/client'; +import { ArticleStatus } from '@prisma/client'; +import type { User } from '@prisma/client'; import { PrismaService } from '../../shared/prisma/prisma.service'; const bookmarkArticleInclude = { diff --git a/src/module/comments/comments.controller.ts b/src/module/comments/comments.controller.ts index 260ed81..00d452b 100644 --- a/src/module/comments/comments.controller.ts +++ b/src/module/comments/comments.controller.ts @@ -10,7 +10,7 @@ import { } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; import { CurrentDbUser } from '../../shared/decorators/current-db-user.decorator'; -import { User } from '@prisma/client'; +import type { User } from '@prisma/client'; import { UserProvisioningGuard } from '../users/user-provisioning.guard'; import { CommentsService } from './comments.service'; import { CreateCommentDto } from './dto/create-comment.dto'; diff --git a/src/module/comments/comments.service.ts b/src/module/comments/comments.service.ts index 175f764..c47ba1c 100644 --- a/src/module/comments/comments.service.ts +++ b/src/module/comments/comments.service.ts @@ -4,7 +4,8 @@ import { Injectable, NotFoundException, } from '@nestjs/common'; -import { ArticleStatus, User, UserRole } from '@prisma/client'; +import { ArticleStatus, UserRole } from '@prisma/client'; +import type { User } from '@prisma/client'; import { PrismaService } from '../../shared/prisma/prisma.service'; import { CreateCommentDto } from './dto/create-comment.dto'; diff --git a/src/module/profile/profile.controller.ts b/src/module/profile/profile.controller.ts index f0aa6bf..dc2748a 100644 --- a/src/module/profile/profile.controller.ts +++ b/src/module/profile/profile.controller.ts @@ -1,7 +1,7 @@ import { KeycloakAuthGuard } from '../auth/keycloak.guard'; -import { Controller, Get, UseGuards, Request } from '@nestjs/common'; -import { User } from '@prisma/client'; -import { Request } from 'express'; +import { Controller, Get, Req, UseGuards } from '@nestjs/common'; +import type { User } from '@prisma/client'; +import type { Request } from 'express'; import { UserProvisioningGuard } from '../users/user-provisioning.guard'; type ProfileRequest = Request & { @@ -19,7 +19,7 @@ type ProfileRequest = Request & { export class ProfileController { @UseGuards(KeycloakAuthGuard, UserProvisioningGuard) @Get() - getProfile(@Request() req: ProfileRequest) { + getProfile(@Req() req: ProfileRequest) { const kc = req.user; return { keycloak: { diff --git a/src/module/users/users.controller.ts b/src/module/users/users.controller.ts index 70f4370..69aab6e 100644 --- a/src/module/users/users.controller.ts +++ b/src/module/users/users.controller.ts @@ -1,7 +1,7 @@ import { Body, Controller, Get, Patch, UseGuards } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; import { CurrentDbUser } from '../../shared/decorators/current-db-user.decorator'; -import { User } from '@prisma/client'; +import type { User } from '@prisma/client'; import { UpdateMeDto } from './dto/update-me.dto'; import { UsersService } from './users.service'; import { UserProvisioningGuard } from './user-provisioning.guard'; diff --git a/src/module/users/users.service.ts b/src/module/users/users.service.ts index d12cf57..59deabf 100644 --- a/src/module/users/users.service.ts +++ b/src/module/users/users.service.ts @@ -1,5 +1,6 @@ import { Injectable } from '@nestjs/common'; -import { Prisma, User, UserRole } from '@prisma/client'; +import { Prisma, UserRole } from '@prisma/client'; +import type { User } from '@prisma/client'; import { PrismaService } from '../../shared/prisma/prisma.service'; import { KeycloakRequestUser } from '../../shared/decorators/current-user.decorator'; diff --git a/src/shared/decorators/current-db-user.decorator.ts b/src/shared/decorators/current-db-user.decorator.ts index 6940a70..44737f2 100644 --- a/src/shared/decorators/current-db-user.decorator.ts +++ b/src/shared/decorators/current-db-user.decorator.ts @@ -1,5 +1,5 @@ import { createParamDecorator, ExecutionContext } from '@nestjs/common'; -import { User } from '@prisma/client'; +import type { User } from '@prisma/client'; export const CurrentDbUser = createParamDecorator( (_data: unknown, ctx: ExecutionContext): User => { diff --git a/src/types/express.d.ts b/src/types/express.d.ts index 4af96da..a066462 100644 --- a/src/types/express.d.ts +++ b/src/types/express.d.ts @@ -1,4 +1,4 @@ -import { User } from '@prisma/client'; +import type { User } from '@prisma/client'; declare global { namespace Express { diff --git a/tsconfig.json b/tsconfig.json index aba29b0..c7fa5fe 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,6 +14,9 @@ "sourceMap": true, "outDir": "./dist", "baseUrl": "./", + "paths": { + "@prisma/client": ["./node_modules/.prisma/client"] + }, "incremental": true, "skipLibCheck": true, "strictNullChecks": true,