UNPKG

rawsql-ts

Version:

High-performance SQL parser and AST analyzer written in TypeScript. Provides fast parsing and advanced transformation capabilities.

33 lines 2.04 kB
import { DeleteClause } from "../models/Clause"; import { SourceExpressionParser } from "./SourceExpressionParser"; import { extractLexemeComments } from "./utils/LexemeCommentUtils"; /** * Parses the target section of a DELETE statement ("DELETE FROM ..."). */ export class DeleteClauseParser { static parseFromLexeme(lexemes, index) { var _a, _b, _c, _d, _e; if (index >= lexemes.length) { throw new Error(`[DeleteClauseParser] Unexpected end of input at position ${index}: expected 'DELETE FROM'.`); } const deleteToken = lexemes[index]; const tokenValue = (_a = deleteToken === null || deleteToken === void 0 ? void 0 : deleteToken.value) === null || _a === void 0 ? void 0 : _a.toLowerCase(); if (tokenValue !== "delete from") { const position = (_d = (_c = (_b = lexemes[index]) === null || _b === void 0 ? void 0 : _b.position) === null || _c === void 0 ? void 0 : _c.startPosition) !== null && _d !== void 0 ? _d : index; throw new Error(`[DeleteClauseParser] Syntax error at position ${position}: expected 'DELETE FROM' but found '${(_e = lexemes[index]) === null || _e === void 0 ? void 0 : _e.value}'.`); } const deleteTokenComments = extractLexemeComments(deleteToken); // Skip past the DELETE FROM keyword token so we can parse the target source. const targetResult = SourceExpressionParser.parseFromLexeme(lexemes, index + 1); const deleteClause = new DeleteClause(targetResult.value); // Attach positioned comments captured from the DELETE keyword to the clause. if (deleteTokenComments.before.length > 0) { deleteClause.addPositionedComments("before", deleteTokenComments.before); } if (deleteTokenComments.after.length > 0) { deleteClause.addPositionedComments("after", deleteTokenComments.after); } return { value: deleteClause, newIndex: targetResult.newIndex }; } } //# sourceMappingURL=DeleteClauseParser.js.map