Skip to content

stevenmiller888/ts-mysql-analyzer

Repository files navigation

ts-mysql-analyzer

Alt Text

A MySQL query analyzer.

Alt Text

Features

  • Detects MySQL syntax errors
  • Detects invalid table names/column names (powered by your schema)
  • Type checking (powered by your schema)
  • Optimization suggestions (e.g. query for column with missing index)
  • Supports custom parser options (e.g. MySQL version, character sets, etc.)
  • Supports multiple statements

Installation

yarn add ts-mysql-analyzer
# or
npm install ts-mysql-analyzer

Usage

import { MySQLAnalyzer } from 'ts-mysql-analyzer'
import { MySQLSchema } from 'ts-mysql-schema'

const mySQLSchema = new MySQLSchema({
  uri: 'mysql://[email protected]:3310/test'
})

const analyzer = new MySQLAnalyzer({
  schema: await mySQLSchema.getSchema()
})

// "'SELT' is not valid at this position."
console.log(analyzer.analyze('SELT * FROM user'))

// "Table 'invalid_table' does not exist in database 'test'. Did you mean 'posts'?"
console.log(analyzer.analyze('SELECT * FROM invalid_table'))

// "Column 'invalid_column' does not exist in table 'users'. Did you mean 'name'?"
console.log(analyzer.analyze('SELECT invalid_column FROM users'))

// "Type boolean is not assignable to type string."
console.log(analyzer.analyze('SELECT * FROM users WHERE id = true'))

// "You can optimize this query by adding a MySQL index for column 'name'."
console.log(analyzer.analyze('SELECT * FROM users WHERE name = "some-name"'))

Related

License

MIT


stevenmiller888.github.io  ·  GitHub @stevenmiller888  ·  Twitter @stevenmiller888