ESLint Drizzle Plugin
νΉμ μλ리μ€μ λν νμ κ²μ¬λ₯Ό μννλ κ²μ΄ λΆκ°λ₯νκ±°λ, κ°λ₯νλλΌλ μ€λ₯ λ©μμ§λ₯Ό μ΄ν΄νκΈ° μ΄λ €μ΄ κ²½μ°λ₯Ό μν΄, κΆμ₯ κ·μΉμ΄ ν¬ν¨λ ESLint ν¨ν€μ§λ₯Ό λ§λ€κΈ°λ‘ κ²°μ νμ΅λλ€. μ΄ ν¨ν€μ§λ κ°λ°μκ° κ°λ° μ€ μ€μν μλ리μ€λ₯Ό μ²λ¦¬νλ λ° λμμ μ£Όλ κ²μ λͺ©νλ‘ ν©λλ€.
μ€μΉ
npm i eslint-plugin-drizzle
npm i @typescript-eslint/eslint-plugin @typescript-eslint/parser
μ¬μ©λ²
.eslintrc.yml μμ
root: true
parser: '@typescript-eslint/parser'
parserOptions:
project: './tsconfig.json'
plugins:
- drizzle
rules:
'drizzle/enforce-delete-with-where': "error"
'drizzle/enforce-update-with-where': "error"All μ€μ
μ΄ νλ¬κ·ΈμΈμ λͺ¨λ κ·μΉ(λ μ΄μ μ¬μ©λμ§ μλ κ·μΉ μ μΈ)μ μ¬μ©νλ allμ λ΄λ³΄λ
λλ€.
root: true
extends:
- "plugin:drizzle/all"
parser: '@typescript-eslint/parser'
parserOptions:
project: './tsconfig.json'
plugins:
- drizzleRecommended μ€μ
νμ¬ allμ recommendedμ λμΌν©λλ€
root: true
extends:
- "plugin:drizzle/recommended"
parser: '@typescript-eslint/parser'
parserOptions:
project: './tsconfig.json'
plugins:
- drizzleκ·μΉ
enforce-delete-with-where
.delete() λ¬Έμμ .where() μ κ³Ό ν¨κ» deleteλ₯Ό μ¬μ©νλλ‘ κ°μ ν©λλ€. λλΆλΆμ κ²½μ°
ν
μ΄λΈμ λͺ¨λ νμ μμ ν νμκ° μμΌλ©° μ΄λ€ ννμ WHERE λ¬Έμ΄ νμν©λλ€.
μ νμ μΌλ‘, string λλ string[]λ₯Ό νμ©νλ νλ¬κ·ΈμΈ μ΅μ
μμ drizzleObjectNameμ μ μν μ μμ΅λλ€.
μ΄λ Drizzleμ΄ μλ delete λ©μλκ° μλ κ°μ²΄λ ν΄λμ€κ° μμ λ μ μ©ν©λλ€.
μ΄λ¬ν delete λ©μλλ ESLint κ·μΉμ νΈλ¦¬κ±°ν©λλ€. μ΄λ₯Ό λ°©μ§νλ €λ©΄
μ½λλ² μ΄μ€μμ μ¬μ©νλ Drizzle κ°μ²΄μ μ΄λ¦(μ: db)μ μ μνμ¬
delete λ©μλκ° μ΄ κ°μ²΄μμ μ¨ κ²½μ°μλ§ κ·μΉμ΄ νΈλ¦¬κ±°λλλ‘ ν μ μμ΅λλ€:
μμ , μ€μ 1:
rules:
'drizzle/enforce-delete-with-where': "error"class MyClass {
public delete() {
return {}
}
}
const myClassObj = new MyClass();
// ---> ESLint κ·μΉμ μν΄ νΈλ¦¬κ±°λ¨
myClassObj.delete()
const db = drizzle(...)
// ---> ESLint κ·μΉμ μν΄ νΈλ¦¬κ±°λ¨
db.delete()μμ , μ€μ 2:
rules:
'drizzle/enforce-delete-with-where':
- "error"
- "drizzleObjectName":
- "db"class MyClass {
public delete() {
return {}
}
}
const myClassObj = new MyClass();
// ---> ESLint κ·μΉμ μν΄ νΈλ¦¬κ±°λμ§ μμ
myClassObj.delete()
const db = drizzle(...)
// ---> ESLint κ·μΉμ μν΄ νΈλ¦¬κ±°λ¨
db.delete()enforce-update-with-where:
.update() λ¬Έμμ .where() μ κ³Ό ν¨κ» updateλ₯Ό μ¬μ©νλλ‘ κ°μ ν©λλ€.
λλΆλΆμ κ²½μ° ν
μ΄λΈμ λͺ¨λ νμ μ
λ°μ΄νΈν νμκ° μμΌλ©°
μ΄λ€ ννμ WHERE λ¬Έμ΄ νμν©λλ€.
μ νμ μΌλ‘, string λλ string[]λ₯Ό νμ©νλ νλ¬κ·ΈμΈ μ΅μ
μμ drizzleObjectNameμ μ μν μ μμ΅λλ€.
μ΄λ Drizzleμ΄ μλ delete λ©μλκ° μλ κ°μ²΄λ ν΄λμ€κ° μμ λ μ μ©ν©λλ€.
update λ©μλμ κ°μ κ²½μ° ESLint κ·μΉμ νΈλ¦¬κ±°ν©λλ€.
μ΄λ₯Ό λ°©μ§νλ €λ©΄ μ½λλ² μ΄μ€μμ μ¬μ©νλ Drizzle κ°μ²΄μ μ΄λ¦(μ: db)μ μ μνμ¬
delete λ©μλκ° μ΄ κ°μ²΄μμ μ¨ κ²½μ°μλ§ κ·μΉμ΄ νΈλ¦¬κ±°λλλ‘ ν μ μμ΅λλ€:
μμ , μ€μ 1:
rules:
'drizzle/enforce-update-with-where': "error"class MyClass {
public update() {
return {}
}
}
const myClassObj = new MyClass();
// ---> ESLint κ·μΉμ μν΄ νΈλ¦¬κ±°λ¨
myClassObj.update()
const db = drizzle(...)
// ---> ESLint κ·μΉμ μν΄ νΈλ¦¬κ±°λ¨
db.update()μμ , μ€μ 2:
rules:
'drizzle/enforce-update-with-where':
- "error"
- "drizzleObjectName":
- "db"class MyClass {
public update() {
return {}
}
}
const myClassObj = new MyClass();
// ---> ESLint κ·μΉμ μν΄ νΈλ¦¬κ±°λμ§ μμ
myClassObj.update()
const db = drizzle(...)
// ---> ESLint κ·μΉμ μν΄ νΈλ¦¬κ±°λ¨
db.update()