Partial start on types for prizma query

This commit is contained in:
aronmal 2023-08-19 23:19:38 +02:00
parent 4c2c578311
commit 1cc34744a8
Signed by: aronmal
GPG key ID: 816B7707426FC612

View file

@ -0,0 +1,44 @@
import { PgColumn, PgTableWithColumns } from "drizzle-orm/pg-core"
import * as schema from "../../drizzle/schemas/Tables"
type FilteredKeys<T, U> = {
[K in keyof T]: T[K] extends U ? K : never
}[keyof T]
// eslint-disable-next-line @typescript-eslint/no-explicit-any
type TableNames = FilteredKeys<typeof schema, PgTableWithColumns<any>>
type ColumnNames<T extends TableNames> = FilteredKeys<
(typeof schema)[T],
PgColumn
>
type ColumnDataType<
T extends TableNames,
C extends ColumnNames<T>,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
> = (typeof schema)[T][C] extends PgColumn<infer Type, any, any>
? Type["data"]
: never
type Config<T extends TableNames, TT extends ColumnNames<T>> = {
table: T
where: Pick<
{
[C in ColumnNames<T>]: ColumnDataType<T, C>
},
TT
>
}
export const prism = {
findFirst<T extends TableNames, TT extends ColumnNames<T>>(
config: Config<T, TT>,
) {
JSON.stringify(config)
},
}
prism.findFirst({
table: "games",
where: { id: "123456" },
})