eslint-plugin-kysely
v1.0.7
Published
Ensures safe database operations for Kysely
Maintainers
Readme
eslint-plugin-kysely
eslint-plugin-kysely is a fork of eslint-plugin-kysely-rules.
ESLint plugin for enforcing safe database operations with Kysely. This plugin helps prevent common SQL-related issues and enforces best practices when working with Kysely.
Features
- Enforces WHERE clauses to prevent accidental full table scans
- Ensures SELECT clauses are explicitly defined
- Prevents ambiguous column references in queries
- Additional rules for safe database operations
Installation
npm install --save-dev eslint-plugin-kyselyConfiguration
Basic Configuration
Add the plugin to your ESLint configuration:
{
"plugins": ["kysely"],
"rules": {
"kysely/enforce-where-clause": "error",
"kysely/enforce-select-clause": "warn",
"kysely/enforce-no-ambigious-columns": "error",
"kysely/enforce-kysely-operators": "warn"
}
}Recommended Configuration
For the best experience, you can use the recommended configuration which enables all rules with sensible defaults:
{
"extends": ["plugin:kysely/recommended"]
}This is equivalent to:
{
"plugins": ["kysely"],
"rules": {
"kysely/enforce-where-clause": "error",
"kysely/enforce-select-clause": "warn",
"kysely/enforce-no-ambigious-columns": "error",
"kysely/enforce-kysely-operators": "warn"
}
}Available Rules
enforce-where-clause
Prevents queries without WHERE clauses to avoid accidental table drops.
// ❌ Bad
db.deleteFrom("users");
// ✅ Good
db.deleteFrom("users").where("id", "=", 1);enforce-select-clause
Ensures that SELECT clauses are explicitly defined`.
// ❌ Bad
db.selectFrom("users");
// ✅ Good
db.selectFrom("users").select(["id", "name", "email"]);enforce-no-ambigious-columns
Prevents ambiguous column references in JOIN queries.
// ❌ Bad
db.selectFrom("users")
.innerJoin("posts", "users.id", "posts.user_id")
.select("id"); // Ambiguous: which table's id?
// ✅ Good
db.selectFrom("users")
.innerJoin("posts", "users.id", "posts.user_id")
.select(["users.id", "posts.id"]);enforce-kysely-operators
Enforces proper operator usage in Kysely queries, particularly for null comparisons and array operations.
// ❌ Bad
db.selectFrom("users").where("deleted_at", "=", null);
db.selectFrom("users").where("status", "=", ["active", "pending"]);
// ✅ Good
db.selectFrom("users").where("deleted_at", "is", null);
db.selectFrom("users").where("status", "in", ["active", "pending"]);The rule enforces:
- Using
isandis notinstead of=and!=when comparing withnull - Using
ininstead of=when comparing with arrays
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
ISC
Author
sasumaki
