Skip to content

Commit bcf08b7

Browse files
author
Chaoran Yang
committed
Add rename clause for alter table
1 parent dbc89c9 commit bcf08b7

4 files changed

Lines changed: 29 additions & 0 deletions

File tree

lib/dialect/postgres.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ Postgres.prototype.visit = function(node) {
4545
case 'DEFAULT': return this.visitDefault(node);
4646
case 'IF EXISTS': return this.visitIfExists();
4747
case 'IF NOT EXISTS': return this.visitIfNotExists();
48+
case 'RENAME': return this.visitRename(node);
4849
case 'ADD COLUMN': return this.visitAddColumn(node);
4950
case 'DROP COLUMN': return this.visitDropColumn(node);
5051
case 'RENAME COLUMN': return this.visitRenameColumn(node);
@@ -346,6 +347,10 @@ Postgres.prototype.visitRenameColumn = function(renameColumn) {
346347
return ['RENAME COLUMN ' + this.visit(renameColumn.nodes[0]) + ' TO ' + this.visit(renameColumn.nodes[1])];
347348
};
348349

350+
Postgres.prototype.visitRename = function(rename) {
351+
return ['RENAME TO ' + this.visit(rename.nodes[0])];
352+
};
353+
349354
Postgres.prototype.visitIfExists = function() {
350355
return ['IF EXISTS'];
351356
};

lib/node/query.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ var Alter = require(__dirname + '/alter');
2121
var AddColumn = require(__dirname + '/addColumn');
2222
var DropColumn = require(__dirname + '/dropColumn');
2323
var RenameColumn = require(__dirname + '/renameColumn');
24+
var Rename = require(__dirname + '/rename');
2425
var Column = require(__dirname + '/../column');
2526
var ParameterNode = require(__dirname + '/parameter');
2627
var IfExists = require(__dirname + '/ifExists');
@@ -161,6 +162,14 @@ var Query = Node.define({
161162
alter: function() {
162163
return this.add(new Alter());
163164
},
165+
rename: function(newName) {
166+
var renameClause = new Rename();
167+
if (!newName.toNode)
168+
newName = new Column({ name: newName, table: this.table});
169+
renameClause.add(newName.toNode());
170+
this.nodes[0].add(renameClause);
171+
return this;
172+
},
164173
addColumn: function(column, dataType) {
165174
var addClause = new AddColumn();
166175
if (!column.toNode)

lib/node/rename.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
'use strict';
2+
3+
var Node = require(__dirname);
4+
5+
module.exports = Node.define({
6+
type: 'RENAME'
7+
});

test/dialects/alter-table-tests.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,14 @@ Harness.test({
3737
params: []
3838
});
3939

40+
Harness.test({
41+
query : post.alter().rename('posts'),
42+
pg : 'ALTER TABLE "post" RENAME TO "posts"',
43+
sqlite: 'ALTER TABLE "post" RENAME TO "posts"',
44+
mysql : 'ALTER TABLE `post` RENAME TO `posts`',
45+
params: []
46+
});
47+
4048
var group = Table.define({
4149
name: 'group',
4250
columns: [{

0 commit comments

Comments
 (0)