drizzle-team / drizzle-team/drizzle-orm
[BUG]: Kyselify not supporting snake_case casing
- Dominant language
- TypeScript
- Stars
- 35.8k
- Forks
- 1.6k
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 4
Description
### Report hasn't been filed before.
- [x] I have verified that the bug I'm about to report hasn't been filed before.
### What version of `drizzle-orm` are you using?
0.39.0
### What version of `drizzle-kit` are you using?
0.30.3
### Other packages
_No response_
### Describe the Bug
When using
```typescript
import type { Kyselify } from "drizzle-orm/kysely";
```
the casing option of `snake_case` is not supported. Here's my workaround that should be included in the Kyselify file.
```typescript
type CamelToSnake = S extends `${infer T}${infer U}`
? `${T extends Lowercase ? T : `_${Lowercase}`}${CamelToSnake}`
: S;
type ConvertKeysToSnakeCase = {
[K in keyof T as CamelToSnake>]: T[K];
};
type KyselifyCased<
T extends Table,
Casing extends "camelCase" | "snake_case" = "camelCase",
> = Casing extends "camelCase" ? Kyselify : ConvertKeysToSnakeCase>;
```
Can be used like
```typescript
interface Database {
token: KyselifyCased;
user: KyselifyCased;
}
const result = await kysely.selectFrom("token").select(["id", "created_at"]).execute();
```
Contributor guide
Assessment
This issue has not been assessed yet.