From 4fe4d4a894d44d982af647e1e89d014e7c6f1579 Mon Sep 17 00:00:00 2001 From: axiosleo Date: Sun, 19 Apr 2026 14:55:03 +0800 Subject: [PATCH] feat(migration): add renameTable method for table renaming functionality --- index.d.ts | 17 +++++++++++++++++ src/builder.js | 8 ++++++++ src/migration.js | 12 ++++++++++++ 3 files changed, 37 insertions(+) diff --git a/index.d.ts b/index.d.ts index c5f2f13..0f27af5 100644 --- a/index.d.ts +++ b/index.d.ts @@ -688,9 +688,26 @@ export declare class MigrationInterface { */ dropForeignKey(tableName: string, foreign_key: string): void; + /** + * insert data into table + * @param table + * @param data + */ insertData(table: string, data: any[]): void; + /** + * execute raw sql + * @param sql + * @param values + */ raw(sql: string, values: any[]): void; + + /** + * rename table + * @param oldTableName + * @param newTableName + */ + renameTable(oldTableName: string, newTableName: string): void; } export type MigrateAction = 'up' | 'down' | 'UP' | 'DOWN'; diff --git a/src/builder.js b/src/builder.js index 9738799..2539a35 100644 --- a/src/builder.js +++ b/src/builder.js @@ -523,6 +523,14 @@ class ManageSQLBuilder extends Builder { } } + renameTable(options) { + _validate(options, { + oldName: 'required|string', + newName: 'required|string', + }); + return _render('RENAME TABLE `${oldName}` TO `${newName}`', options); + } + /** * @param {import('./migration').ManageBuilderOptions} options */ diff --git a/src/migration.js b/src/migration.js index 55d5dbc..2f878fb 100644 --- a/src/migration.js +++ b/src/migration.js @@ -325,6 +325,18 @@ function _initMigration(file, queries = {}) { }, ...baseAttr }); + Object.defineProperty(migration, 'renameTable', { + value: function (oldTableName, newTableName) { + const builder = new ManageSQLBuilder({ + operator: 'rename', + target: 'table', + oldName: oldTableName, + newName: newTableName + }); + queries[file].push({ sql: builder.sql, values: builder.values }); + }, ...baseAttr + }); + return migration; }