drizzle-team / drizzle-team/drizzle-orm

[BUG]: Kyselify not supporting snake_case casing

Open
#4,029 0 comments 1 reaction 0 assignees View on GitHub
bug qb/crud
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.