8000 Reusing types from Supabase · Issue #461 · kysely-org/kysely · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Reusing types from Supabase #461
Closed
Closed
@gilbert

Description

@gilbert

Just in case anyone needs it, here's how to reuse your generated Supabase types for Kysely:

import { Database } from './types/supabase'

type Tables = Database['public']['Tables']

type DB = {
  [TableName in keyof Tables]: {
    [ColumnName in keyof Tables[TableName]['Insert']]-?:
      undefined extends Tables[TableName]['Insert'][ColumnName]
      ? Generated<NoUndefined<Tables[TableName]['Insert'][ColumnName]>>
      : Tables[TableName]['Insert'][ColumnName]
  }
}

type NoUndefined<T> = T extends undefined ? never : T

const db = new Kysely<DB>(...)

This transforms e.g. the following Supabase type:

interface Database {
  public: {
    Tables: {
      projects: {
        Row: {
          created_at: string
          id: number
          name: string
        }
        Insert: {
          created_at?: string
          id?: number
          name: string
        }
        Update: {
          created_at?: string
          id?: number
          name?: string
        }
      }
    }
  }
}

into the following for Kysely:

type DB = {
  projects: {
    created_at: Generated<string>
    id: Generated<number>
    name: string
  }
}

Not sure if it's perfect but it's a great starting point!

Metadata

Metadata

Assignees

No one assigned

    Labels

    custom dialectRelated to a custom dialectpostgresRelated to PostgreSQLtypescriptRelated to Typescript

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0