-
-
Notifications
You must be signed in to change notification settings - Fork 126
Description
Description and expected behavior
Using take on enhanced prisma returns different result than prisma for the same expected result.
Exemple code:
- usuarioId on Aluno table is the user id
`
export async function getPrismaEnhanced(req: NextApiRequest, res: NextApiResponse) {
const userId = await userIdFromRequest(req);
let user: auth.Usuario | null = null;
if (userId != null) {
user = { id: userId };
} else {
sendError(res, StatusCodes.LOCKED, "LOCKED");
return;
}
const dispositivoId =
req.headers["x-dispositivo-id"] ?? req.headers["x-device-id"];
if (dispositivoId != null) {
prisma.$executeRawUnsafe(`SET var.device_id = '${dispositivoId}'`);
}
const teste = await prisma.aluno.findMany({
take: 10,
where: {
usuarioId: userId,
},
});
console.log("teste", teste);
const prismaEnhanced = enhance(
prisma,
{ user: user ?? undefined },
{
logPrismaQuery: true,
},
);
const teste2 = await prismaEnhanced.aluno.findMany({
take: 10,
});
console.log("teste2", teste2);
return prismaEnhanced;
}`
Logging the statements at prisma level on pure prisma:
SELECT "public"."aluno"."id",
"public"."aluno"."usuarioid",
"public"."aluno"."dthrcriacao",
"public"."aluno"."dthratualizacao",
"public"."aluno"."nome",
"public"."aluno"."sobrenome",
"public"."aluno"."celular",
"public"."aluno"."email",
"public"."aluno"."observacoes",
"public"."aluno"."saldodeaulas",
"public"."aluno"."dtnascimento",
"public"."aluno"."peso",
"public"."aluno"."altura",
"public"."aluno"."removido"
FROM "public"."aluno"
WHERE "public"."aluno"."usuarioid" = $1
ORDER BY "public"."aluno"."id" ASC
LIMIT $2 offset $3
And on enhanced:
SELECT "public"."aluno"."id",
"public"."aluno"."usuarioid",
"public"."aluno"."dthrcriacao",
"public"."aluno"."dthratualizacao",
"public"."aluno"."nome",
"public"."aluno"."sobrenome",
"public"."aluno"."celular",
"public"."aluno"."email",
"public"."aluno"."observacoes",
"public"."aluno"."saldodeaulas",
"public"."aluno"."dtnascimento",
"public"."aluno"."peso",
"public"."aluno"."altura",
"public"."aluno"."removido"
FROM "public"."aluno"
WHERE 1 = 1
ORDER BY "public"."aluno"."id" ASC
LIMIT $1 offset $2
and some records are skipped:
prisma:info [policy] dropping aluno entity due to entity checker
prisma:info [policy] dropping aluno entity due to entity checker
prisma:info [policy] dropping aluno entity due to entity checker
prisma:info [policy] dropping aluno entity due to entity checker
prisma:info [policy] dropping aluno entity due to entity checker
prisma:info [policy] dropping aluno entity due to entity checker
prisma:info [policy] dropping aluno entity due to entity checker
prisma:info [policy] dropping aluno entity due to entity checker
the records from other user...
An workaround is using on enhanced the same where
Environment (please complete the following information):
- ZenStack version: 2.2.3
- Prisma version: 5.15.0
- Database type: 16
Additional context
I guess need be highlighted the fact that the where need be still used;