|
|
|
@ -2,6 +2,10 @@
|
|
|
|
|
|
|
|
|
|
https://knexjs.org/guide/migrations.html#knexfile-in-other-languages
|
|
|
|
|
|
|
|
|
|
## Basic rules
|
|
|
|
|
- All tables must have a primary key named `id`
|
|
|
|
|
- Filename format: `YYYY-MM-DD-HHMM-patch-name.js`
|
|
|
|
|
- Avoid native SQL syntax, use knex methods, because Uptime Kuma supports multiple databases
|
|
|
|
|
|
|
|
|
|
## Template
|
|
|
|
|
|
|
|
|
@ -21,19 +25,17 @@ exports.down = function(knex) {
|
|
|
|
|
|
|
|
|
|
## Example
|
|
|
|
|
|
|
|
|
|
YYYY-MM-DD-HHMM-create-users-products.js
|
|
|
|
|
|
|
|
|
|
2023-06-30-1348-create-users-products.js
|
|
|
|
|
Filename: 2023-06-30-1348-create-user-and-product.js
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
exports.up = function(knex) {
|
|
|
|
|
return knex.schema
|
|
|
|
|
.createTable('users', function (table) {
|
|
|
|
|
.createTable('user', function (table) {
|
|
|
|
|
table.increments('id');
|
|
|
|
|
table.string('first_name', 255).notNullable();
|
|
|
|
|
table.string('last_name', 255).notNullable();
|
|
|
|
|
})
|
|
|
|
|
.createTable('products', function (table) {
|
|
|
|
|
.createTable('product', function (table) {
|
|
|
|
|
table.increments('id');
|
|
|
|
|
table.decimal('price').notNullable();
|
|
|
|
|
table.string('name', 1000).notNullable();
|
|
|
|
@ -47,8 +49,8 @@ exports.up = function(knex) {
|
|
|
|
|
|
|
|
|
|
exports.down = function(knex) {
|
|
|
|
|
return knex.schema
|
|
|
|
|
.dropTable("products")
|
|
|
|
|
.dropTable("users");
|
|
|
|
|
.dropTable("product")
|
|
|
|
|
.dropTable("user");
|
|
|
|
|
};
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|