Skip to content

Commit

Permalink
Merge branch 'master' into qq-hacks
Browse files Browse the repository at this point in the history
  • Loading branch information
brettbedarfmw committed Jun 21, 2024
2 parents 61592ae + a457486 commit 14982c3
Show file tree
Hide file tree
Showing 30 changed files with 4,716 additions and 3,428 deletions.
60 changes: 52 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,41 @@

- [Installation](#installation)
- [Generating type definitions](#generating-type-definitions)
- [Include/exclude patterns](#includeexclude-patterns)
- [Help](#help)
- [Using the type definitions](#using-the-type-definitions)
- [Issue funding](#issue-funding)

## Installation

```
```sh
npm install --save-dev kysely-codegen
```

You will also need to install Kysely with your driver of choice:

# You will also need to install Kysely with your driver of choice:
```sh
# PostgreSQL
npm install kysely pg

# MySQL
npm install kysely mysql2

# SQLite
npm install kysely better-sqlite3
npm install @libsql/kysely-libsql

# MSSQL
npm install kysely tedious tarn @tediousjs/connection-string

# LibSQL
npm install @libsql/kysely-libsql
```

## Generating type definitions

The most convenient way to get started is to create an `.env` file with your database connection string:

```
```sh
# PostgreSQL
DATABASE_URL=postgres://username:[email protected]/database

Expand All @@ -35,11 +50,11 @@ DATABASE_URL=mysql://username:[email protected]/database
# SQLite
DATABASE_URL=C:/Program Files/sqlite3/db

# LibSQL
DATABASE_URL=libsql://token@host:port/database
# MSSQL
DATABASE_URL=Server=mssql;Database=database;User Id=user;Password=password

# LibSQL
DATABASE_URL=libsql://token@host:port/database
```

> If your URL contains a password with special characters, those characters may need to be [percent-encoded](https://en.wikipedia.org/wiki/Percent-encoding#Reserved_characters).
Expand All @@ -48,12 +63,13 @@ DATABASE_URL=Server=mssql;Database=database;User Id=user;Password=password
Then run:

```
```sh
kysely-codegen
```

This command will generate a `.d.ts` file from your database, for example:

<!-- prettier-ignore -->
```ts
import { ColumnType } from 'kysely';

Expand Down Expand Up @@ -84,6 +100,28 @@ export interface DB {
}
```

## Include/exclude patterns

You can choose which tables should be included during code generation by providing a glob pattern to the `--include-pattern` and `--exclude-pattern` flags. We use [micromatch](https://github.com/micromatch/micromatch) under the hood which provides advanced glob support. For instance, if you only want to include your public tables:

```bash
kysely-codegen --include-pattern="public.*"
```

You can also include only certain tables within a schema:

```bash
kysely-codegen --include-pattern="public.+(user|post)"
```

Or exclude an entire class of tables:

```bash
kysely-codegen --exclude-pattern="documents.*"
```

## Help

For more options, run `kysely-codegen --help`.

## Using the type definitions
Expand All @@ -106,3 +144,9 @@ const db = new Kysely<DB>({
const rows = await db.selectFrom('user').selectAll().execute();
// ^ { company_id: number | null; created_at: Date; email: string; id: number; ... }[]
```

## Issue funding

We use [Polar.sh](https://polar.sh/RobinBlomberg) to upvote and promote specific features that you would like to see implemented. Check the backlog and help out:

<a href="https://polar.sh/RobinBlomberg"><img src="https://polar.sh/embed/fund-our-backlog.svg?org=RobinBlomberg" /></a>
49 changes: 27 additions & 22 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "kysely-codegen",
"version": "0.12.0",
"version": "0.15.0",
"author": "Robin Blomberg",
"license": "MIT",
"main": "./dist/index.js",
Expand All @@ -18,6 +18,7 @@
"homepage": "https://github.com/RobinBlomberg/kysely-codegen#readme",
"scripts": {
"build": "rimraf dist && tsc",
"check": "tsc --noEmit",
"ci": "run-s ci:*",
"ci:build": "pnpm build",
"ci:eslint": "pnpm lint:eslint --max-warnings=0 --report-unused-disable-directives",
Expand All @@ -40,49 +41,50 @@
},
"dependencies": {
"chalk": "4.1.2",
"dotenv": "^16.4.1",
"dotenv": "^16.4.5",
"dotenv-expand": "^11.0.6",
"git-diff": "^2.0.6",
"micromatch": "^4.0.5",
"minimist": "^1.2.8"
},
"devDependencies": {
"@libsql/kysely-libsql": "^0.3.0",
"@robinblomberg/eslint-config-prettier": "^0.1.4",
"@robinblomberg/eslint-config-robinblomberg": "0.25.0",
"@robinblomberg/eslint-config-robinblomberg": "0.28.0",
"@robinblomberg/prettier-config": "^0.1.2",
"@types/better-sqlite3": "^7.6.9",
"@types/git-diff": "^2.0.7",
"@types/micromatch": "^4.0.6",
"@types/minimist": "^1.2.5",
"@types/node": "^20.11.16",
"@types/pg": "^8.11.0",
"@types/tedious": "4.0.14",
"@typescript-eslint/parser": "^6.20.0",
"better-sqlite3": "^9.3.0",
"eslint": "^8.56.0",
"kysely": "github:kysely-org/kysely#d1c1322",
"kysely-bun-worker": "^0.5.6",
"mysql2": "^3.9.1",
"@types/node": "^20.12.2",
"@types/pg": "^8.11.4",
"@types/tedious": "^4.0.14",
"@typescript-eslint/parser": "^7.4.0",
"better-sqlite3": "^9.4.3",
"eslint": "^8.57.0",
"kysely": "^0.27.3",
"kysely-bun-worker": "^0.6.0",
"mysql2": "^3.9.3",
"npm-run-all": "^4.1.5",
"pg": "^8.11.3",
"pnpm": "^8.15.1",
"prettier": "^3.2.4",
"pg": "^8.11.4",
"pnpm": "^8.15.5",
"prettier": "^3.2.5",
"rimraf": "^5.0.5",
"ts-node-dev": "^2.0.0",
"tsx": "^4.7.0",
"typescript": "^5.3.3",
"vitest": "^1.2.2"
"tsx": "^4.7.1",
"typescript": "^5.4.3",
"vitest": "^1.4.0"
},
"peerDependencies": {
"@libsql/kysely-libsql": "^0.3.0",
"@tediousjs/connection-string": "^0.5.0",
"better-sqlite3": ">=7.6.2",
"kysely": "^0.27.0",
"kysely-bun-worker": "^0.5.3",
"kysely": "github:kysely-org/kysely#d1c1322",
"mysql2": "^2.3.3 || ^3.0.0",
"pg": "^8.8.0",
"tarn": "^3.0.0",
"tedious": "^16.6.0"
"tedious": "^16.6.0 || ^17.0.0"
},
"peerDependenciesMeta": {
"@libsql/kysely-libsql": {
Expand All @@ -98,7 +100,7 @@
"optional": false
},
"kysely-bun-worker": {
"optional": false
"optional": true
},
"mysql2": {
"optional": true
Expand All @@ -119,7 +121,10 @@
"@robinblomberg/robinblomberg",
"@robinblomberg/prettier"
],
"ignorePatterns": "**/src/core/outputs/*.ts"
"ignorePatterns": "**/src/core/outputs/*.ts",
"rules": {
"unicorn/prefer-node-protocol": 0
}
},
"prettier": "@robinblomberg/prettier-config"
}
Loading

0 comments on commit 14982c3

Please sign in to comment.