UNPKG

mysqldump-ddl-parser

Version:

Parse DDL, output JS object.

41 lines (40 loc) 1.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class ForeignKey { sql; name = ''; foreignKey = ''; referenceTable = ''; referenceColumn = ''; constructor(sql, dialect) { this.sql = sql; if (dialect == 'oracle') { this.oracle(sql); } else { this.mysql(sql); } } oracle(sql) { const parserd = sql.match(/CONSTRAINT "([^"]*)" +FOREIGN KEY +\("([^"]*)"\)[ \r\n]+REFERENCES ([^\(]+)\("([^"]*)"\)/); this.name = (parserd?.at(1) ?? '').toLocaleLowerCase(); this.foreignKey = (parserd?.at(2) ?? '').toLocaleLowerCase(); const referenceTable = (parserd?.at(3) ?? '').split(/\./); this.referenceTable = referenceTable[referenceTable.length - 1] .trim() .replaceAll(/"/g, '') .toLocaleLowerCase(); this.referenceColumn = (parserd?.at(4) ?? '') .trim() .replaceAll(/"/g, '') .toLocaleLowerCase(); } mysql(sql) { const parserd = sql.match(/CONSTRAINT `([^`]*)` FOREIGN KEY \(`([^`]*)`\) REFERENCES `([^`]*)` \(`([^`]*)`\)/); this.name = (parserd?.at(1) ?? '').toLocaleLowerCase(); this.foreignKey = (parserd?.at(2) ?? '').toLocaleLowerCase(); this.referenceTable = (parserd?.at(3) ?? '').toLocaleLowerCase(); this.referenceColumn = (parserd?.at(4) ?? '').toLocaleLowerCase(); } } exports.default = ForeignKey;