Skip to content
# Class: AliasRenamer

Defined in: packages/core/src/transformers/AliasRenamer.ts:113

A utility class for renaming table and column aliases in SQL queries.

This class provides functionality to rename aliases within specific scopes (CTE, subquery, or main query) based on cursor position from GUI editors. It automatically detects the appropriate scope and updates all references to the alias within that scope boundary.

Example ​

typescript
import { AliasRenamer } from 'rawsql-ts';

const sql = `
  SELECT u.name, o.date
  FROM users u
  JOIN orders o ON u.id = o.user_id
`;

const renamer = new AliasRenamer();

// Rename 'u' to 'user_alias' by selecting it at line 2, column 10
const result = renamer.renameAlias(sql, { line: 2, column: 10 }, 'user_alias');

if (result.success) {
  console.log(result.newSql);
  // SELECT user_alias.name, o.date
  // FROM users user_alias
  // JOIN orders o ON user_alias.id = o.user_id
}

Related tests: packages/core/tests/transformers/AliasRenamer.functional.test.ts

Since ​

0.12.0

Constructors ​

Constructor ​

new AliasRenamer(): AliasRenamer

Defined in: packages/core/src/transformers/AliasRenamer.ts:121

Creates a new instance of AliasRenamer.

Returns ​

AliasRenamer

Methods ​

renameAlias() ​

renameAlias(sql, position, newName, options): RenameResult

Defined in: packages/core/src/transformers/AliasRenamer.ts:152

Renames an alias based on the cursor position in GUI editor.

This method detects the alias at the specified line and column position, determines its scope (CTE, subquery, or main query), and renames all references to that alias within the scope boundaries.

Parameters ​

sql ​

string

The SQL string containing the alias to rename

position ​

LineColumn

Line and column position (1-based) from GUI editor

newName ​

string

The new name for the alias

options ​

RenameOptions = {}

Optional configuration for the rename operation

Returns ​

RenameResult

Result containing success status, modified SQL, and change details

Example ​

typescript
const sql = "SELECT u.name FROM users u WHERE u.active = true";
const result = renamer.renameAlias(sql, { line: 1, column: 8 }, 'user_table');

if (result.success) {
  console.log(result.newSql);
  // "SELECT user_table.name FROM users user_table WHERE user_table.active = true"
}

Throws ​

When the SQL cannot be parsed or position is invalid

Released under the MIT License.