A MySQL query analyzer.
- 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
yarn add ts-mysql-analyzer
# or
npm install ts-mysql-analyzer
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"'))
- ts-mysql-parser - A standalone, grammar-complete MySQL parser
- ts-mysql-schema - A schema extractor for MySQL
- ts-mysql-uri - Parse a MySQL connection URI
- ts-antlr4-scanner - A scanner for antlr4-based lexers
stevenmiller888.github.io · GitHub @stevenmiller888 · Twitter @stevenmiller888