valtyr/prisma-kysely

[BUG] Boolean but get Number

Closed this issue · 1 comments

Environment

  • Node: 18.16.1
  • NPM: 9.5.1
  • Prisma: 4.16.2
  • Kysely: 0.26.1
  • Prisma Kysely: 1.5.0

Schema

datasource db {
  provider = "sqlite"
  url      = "file:data/data.sqlite"
}

generator kysely {
  provider = "prisma-kysely"
  output   = "."
  fileName = "schema.ts"
}

model User {
  id String @id @default(uuid())

  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt

  name     String
  email    String  @unique
  verified Boolean
  image    String
}

Types

import type { ColumnType } from 'kysely';
export type Generated<T> = T extends ColumnType<infer S, infer I, infer U>
  ? ColumnType<S, I | undefined, U>
  : ColumnType<T, T | undefined, T>;
export type Timestamp = ColumnType<Date, Date | string, Date | string>;

export type User = {
  id: string;
  createdAt: Generated<string>;
  updatedAt: string;
  name: string;
  email: string;
  verified: number; // [BUG] This must be boolean
  image: string;
};
export type DB = {
  User: User;
};
valtyr commented

In SQLite booleans are numeric types, and most TS SQLite drivers respect that (including better-sqlite3, the recommended driver for Kysely). If your driver returns actual booleans for some reason, you can set an override in your schema:

generator kysely {
  provider = "prisma-kysely"
  output   = "."
  fileName = "schema.ts"

  // ⬇️ This line here 
  booleanTypeOverride = "boolean"
}

prisma-kysely assumes you're using the most common driver for each dialect. That's the best we can do 🤷‍♂️