Skip to content

Commit a0c5fda

Browse files
committed
chore: add migration
1 parent a3d466d commit a0c5fda

File tree

2 files changed

+253
-0
lines changed

2 files changed

+253
-0
lines changed

migrations/1-0.1.0.js

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
'use strict';
2+
3+
const Sequelize = require('sequelize');
4+
5+
/**
6+
* Actions summary:
7+
*
8+
* createTable "objects", deps: []
9+
* addIndex "objects_dirname_type_basename_id" to table "objects"
10+
* addIndex "objects_updated_at" to table "objects"
11+
* addIndex "objects_path" to table "objects"
12+
*
13+
**/
14+
15+
const info = {
16+
revision: 1,
17+
name: '0.1.0',
18+
created: '2022-06-10T02:52:38.046Z',
19+
comment: '',
20+
};
21+
22+
const migrationCommands = [{
23+
fn: 'createTable',
24+
params: [
25+
'objects',
26+
{
27+
id: {
28+
type: Sequelize.INTEGER,
29+
field: 'id',
30+
autoIncrement: true,
31+
primaryKey: true,
32+
allowNull: false,
33+
},
34+
type: {
35+
type: Sequelize.TINYINT,
36+
field: 'type',
37+
validate: {
38+
isIn: [
39+
[1, 2],
40+
],
41+
},
42+
allowNull: false,
43+
},
44+
path: {
45+
type: Sequelize.STRING(1024),
46+
field: 'path',
47+
allowNull: false,
48+
},
49+
dirname: {
50+
type: Sequelize.STRING(1024),
51+
field: 'dirname',
52+
allowNull: false,
53+
},
54+
basename: {
55+
type: Sequelize.CITEXT,
56+
field: 'basename',
57+
allowNull: false,
58+
},
59+
lastModified: {
60+
type: Sequelize.DATE,
61+
field: 'lastModified',
62+
defaultValue: Sequelize.NOW,
63+
allowNull: false,
64+
},
65+
size: {
66+
type: Sequelize.BIGINT,
67+
field: 'size',
68+
defaultValue: 0,
69+
allowNull: false,
70+
},
71+
createdAt: {
72+
type: Sequelize.DATE,
73+
field: 'createdAt',
74+
allowNull: false,
75+
},
76+
updatedAt: {
77+
type: Sequelize.DATE,
78+
field: 'updatedAt',
79+
allowNull: false,
80+
},
81+
},
82+
{},
83+
],
84+
},
85+
{
86+
fn: 'addIndex',
87+
params: [
88+
'objects',
89+
['dirname', 'type', 'basename', 'id'],
90+
{
91+
indexName: 'objects_dirname_type_basename_id',
92+
name: 'objects_dirname_type_basename_id',
93+
},
94+
],
95+
},
96+
{
97+
fn: 'addIndex',
98+
params: [
99+
'objects',
100+
['updatedAt'],
101+
{
102+
indexName: 'objects_updated_at',
103+
name: 'objects_updated_at',
104+
},
105+
],
106+
},
107+
{
108+
fn: 'addIndex',
109+
params: [
110+
'objects',
111+
['path'],
112+
{
113+
indexName: 'objects_path',
114+
name: 'objects_path',
115+
indicesType: 'UNIQUE',
116+
type: 'UNIQUE',
117+
},
118+
],
119+
}];
120+
121+
module.exports = {
122+
pos: 0,
123+
up(queryInterface, Sequelize) {
124+
let index = this.pos;
125+
return new Promise((resolve, reject) => {
126+
function next() {
127+
if (index < migrationCommands.length) {
128+
const command = migrationCommands[index];
129+
console.log('[#' + index + '] execute: ' + command.fn);
130+
index++;
131+
queryInterface[command.fn].apply(queryInterface, command.params).then(next, reject);
132+
} else {
133+
resolve();
134+
}
135+
}
136+
137+
next();
138+
});
139+
},
140+
info,
141+
};

migrations/_current.json

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
{
2+
"tables": {
3+
"objects": {
4+
"tableName": "objects",
5+
"schema": {
6+
"id": {
7+
"allowNull": false,
8+
"primaryKey": true,
9+
"autoIncrement": true,
10+
"field": "id",
11+
"seqType": "Sequelize.INTEGER"
12+
},
13+
"type": {
14+
"allowNull": false,
15+
"validate": {
16+
"isIn": [
17+
[
18+
1,
19+
2
20+
]
21+
]
22+
},
23+
"field": "type",
24+
"seqType": "Sequelize.TINYINT"
25+
},
26+
"path": {
27+
"allowNull": false,
28+
"field": "path",
29+
"seqType": "Sequelize.STRING(1024)"
30+
},
31+
"dirname": {
32+
"allowNull": false,
33+
"field": "dirname",
34+
"seqType": "Sequelize.STRING(1024)"
35+
},
36+
"basename": {
37+
"allowNull": false,
38+
"field": "basename",
39+
"seqType": "Sequelize.CITEXT"
40+
},
41+
"lastModified": {
42+
"allowNull": false,
43+
"defaultValue": {
44+
"internal": true,
45+
"value": "Sequelize.NOW"
46+
},
47+
"field": "lastModified",
48+
"seqType": "Sequelize.DATE"
49+
},
50+
"size": {
51+
"allowNull": false,
52+
"defaultValue": {
53+
"value": 0
54+
},
55+
"field": "size",
56+
"seqType": "Sequelize.BIGINT"
57+
},
58+
"createdAt": {
59+
"allowNull": false,
60+
"field": "createdAt",
61+
"seqType": "Sequelize.DATE"
62+
},
63+
"updatedAt": {
64+
"allowNull": false,
65+
"field": "updatedAt",
66+
"seqType": "Sequelize.DATE"
67+
}
68+
},
69+
"indexes": {
70+
"183f280b8914e4555e01bc7ea2b5a6d53968a206": {
71+
"unique": true,
72+
"fields": [
73+
"path"
74+
],
75+
"name": "objects_path",
76+
"options": {
77+
"indexName": "objects_path",
78+
"name": "objects_path",
79+
"indicesType": "UNIQUE",
80+
"type": "UNIQUE"
81+
}
82+
},
83+
"3ec0abbcc3a1c6da61ddba1070d200bc91de5e23": {
84+
"unique": false,
85+
"fields": [
86+
"updatedAt"
87+
],
88+
"name": "objects_updated_at",
89+
"options": {
90+
"indexName": "objects_updated_at",
91+
"name": "objects_updated_at"
92+
}
93+
},
94+
"bfeb9da4c77d8c67376eb7071c7003b1bc16f46e": {
95+
"unique": false,
96+
"fields": [
97+
"dirname",
98+
"type",
99+
"basename",
100+
"id"
101+
],
102+
"name": "objects_dirname_type_basename_id",
103+
"options": {
104+
"indexName": "objects_dirname_type_basename_id",
105+
"name": "objects_dirname_type_basename_id"
106+
}
107+
}
108+
}
109+
}
110+
},
111+
"revision": 1
112+
}

0 commit comments

Comments
 (0)