prisma / prisma-client-js

Type-safe database client for TypeScript & Node.js (ORM replacement)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

findUnique (findOne) with a joined unique clause doesn't work

DustinJSilk opened this issue · comments

Bug description

When using an @unique attribute with a string, date and enum value - a findUnique query returns null while a findFirst with the same query returns a record, and a findMany returns exactly 1 record.

How to reproduce

Create a schema like this:

model Availability {
  id            String                          @id @default(cuid())
  date          DateTime
  property      Property                @relation(fields: [propertyId], references: [id])
  propertyId    String
  status        AvailabilityStatus    @default(AVAILABLE)

  @@unique([propertyId, date, status])
}

enum AvailabilityStatus {
  AVAILABLE
}

model Property {
  id                      String              @id @default(cuid())
}

Run this in JavaScript

const date = new Date('2020-12-02T00:00:00.000Z');

const findUnique = await this.prisma.availability.findUnique({
  where: {
    propertyId_date_status: {
      propertyId: 'your_id',
      status: AvailabilityStatus.AVAILABLE,
      date,
    }
  }
});

const findFirst = await this.prisma.availability.findFirst({
  where: {
    propertyId: 'your_id',
    status: AvailabilityStatus.AVAILABLE,
    date,
  }
});

console.log(findUnique); // <-- Null
console.log(findFirst); // <-- Not null

Expected behavior

findUnique should return the only unique record.

Prisma information

Environment & setup

  • OS: Mac
  • Database: PostgreSQL
  • Node.js version: v12.18.4
  • Prisma version: 2.12.1
@prisma/cli          : 2.12.1
@prisma/client       : 2.12.1
Current platform     : darwin
Query Engine         : query-engine cf0680a1bfe8d5e743dc659cc7f08009f9587d58 (at node_modules/@prisma/engines/query-engine-darwin)
Migration Engine     : migration-engine-cli cf0680a1bfe8d5e743dc659cc7f08009f9587d58 (at node_modules/@prisma/engines/migration-engine-darwin)
Introspection Engine : introspection-core cf0680a1bfe8d5e743dc659cc7f08009f9587d58 (at node_modules/@prisma/engines/introspection-engine-darwin)
Format Binary        : prisma-fmt cf0680a1bfe8d5e743dc659cc7f08009f9587d58 (at node_modules/@prisma/engines/prisma-fmt-darwin)
Studio               : 0.322.0

Closing in favour of prisma/prisma#4438