UNPKG

@secam/pgsql-ast-parser

Version:

Fork of pgsql-ast-parser Simple Postgres SQL parser/modifier for pg-mem

237 lines 14 kB
import * as a from './syntax/ast'; import { nil } from './utils'; export interface IAstPartialMapper { statement?: (val: a.Statement) => a.Statement | nil; update?: (val: a.UpdateStatement) => a.Statement | nil; insert?: (val: a.InsertStatement) => a.Statement | nil; delete?: (val: a.DeleteStatement) => a.Statement | nil; comment?: (val: a.CommentStatement) => a.Statement | nil; do?: (val: a.DoStatement) => a.Statement | nil; createFunction?: (val: a.CreateFunctionStatement) => a.Statement | nil; dropFunction?: (val: a.DropFunctionStatement) => a.Statement | nil; raise?: (val: a.RaiseStatement) => a.Statement | nil; createSchema?: (val: a.CreateSchemaStatement) => a.Statement | nil; createEnum?(val: a.CreateEnumType): a.Statement | nil; alterEnum?(val: a.AlterEnumType): a.Statement | nil; createCompositeType?(val: a.CreateCompositeType): a.Statement | nil; drop?: (val: a.DropStatement) => a.Statement | nil; show?: (val: a.ShowStatement) => a.Statement | nil; createTable?: (val: a.CreateTableStatement) => a.Statement | nil; truncateTable?: (val: a.TruncateTableStatement) => a.Statement | nil; createExtension?: (val: a.CreateExtensionStatement) => a.Statement | nil; set?: (st: a.SetStatement) => a.SetStatement | nil; dataType?: (dataType: a.DataTypeDef) => a.DataTypeDef; prepare?: (st: a.PrepareStatement) => a.Statement | nil; deallocate?: (st: a.DeallocateStatement) => a.Statement | nil; parameter?: (st: a.ExprParameter) => a.Expr | nil; tableRef?: (st: a.QNameAliased) => a.QNameAliased | nil; transaction?: (val: a.CommitStatement | a.RollbackStatement | a.StartTransactionStatement) => a.Statement | nil; createIndex?: (val: a.CreateIndexStatement) => a.Statement | nil; alterTable?: (st: a.AlterTableStatement) => a.Statement | nil; alterIndex?: (st: a.AlterIndexStatement) => a.Statement | nil; tableAlteration?: (change: a.TableAlteration, table: a.QNameAliased) => a.TableAlteration | nil; dropColumn?: (change: a.TableAlterationDropColumn, table: a.QNameAliased) => a.TableAlteration | nil; dropConstraint?: (change: a.TableAlterationDropConstraint, table: a.QNameAliased) => a.TableAlteration | nil; renameConstraint?: (change: a.TableAlterationRenameConstraint, table: a.QNameAliased) => a.TableAlteration | nil; setTableOwner?: (change: a.TableAlterationOwner, table: a.QNameAliased) => a.TableAlteration | nil; renameColumn?: (change: a.TableAlterationRenameColumn, table: a.QNameAliased) => a.TableAlteration | nil; renameTable?: (change: a.TableAlterationRename, table: a.QNameAliased) => a.TableAlteration | nil; alterColumn?: (change: a.TableAlterationAlterColumn, inTable: a.QNameAliased) => a.TableAlteration | nil; setColumnType?: (alter: a.AlterColumnSetType, inTable: a.QName, inColumn: a.Name) => a.AlterColumn | nil; alterColumnSimple?: (alter: a.AlterColumnSimple, inTable: a.QName, inColumn: a.Name) => a.AlterColumn | nil; alterColumnAddGenerated?: (alter: a.AlterColumnAddGenerated, inTable: a.QName, inColumn: a.Name) => a.AlterColumn | nil; setColumnDefault?: (alter: a.AlterColumnSetDefault, inTable: a.QName, inColumn: a.Name) => a.AlterColumn | nil; addConstraint?: (change: a.TableAlterationAddConstraint, inTable: a.QName) => a.TableAlteration | nil; addColumn?: (change: a.TableAlterationAddColumn, inTable: a.QName) => a.TableAlteration | nil; createColumn?: (col: a.CreateColumnDef) => a.CreateColumnDef | nil; likeTable?: (col: a.CreateColumnsLikeTable) => a.CreateColumnDef | a.CreateColumnsLikeTable | nil; with?: (val: a.WithStatement) => a.SelectStatement | nil; withRecursive?: (val: a.WithRecursiveStatement) => a.SelectStatement | nil; union?: (val: a.SelectFromUnion) => a.SelectStatement | nil; select?: (val: a.SelectStatement) => a.SelectStatement | nil; selection?: (val: a.SelectFromStatement) => a.SelectStatement | nil; createView?: (val: a.CreateViewStatement) => a.Statement | nil; createMaterializedView?: (val: a.CreateMaterializedViewStatement) => a.Statement | nil; refreshMaterializedView?: (val: a.RefreshMaterializedViewStatement) => a.Statement | nil; from?: (from: a.From) => a.From | nil; fromCall?: (from: a.FromCall) => a.From | nil; fromStatement?: (from: a.FromStatement) => a.From | nil; values?: (from: a.ValuesStatement) => a.SelectStatement | nil; fromTable?: (from: a.FromTable) => a.From | nil; selectionColumn?: (val: a.SelectedColumn) => a.SelectedColumn | nil; expr?: (val: a.Expr) => a.Expr | nil; ternary?: (val: a.ExprTernary) => a.Expr | nil; arraySelect?: (val: a.ExprArrayFromSelect) => a.Expr | nil; arrayIndex?: (val: a.ExprArrayIndex) => a.Expr | nil; member?: (val: a.ExprMember) => a.Expr | nil; extract?: (st: a.ExprExtract) => a.Expr | nil; case?: (val: a.ExprCase) => a.Expr | nil; cast?: (val: a.ExprCast) => a.Expr | nil; call?: (val: a.ExprCall) => a.Expr | nil; callSubstring?: (val: a.ExprSubstring) => a.Expr | nil; callOverlay?: (val: a.ExprOverlay) => a.Expr | nil; array?: (val: a.ExprList) => a.Expr | nil; constant?: (value: a.ExprLiteral) => a.Expr | nil; default?: (value: a.ExprDefault) => a.Expr | nil; ref?: (val: a.ExprRef) => a.Expr | nil; unary?: (val: a.ExprUnary) => a.Expr | nil; binary?: (val: a.ExprBinary) => a.Expr | nil; join?(join: a.JoinClause): a.JoinClause | nil; constraint?: (constraint: a.ColumnConstraint) => a.ColumnConstraint | nil; valueKeyword?(val: a.ExprValueKeyword): a.Expr | nil; tablespace?(val: a.TablespaceStatement): a.Statement | nil; setGlobal?(val: a.SetGlobalStatement): a.Statement | nil; setTimezone?(val: a.SetTimezone): a.Statement | nil; setNames?(val: a.SetNames): a.Statement | nil; createSequence?(seq: a.CreateSequenceStatement): a.Statement | nil; alterSequence?(seq: a.AlterSequenceStatement): a.Statement | nil; begin?(begin: a.BeginStatement): a.Statement | nil; } export type IAstFullMapper = { [key in keyof IAstPartialMapper]-?: IAstPartialMapper[key]; }; export type IAstMapper = IAstFullMapper & { /** Forces the next call to use the default implementation, not yours */ super(): IAstMapper; }; /** * Builds an AST modifier based on the default implementation, merged with the one you provide. * * Example of a modifier that renames all reference to columns 'foo' to 'bar' * ```ts * const mapper = astMapper(b => ({ * ref: a => assignChanged(a, { * name: a.name === 'foo' * ? 'bar' * : a.name * }) * })); * * const modified = mapper.statement(myStatementToModify); * ``` */ export declare function astMapper(modifierBuilder: MapperBuilder): IAstMapper; export type MapperBuilder = (defaultImplem: IAstMapper) => IAstPartialMapper; type PartialNil<T> = { [P in keyof T]?: T[P] | nil; }; /** * An helper function that returns a copy of an object with modified properties * (similar to Object.assign()), but ONLY if thos properties have changed. * Will return the original object if not. */ export declare function assignChanged<T>(orig: T, assign: PartialNil<T>): T; /** * An helper function that returns a map of an array, but: * - It will return the original array if it is null-ish * - It will remove all null-ish entries * - It will return the original array if nothing has changed */ export declare function arrayNilMap<T extends Object>(this: void, collection: T[] | nil, mapper: (v: T) => T | nil): T[] | nil; /** * Can be used to modify an AST. * * You will have to override functions that you're interested in to use this class. * * Example: Will remove all references in */ export declare class AstDefaultMapper implements IAstMapper { wrapped?: IAstPartialMapper; skipNext?: boolean; super(): SkipModifier; statement(val: a.Statement): a.Statement | nil; comment(val: a.CommentStatement): a.Statement | nil; createView(val: a.CreateViewStatement): a.Statement | nil; createMaterializedView(val: a.CreateMaterializedViewStatement): a.Statement | nil; refreshMaterializedView(val: a.RefreshMaterializedViewStatement): a.Statement | nil; do(val: a.DoStatement): a.Statement | nil; createFunction(val: a.CreateFunctionStatement): a.Statement | nil; dropFunction(val: a.DropFunctionStatement): a.Statement | nil; show(val: a.ShowStatement): a.Statement | nil; createEnum(val: a.CreateEnumType): a.Statement | nil; alterEnum(val: a.AlterEnumType): a.Statement | nil; createCompositeType(val: a.CreateCompositeType): a.Statement | nil; drop(val: a.DropStatement): a.Statement | nil; alterSequence(seq: a.AlterSequenceStatement): a.Statement | nil; begin(begin: a.BeginStatement): a.Statement | nil; createSequence(seq: a.CreateSequenceStatement): a.Statement | nil; tablespace(val: a.TablespaceStatement): a.Statement | nil; setGlobal(val: a.SetGlobalStatement): a.Statement | nil; setTimezone(val: a.SetTimezone): a.Statement | nil; setNames(val: a.SetNames): a.Statement | nil; update(val: a.UpdateStatement): a.Statement | nil; insert(val: a.InsertStatement): a.Statement | nil; raise(val: a.RaiseStatement): a.Statement | nil; delete(val: a.DeleteStatement): a.Statement | nil; createSchema(val: a.CreateSchemaStatement): a.Statement | nil; createTable(val: a.CreateTableStatement): a.Statement | nil; likeTable(col: a.CreateColumnsLikeTable): a.CreateColumnDef | a.CreateColumnsLikeTable | nil; truncateTable(val: a.TruncateTableStatement): a.Statement | nil; constraint(c: a.ColumnConstraint): a.ColumnConstraint | nil; set(st: a.SetStatement): a.SetStatement | nil; /** Called when a data type definition is encountered */ dataType(dataType: a.DataTypeDef): a.DataTypeDef; /** Called when an alias of a table is created */ tableRef(st: a.QNameAliased): a.QNameAliased | nil; transaction(val: a.CommitStatement | a.RollbackStatement | a.StartTransactionStatement): a.Statement | nil; createExtension(val: a.CreateExtensionStatement): a.Statement | nil; createIndex(val: a.CreateIndexStatement): a.Statement | nil; prepare(st: a.PrepareStatement): a.Statement | nil; deallocate(st: a.DeallocateStatement): a.Statement | nil; alterIndex(st: a.AlterIndexStatement): a.Statement | nil; alterTable(st: a.AlterTableStatement): a.Statement | nil; tableAlteration(change: a.TableAlteration, table: a.QNameAliased): a.TableAlteration | nil; dropColumn(change: a.TableAlterationDropColumn, table: a.QNameAliased): a.TableAlteration | nil; dropConstraint(change: a.TableAlterationDropConstraint, table: a.QNameAliased): a.TableAlteration | nil; setTableOwner(change: a.TableAlterationOwner, table: a.QNameAliased): a.TableAlteration | nil; renameConstraint(change: a.TableAlterationRenameConstraint, table: a.QNameAliased): a.TableAlteration | nil; renameColumn(change: a.TableAlterationRenameColumn, table: a.QNameAliased): a.TableAlteration | nil; renameTable(change: a.TableAlterationRename, table: a.QNameAliased): a.TableAlteration | nil; alterColumn(change: a.TableAlterationAlterColumn, inTable: a.QNameAliased): a.TableAlteration | nil; setColumnType(alter: a.AlterColumnSetType, inTable: a.QName, inColumn: a.Name): a.AlterColumn | nil; alterColumnAddGenerated(alter: a.AlterColumnAddGenerated, inTable: a.QName, inColumn: a.Name): a.AlterColumn | nil; alterColumnSimple(alter: a.AlterColumnSimple, inTable: a.QName, inColumn: a.Name): a.AlterColumn | nil; setColumnDefault(alter: a.AlterColumnSetDefault, inTable: a.QName, inColumn: a.Name): a.AlterColumn | nil; addConstraint(change: a.TableAlterationAddConstraint, inTable: a.QName): a.TableAlteration | nil; addColumn(change: a.TableAlterationAddColumn, inTable: a.QName): a.TableAlteration | nil; createColumn(col: a.CreateColumnDef): a.CreateColumnDef | nil; select(val: a.SelectStatement): a.SelectStatement | nil; selection(val: a.SelectFromStatement): a.SelectStatement | nil; orderBy(orderBy: a.OrderByStatement[] | null | undefined): nil | a.OrderByStatement[]; union(val: a.SelectFromUnion): a.SelectStatement | nil; with(val: a.WithStatement): a.SelectStatement | nil; withRecursive(val: a.WithRecursiveStatement): a.SelectStatement | nil; from(from: a.From): a.From | nil; fromCall(from: a.FromCall): a.From | nil; fromStatement(from: a.FromStatement): a.From | nil; values(from: a.ValuesStatement): a.SelectStatement | nil; join(join: a.JoinClause): a.JoinClause | nil; fromTable(from: a.FromTable): a.From | nil; selectionColumn(val: a.SelectedColumn): a.SelectedColumn | nil; expr(val: a.Expr | nil): a.Expr | nil; arraySelect(val: a.ExprArrayFromSelect): a.ExprArrayFromSelect | null; extract(st: a.ExprExtract): a.Expr | nil; valueKeyword(val: a.ExprValueKeyword): a.Expr | nil; ternary(val: a.ExprTernary): a.Expr | nil; parameter(st: a.ExprParameter): a.Expr | nil; arrayIndex(val: a.ExprArrayIndex): a.Expr | nil; member(val: a.ExprMember): a.Expr | nil; case(val: a.ExprCase): a.Expr | nil; cast(val: a.ExprCast): a.Expr | nil; call(val: a.ExprCall): a.Expr | nil; callSubstring(val: a.ExprSubstring): a.Expr | nil; callOverlay(val: a.ExprOverlay): a.Expr | nil; array(val: a.ExprList): a.Expr | nil; constant(value: a.ExprLiteral): a.Expr | nil; default(value: a.ExprDefault): a.Expr | nil; /** Called when a reference is used */ ref(val: a.ExprRef): a.Expr | nil; unary(val: a.ExprUnary): a.Expr | nil; binary(val: a.ExprBinary): a.Expr | nil; } declare class SkipModifier extends AstDefaultMapper { readonly parent: AstDefaultMapper; constructor(parent: AstDefaultMapper); } export {}; //# sourceMappingURL=ast-mapper.d.ts.map