UNPKG

rawsql-ts

Version:

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

68 lines (67 loc) 3.33 kB
import { InsertQuery } from '../models/InsertQuery'; import { SimpleSelectQuery } from '../models/SelectQuery'; import { TableDefinitionModel, TableDefinitionRegistry } from '../models/TableDefinitionModel'; import { FixtureTableDefinition } from './FixtureCteBuilder'; /** Options that drive how the insert-to-select transformation resolves table metadata. */ export interface InsertResultSelectOptions { /** Optional registry keyed by table name (matching the target table name case). */ tableDefinitions?: TableDefinitionRegistry; /** Optional callback to resolve metadata by full table name (useful for schemified names). */ tableDefinitionResolver?: (tableName: string) => TableDefinitionModel | undefined; /** Optional fixtures that should shadow real tables inside the generated SELECT. */ fixtureTables?: FixtureTableDefinition[]; /** Strategy to control behavior when fixtures are missing for real tables. */ missingFixtureStrategy?: MissingFixtureStrategy; } /** Strategy choices for how missing fixtures are handled during transformation. */ export type MissingFixtureStrategy = 'error' | 'warn' | 'passthrough'; export declare class InsertResultSelectConverter { private static readonly BASE_CTE_NAME; private static readonly DEFAULT_MISSING_FIXTURE_STRATEGY; /** * Converts an INSERT ... SELECT/VALUES query into a SELECT that mirrors its RETURNING output * (or a count(*) when RETURNING is absent). */ static toSelectQuery(insertQuery: InsertQuery, options?: InsertResultSelectOptions): SimpleSelectQuery; private static prepareInsertQuery; private static extractTargetTableName; private static resolveTableDefinition; private static convertFixtureToTableDefinition; private static buildTableDefinitionMap; private static resolveInsertColumns; private static getSelectColumnCount; private static getFirstSimpleSelectQuery; private static buildColumnMetadata; private static assertRequiredColumns; private static buildReturningSelectItems; private static isWildcardReturningItem; private static expandReturningWildcard; private static buildReturningSelectItem; private static buildInsertColumnExpression; private static extractColumnName; private static getReturningAlias; private static getColumnMetadata; private static buildColumnExpression; private static buildTypeValue; private static collectPhysicalTableReferences; private static buildFixtureCtes; private static filterFixtureTablesForReferences; private static collectReferencedTablesFromWithClause; private static buildWithClause; private static buildCountSelect; private static buildFixtureTableMap; private static ensureFixtureCoverage; private static collectReferencedTables; private static collectCteNamesFromWithClause; private static addCteNames; private static getMissingFixtureTables; private static generateUniqueCteName; private static normalizeIdentifier; private static parseDefaultValue; private static resolveDefaultValueExpression; private static referencesSequence; private static referencesSelect; private static isSequenceFunction; private static applyColumnCasts; private static applyColumnCastsToSimple; }