Defined in: packages/core/src/transformers/AliasRenamer.ts:112
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
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:120
Creates a new instance of AliasRenamer.
Returns
AliasRenamer
Methods
renameAlias()
renameAlias(
sql
,position
,newName
,options
):RenameResult
Defined in: packages/core/src/transformers/AliasRenamer.ts:151
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
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
Result containing success status, modified SQL, and change details
Example
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