import type { ColumnCreateTableContext, ColumnNameCreateContext, CreateDatabaseContext, CreateForeignTableContext, CreateMaterializedViewContext, CreatePartitionForeignTableContext, CreateViewContext, CreatefunctionstmtContext, DatabaseNameContext, DatabaseNameCreateContext, FunctionNameCreateContext, InsertStatementContext, QueryCreateTableContext, SelectStatementContext, SingleStmtContext, TableNameContext, TableNameCreateContext, ViewNameContext, ViewNameCreateContext, } from '../../lib/postgresql/PostgreSqlParser'; import type { PostgreSqlParserListener } from '../../lib/postgresql/PostgreSqlParserListener'; import { EntityContextType } from '../common/types'; import { StmtContextType, EntityCollector } from '../common/entityCollector'; export class PostgreSqlEntityCollector extends EntityCollector implements PostgreSqlParserListener { /** ====== Entity Begin */ exitDatabaseName(ctx: DatabaseNameContext) { this.pushEntity(ctx, EntityContextType.DATABASE); } exitDatabaseNameCreate(ctx: DatabaseNameCreateContext) { this.pushEntity(ctx, EntityContextType.DATABASE_CREATE); } exitTableName(ctx: TableNameContext) { this.pushEntity(ctx, EntityContextType.TABLE); } exitTableNameCreate(ctx: TableNameCreateContext) { this.pushEntity(ctx, EntityContextType.TABLE_CREATE); } exitViewName(ctx: ViewNameContext) { this.pushEntity(ctx, EntityContextType.VIEW); } exitViewNameCreate(ctx: ViewNameCreateContext) { this.pushEntity(ctx, EntityContextType.VIEW_CREATE); } exitFunctionNameCreate(ctx: FunctionNameCreateContext) { this.pushEntity(ctx, EntityContextType.FUNCTION_CREATE); } exitColumnNameCreate(ctx: ColumnNameCreateContext) { this.pushEntity(ctx, EntityContextType.COLUMN_CREATE); } /** ===== Statement begin */ enterSingleStatement(ctx: SingleStmtContext) { this.pushStmt(ctx, StmtContextType.COMMON_STMT); } exitSingleStatement(ctx: SingleStmtContext) { this.popStmt(); } enterCreateDatabase(ctx: CreateDatabaseContext) { this.pushStmt(ctx, StmtContextType.CREATE_DATABASE_STMT); } exitCreateDatabase(ctx: CreateDatabaseContext) { this.popStmt(); } enterQueryCreateTable(ctx: QueryCreateTableContext) { this.pushStmt(ctx, StmtContextType.CREATE_TABLE_STMT); } exitQueryCreateTable(ctx: QueryCreateTableContext) { this.popStmt(); } enterColumnCreateTable(ctx: ColumnCreateTableContext) { this.pushStmt(ctx, StmtContextType.CREATE_TABLE_STMT); } exitColumnCreateTable(ctx: ColumnCreateTableContext) { this.popStmt(); } enterCreateForeignTable(ctx: CreateForeignTableContext) { this.pushStmt(ctx, StmtContextType.CREATE_TABLE_STMT); } exitCreateForeignTable(ctx: CreateForeignTableContext) { this.popStmt(); } enterCreatePartitionForeignTable(ctx: CreatePartitionForeignTableContext) { this.pushStmt(ctx, StmtContextType.CREATE_TABLE_STMT); } exitCreatePartitionForeignTable(ctx: CreatePartitionForeignTableContext) { this.popStmt(); } enterCreateView(ctx: CreateViewContext) { this.pushStmt(ctx, StmtContextType.CREATE_VIEW_STMT); } exitCreateView(ctx: CreateViewContext) { this.popStmt(); } enterCreateMaterializedView(ctx: CreateMaterializedViewContext) { this.pushStmt(ctx, StmtContextType.CREATE_VIEW_STMT); } exitCreateMaterializedView(ctx: CreateMaterializedViewContext) { this.popStmt(); } enterSelectStatement(ctx: SelectStatementContext) { this.pushStmt(ctx, StmtContextType.SELECT_STMT); } exitSelectStatement(ctx: SelectStatementContext) { this.popStmt(); } enterInsertStatement(ctx: InsertStatementContext) { this.pushStmt(ctx, StmtContextType.INSERT_STMT); } exitInsertStatement(ctx: InsertStatementContext) { this.popStmt(); } enterCreatefunctionstmt(ctx: CreatefunctionstmtContext) { this.pushStmt(ctx, StmtContextType.CREATE_FUNCTION_STMT); } exitCreatefunctionstmt(ctx: CreatefunctionstmtContext) { this.popStmt(); } }