gamecloud
Version:
game logic server over cloud
309 lines (249 loc) • 8.6 kB
Markdown
Below are examples of all the different migrations supported by db-migrate. Please note that not all migrations are supported by all databases. For example, SQLite does not support dropping columns.
createTable(tableName, columnSpec, callback)
Creates a new table with the specified columns.
Arguments
tableName - the name of the table to create
columnSpec - a hash of column definitions
callback(err) - callback that will be invoked after table creation
Examples
```js
// with no table options
exports.up = function (db, callback) {
db.createTable('pets', {
id: { type: 'int', primaryKey: true, autoIncrement: true },
name: 'string' // shorthand notation
}, callback);
}
// with table options
exports.up = function (db, callback) {
db.createTable('pets', {
columns: {
id: { type: 'int', primaryKey: true, autoIncrement: true },
name: 'string' // shorthand notation
},
ifNotExists: true
}, callback);
}
```
```js
//data_type list:
module.exports = {
CHAR: 'char',
STRING: 'string',
TEXT: 'text',
SMALLINT: 'smallint',
BIGINT: 'bigint',
INTEGER: 'int',
SMALL_INTEGER: 'smallint',
BIG_INTEGER: 'bigint',
REAL: 'real',
DATE: 'date',
DATE_TIME: 'datetime',
TIME: 'time',
BLOB: 'blob',
TIMESTAMP: 'timestamp',
BINARY: 'binary',
BOOLEAN: 'boolean',
DECIMAL: 'decimal'
};
```
Column Specs
The following options are available on column specs
type - the column data type. Supported types can be found in db-migrate-shared/data_type.js
length - the column data length, where supported
primaryKey - true to set the column as a primary key. Compound primary keys are supported by setting the primaryKey option to true on multiple columns
autoIncrement - true to mark the column as auto incrementing
notNull - true to mark the column as non-nullable, omit it archive database default behavior and false to mark explicitly as nullable
unique - true to add unique constraint to the column
defaultValue - set the column default value. To set an expression (eg a function call) as the default value use this syntax: defaultValue: new String('uuid_generate_v4()')
foreignKey - set a foreign key to the column
Column ForeignKey Spec Examples
Note: Currently only supported together with mysql!
```js
exports.up = function(db, callback) {
//automatic mapping, the mapping key resolves to the column
db.createTable( 'product_variant',
{
id:
{
type: 'int',
unsigned: true,
notNull: true,
primaryKey: true,
autoIncrement: true,
length: 10
},
product_id:
{
type: 'int',
unsigned: true,
length: 10,
notNull: true,
foreignKey: {
name: 'product_variant_product_id_fk',
table: 'product',
rules: {
onDelete: 'CASCADE',
onUpdate: 'RESTRICT'
},
mapping: 'id'
}
},
}, callback );
};
exports.up = function(db, callback) {
//explicit mapping
db.createTable( 'product_variant',
{
id:
{
type: 'int',
unsigned: true,
notNull: true,
primaryKey: true,
autoIncrement: true,
length: 10
},
product_id:
{
type: 'int',
unsigned: true,
length: 10,
notNull: true,
foreignKey: {
name: 'product_variant_product_id_fk',
table: 'product',
rules: {
onDelete: 'CASCADE',
onUpdate: 'RESTRICT'
},
mapping: {
product_id: 'id'
}
}
},
}, callback );
};
dropTable(tableName, [options,] callback)
```
Drop a database table
Arguments
tableName - name of the table to drop
options - table options
callback(err) - callback that will be invoked after dropping the table
Table Options
ifExists - Only drop the table if it already exists
renameTable(tableName, newTableName, callback)
Rename a database table
Arguments
tableName - existing table name
options - new table name
callback(err) - callback that will be invoked after renaming the table
addColumn(tableName, columnName, columnSpec, callback)
Add a column to a database table
Arguments
tableName - name of table to add a column to
columnName - name of the column to add
columnSpec - a hash of column definitions
callback(err) - callback that will be invoked after adding the column
Column spec is the same as that described in createTable
removeColumn(tableName, columnName, callback)
Remove a column from an existing database table
tableName - name of table to remove a column from
columnName - name of the column to remove
callback(err) - callback that will be invoked after removing the column
renameColumn(tableName, oldColumnName, newColumnName, callback)
Rename a column
Arguments
tableName - table containing column to rename
oldColumnName - existing column name
newColumnName - new name of the column
callback(err) - callback that will be invoked after renaming the column
changeColumn(tableName, columnName, columnSpec, callback)
Change the definition of a column
Arguments
tableName - table containing column to change
columnName - existing column name
columnSpec - a hash containing the column spec
callback(err) - callback that will be invoked after changing the column
addIndex(tableName, indexName, columns, [unique], callback)
Add an index
Arguments
tableName - table to add the index too
indexName - the name of the index
columns - an array of column names contained in the index
unique - whether the index is unique (optional, default false)
callback(err) - callback that will be invoked after adding the index
addForeignKey
Adds a foreign Key
Arguments
tableName - table on which the foreign key gets applied
referencedTableName - table where the referenced key is located
keyName - name of the foreign key
fieldMapping - mapping of the foreign key to referenced key
rules - ondelete, onupdate constraints
callback(err) - callback that will be invoked after adding the foreign key
Example
```js
exports.up = function (db, callback)
{
db.addForeignKey('module_user', 'modules', 'module_user_module_id_foreign',
{
'module_id': 'id'
},
{
onDelete: 'CASCADE',
onUpdate: 'RESTRICT'
}, callback);
};
```
removeForeignKey
Arguments
tableName - table in which the foreign key should be deleted
keyName - the name of the foreign key
options - object of options, see below
callback - callback that will be invoked once the foreign key was deleted
Options
dropIndex (default: false) - deletes the index with the same name as the foreign key
Examples
```js
//without options object
exports.down = function (db, callback)
{
db.removeForeignKey('module_user', 'module_user_module_id_foreign', callback);
};
//with options object
exports.down = function (db, callback)
{
db.removeForeignKey('module_user', 'module_user_module_id_foreign',
{
dropIndex: true,
}, callback);
};
insert(tableName, columnNameArray, valueArray, callback)
```
Insert an item into a given column
Arguments
tableName - table to insert the item into
columnNameArray - the array existing column names for each item being inserted
valueArray - the array of values to be inserted into the associated column
callback(err) - callback that will be invoked once the insert has been completed.
removeIndex([tableName], indexName, callback)
Remove an index
Arguments
tableName - name of the table that has the index (Required for mySql)
indexName - the name of the index
callback(err) - callback that will be invoked after removing the index
runSql(sql, [params,] callback)
Run arbitrary SQL
Arguments
sql - the SQL query string, possibly with ? replacement parameters
params - zero or more ? replacement parameters
callback(err) - callback that will be invoked after executing the SQL
all(sql, [params,] callback)
Execute a select statement, even in dry run mode. Attention, only use this if you know what you're doing. This can cause you issues if you're utilizing the dry-run mode for testings. To execute sql queries always use runSql!
Arguments
sql - the SQL query string, possibly with ? replacement parameters
params - zero or more ? replacement parameters
callback(err, results) - callback that will be invoked after executing the SQL