@biorate/migrations 1.0.0 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/.nyc_output/ec155b37-e583-43e9-ab27-b2091d8064ad.json +1 -0
  2. package/.nyc_output/processinfo/ec155b37-e583-43e9-ab27-b2091d8064ad.json +1 -0
  3. package/.nyc_output/processinfo/index.json +1 -1
  4. package/CHANGELOG.md +30 -0
  5. package/coverage/lcov-report/index.html +17 -17
  6. package/coverage/lcov-report/src/default.config.ts.html +22 -4
  7. package/coverage/lcov-report/src/index.html +7 -7
  8. package/coverage/lcov-report/src/index.ts.html +1 -1
  9. package/coverage/lcov-report/src/root.ts.html +14 -5
  10. package/coverage/lcov-report/src/types/index.html +51 -21
  11. package/coverage/lcov-report/src/types/index.ts.html +10 -4
  12. package/coverage/lcov-report/src/types/migration.ts.html +119 -14
  13. package/coverage/lcov-report/src/types/minio.ts.html +196 -0
  14. package/coverage/lcov-report/src/types/mongodb.ts.html +187 -0
  15. package/coverage/lcov-report/src/types/sequelize.ts.html +56 -41
  16. package/coverage/lcov.info +140 -67
  17. package/dist/src/default.config.js +6 -0
  18. package/dist/src/default.config.js.map +1 -1
  19. package/dist/src/root.js +8 -0
  20. package/dist/src/root.js.map +1 -1
  21. package/dist/src/types/index.js +2 -0
  22. package/dist/src/types/index.js.map +1 -1
  23. package/dist/src/types/migration.js +23 -1
  24. package/dist/src/types/migration.js.map +1 -1
  25. package/dist/src/types/minio.js +39 -0
  26. package/dist/src/types/minio.js.map +1 -0
  27. package/dist/src/types/mongodb.js +34 -0
  28. package/dist/src/types/mongodb.js.map +1 -0
  29. package/dist/src/types/sequelize.js +12 -24
  30. package/dist/src/types/sequelize.js.map +1 -1
  31. package/dist/tsconfig.build.tsbuildinfo +1 -1
  32. package/package.json +11 -8
  33. package/src/default.config.ts +6 -0
  34. package/src/root.ts +3 -1
  35. package/src/types/index.ts +2 -0
  36. package/src/types/migration.ts +42 -1
  37. package/src/types/minio.ts +37 -0
  38. package/src/types/mongodb.ts +34 -0
  39. package/src/types/sequelize.ts +34 -33
  40. package/.nyc_output/6c4e5be1-f3fe-46fc-b73e-40a57317040b.json +0 -1
  41. package/.nyc_output/processinfo/6c4e5be1-f3fe-46fc-b73e-40a57317040b.json +0 -1
@@ -0,0 +1,196 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/types/minio.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">src/types</a> minio.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">78.57% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>11/14</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>0/0</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>3/3</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">78.57% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>11/14</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line medium'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
104
+ <span class="cline-any cline-neutral">&nbsp;</span>
105
+ <span class="cline-any cline-yes">1x</span>
106
+ <span class="cline-any cline-neutral">&nbsp;</span>
107
+ <span class="cline-any cline-neutral">&nbsp;</span>
108
+ <span class="cline-any cline-neutral">&nbsp;</span>
109
+ <span class="cline-any cline-yes">1x</span>
110
+ <span class="cline-any cline-yes">1x</span>
111
+ <span class="cline-any cline-neutral">&nbsp;</span>
112
+ <span class="cline-any cline-neutral">&nbsp;</span>
113
+ <span class="cline-any cline-neutral">&nbsp;</span>
114
+ <span class="cline-any cline-neutral">&nbsp;</span>
115
+ <span class="cline-any cline-yes">1x</span>
116
+ <span class="cline-any cline-neutral">&nbsp;</span>
117
+ <span class="cline-any cline-neutral">&nbsp;</span>
118
+ <span class="cline-any cline-yes">1x</span>
119
+ <span class="cline-any cline-yes">1x</span>
120
+ <span class="cline-any cline-yes">1x</span>
121
+ <span class="cline-any cline-yes">1x</span>
122
+ <span class="cline-any cline-neutral">&nbsp;</span>
123
+ <span class="cline-any cline-neutral">&nbsp;</span>
124
+ <span class="cline-any cline-yes">1x</span>
125
+ <span class="cline-any cline-yes">1x</span>
126
+ <span class="cline-any cline-neutral">&nbsp;</span>
127
+ <span class="cline-any cline-no">&nbsp;</span>
128
+ <span class="cline-any cline-neutral">&nbsp;</span>
129
+ <span class="cline-any cline-neutral">&nbsp;</span>
130
+ <span class="cline-any cline-neutral">&nbsp;</span>
131
+ <span class="cline-any cline-neutral">&nbsp;</span>
132
+ <span class="cline-any cline-neutral">&nbsp;</span>
133
+ <span class="cline-any cline-no">&nbsp;</span>
134
+ <span class="cline-any cline-no">&nbsp;</span>
135
+ <span class="cline-any cline-neutral">&nbsp;</span>
136
+ <span class="cline-any cline-neutral">&nbsp;</span>
137
+ <span class="cline-any cline-neutral">&nbsp;</span>
138
+ <span class="cline-any cline-neutral">&nbsp;</span>
139
+ <span class="cline-any cline-neutral">&nbsp;</span>
140
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Migration } from './migration';
141
+ import { IMinioDBConnector, IMinioConfig, IMinioConnection } from '@biorate/minio';
142
+ import { inject, Types } from '@biorate/inversion';
143
+ /**
144
+ * @description Minio migration class
145
+ */
146
+ export class Minio extends Migration {
147
+ @inject(Types.Minio) protected connector: IMinioDBConnector;
148
+ /**
149
+ * @description Minio process method realization
150
+ */
151
+ protected async process() {
152
+ await this.forEach&lt;IMinioConfig, IMinioConnection&gt;(
153
+ 'Minio',
154
+ async (config, connection, paths) =&gt;
155
+ await this.forEachPath(paths, async (file, name) =&gt; {
156
+ const tableName = this.config.get&lt;string&gt;('migrations.tableName', 'migrations');
157
+ try {
158
+ await connection.makeBucket(tableName, tableName);
159
+ } catch {}
160
+ &nbsp;
161
+ try {
162
+ await connection.getObject(tableName, name);
163
+ } catch (e) {
164
+ <span class="cstat-no" title="statement not covered" > await (</span>
165
+ require(file) as (
166
+ connection: IMinioConnection,
167
+ config: IMinioConfig,
168
+ ) =&gt; Promise&lt;void&gt;
169
+ )(connection, config);
170
+ <span class="cstat-no" title="statement not covered" > await connection.putObject(tableName, name, Buffer.from('1'));</span>
171
+ <span class="cstat-no" title="statement not covered" > this.log(config.name, name);</span>
172
+ }
173
+ }),
174
+ );
175
+ }
176
+ }
177
+ &nbsp;</pre></td></tr></table></pre>
178
+
179
+ <div class='push'></div><!-- for sticky footer -->
180
+ </div><!-- /wrapper -->
181
+ <div class='footer quiet pad2 space-top1 center small'>
182
+ Code coverage generated by
183
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
184
+ at Mon Aug 15 2022 14:09:53 GMT+0300 (Москва, стандартное время)
185
+ </div>
186
+ <script src="../../prettify.js"></script>
187
+ <script>
188
+ window.onload = function () {
189
+ prettyPrint();
190
+ };
191
+ </script>
192
+ <script src="../../sorter.js"></script>
193
+ <script src="../../block-navigation.js"></script>
194
+ </body>
195
+ </html>
196
+
@@ -0,0 +1,187 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/types/mongodb.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">src/types</a> mongodb.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">80% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>8/10</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>0/0</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>3/3</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">80% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>8/10</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
101
+ <span class="cline-any cline-neutral">&nbsp;</span>
102
+ <span class="cline-any cline-yes">1x</span>
103
+ <span class="cline-any cline-neutral">&nbsp;</span>
104
+ <span class="cline-any cline-neutral">&nbsp;</span>
105
+ <span class="cline-any cline-neutral">&nbsp;</span>
106
+ <span class="cline-any cline-yes">1x</span>
107
+ <span class="cline-any cline-yes">1x</span>
108
+ <span class="cline-any cline-neutral">&nbsp;</span>
109
+ <span class="cline-any cline-neutral">&nbsp;</span>
110
+ <span class="cline-any cline-neutral">&nbsp;</span>
111
+ <span class="cline-any cline-neutral">&nbsp;</span>
112
+ <span class="cline-any cline-yes">1x</span>
113
+ <span class="cline-any cline-neutral">&nbsp;</span>
114
+ <span class="cline-any cline-neutral">&nbsp;</span>
115
+ <span class="cline-any cline-yes">1x</span>
116
+ <span class="cline-any cline-yes">1x</span>
117
+ <span class="cline-any cline-yes">1x</span>
118
+ <span class="cline-any cline-neutral">&nbsp;</span>
119
+ <span class="cline-any cline-neutral">&nbsp;</span>
120
+ <span class="cline-any cline-neutral">&nbsp;</span>
121
+ <span class="cline-any cline-neutral">&nbsp;</span>
122
+ <span class="cline-any cline-no">&nbsp;</span>
123
+ <span class="cline-any cline-neutral">&nbsp;</span>
124
+ <span class="cline-any cline-neutral">&nbsp;</span>
125
+ <span class="cline-any cline-neutral">&nbsp;</span>
126
+ <span class="cline-any cline-neutral">&nbsp;</span>
127
+ <span class="cline-any cline-neutral">&nbsp;</span>
128
+ <span class="cline-any cline-no">&nbsp;</span>
129
+ <span class="cline-any cline-neutral">&nbsp;</span>
130
+ <span class="cline-any cline-neutral">&nbsp;</span>
131
+ <span class="cline-any cline-neutral">&nbsp;</span>
132
+ <span class="cline-any cline-neutral">&nbsp;</span>
133
+ <span class="cline-any cline-neutral">&nbsp;</span>
134
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Migration } from './migration';
135
+ import { IMongoDBConfig, IMongoDBConnection, IMongoDBConnector } from '@biorate/mongodb';
136
+ import { inject, Types } from '@biorate/inversion';
137
+ /**
138
+ * @description Mongodb migration class
139
+ */
140
+ export class Mongodb extends Migration {
141
+ @inject(Types.Mongodb) protected connector: IMongoDBConnector;
142
+ /**
143
+ * @description Mongodb process method realization
144
+ */
145
+ protected async process() {
146
+ await this.forEach&lt;IMongoDBConfig, IMongoDBConnection&gt;(
147
+ 'MongoDB',
148
+ async (config, connection, paths) =&gt;
149
+ await this.forEachPath(paths, async (file, name) =&gt; {
150
+ try {
151
+ await connection
152
+ .collection&lt;{ _id: string }&gt;(
153
+ this.config.get&lt;string&gt;('migrations.tableName', 'migrations'),
154
+ )
155
+ .insertOne({ _id: name });
156
+ <span class="cstat-no" title="statement not covered" > await (</span>
157
+ require(file) as (
158
+ connection: IMongoDBConnection,
159
+ config: IMongoDBConfig,
160
+ ) =&gt; Promise&lt;void&gt;
161
+ )(connection, config);
162
+ <span class="cstat-no" title="statement not covered" > this.log(config.name, name);</span>
163
+ } catch (e) {}
164
+ }),
165
+ );
166
+ }
167
+ }
168
+ &nbsp;</pre></td></tr></table></pre>
169
+
170
+ <div class='push'></div><!-- for sticky footer -->
171
+ </div><!-- /wrapper -->
172
+ <div class='footer quiet pad2 space-top1 center small'>
173
+ Code coverage generated by
174
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
175
+ at Mon Aug 15 2022 14:09:53 GMT+0300 (Москва, стандартное время)
176
+ </div>
177
+ <script src="../../prettify.js"></script>
178
+ <script>
179
+ window.onload = function () {
180
+ prettyPrint();
181
+ };
182
+ </script>
183
+ <script src="../../sorter.js"></script>
184
+ <script src="../../block-navigation.js"></script>
185
+ </body>
186
+ </html>
187
+
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">91.3% </span>
26
+ <span class="strong">94.11% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>21/23</span>
28
+ <span class='fraction'>16/17</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">50% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>2/4</span>
35
+ <span class='fraction'>1/2</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>2/2</span>
42
+ <span class='fraction'>4/4</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>21/21</span>
49
+ <span class='fraction'>16/16</span>
50
50
  </div>
51
51
 
52
52
 
@@ -105,24 +105,32 @@
105
105
  <a name='L40'></a><a href='#L40'>40</a>
106
106
  <a name='L41'></a><a href='#L41'>41</a>
107
107
  <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
109
- <span class="cline-any cline-yes">1x</span>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
110
114
  <span class="cline-any cline-yes">1x</span>
111
115
  <span class="cline-any cline-yes">1x</span>
112
116
  <span class="cline-any cline-yes">1x</span>
113
117
  <span class="cline-any cline-neutral">&nbsp;</span>
114
118
  <span class="cline-any cline-neutral">&nbsp;</span>
115
119
  <span class="cline-any cline-neutral">&nbsp;</span>
116
- <span class="cline-any cline-yes">1x</span>
117
- <span class="cline-any cline-yes">1x</span>
120
+ <span class="cline-any cline-neutral">&nbsp;</span>
118
121
  <span class="cline-any cline-neutral">&nbsp;</span>
119
122
  <span class="cline-any cline-neutral">&nbsp;</span>
120
123
  <span class="cline-any cline-neutral">&nbsp;</span>
121
124
  <span class="cline-any cline-neutral">&nbsp;</span>
122
125
  <span class="cline-any cline-yes">1x</span>
123
126
  <span class="cline-any cline-yes">1x</span>
127
+ <span class="cline-any cline-neutral">&nbsp;</span>
128
+ <span class="cline-any cline-neutral">&nbsp;</span>
129
+ <span class="cline-any cline-neutral">&nbsp;</span>
130
+ <span class="cline-any cline-neutral">&nbsp;</span>
124
131
  <span class="cline-any cline-yes">1x</span>
125
- <span class="cline-any cline-yes">1x</span>
132
+ <span class="cline-any cline-neutral">&nbsp;</span>
133
+ <span class="cline-any cline-neutral">&nbsp;</span>
126
134
  <span class="cline-any cline-yes">1x</span>
127
135
  <span class="cline-any cline-neutral">&nbsp;</span>
128
136
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -135,58 +143,65 @@
135
143
  <span class="cline-any cline-neutral">&nbsp;</span>
136
144
  <span class="cline-any cline-yes">1x</span>
137
145
  <span class="cline-any cline-yes">1x</span>
146
+ <span class="cline-any cline-neutral">&nbsp;</span>
147
+ <span class="cline-any cline-neutral">&nbsp;</span>
138
148
  <span class="cline-any cline-yes">2x</span>
139
149
  <span class="cline-any cline-yes">2x</span>
140
150
  <span class="cline-any cline-yes">2x</span>
141
151
  <span class="cline-any cline-yes">2x</span>
142
152
  <span class="cline-any cline-yes">2x</span>
143
153
  <span class="cline-any cline-yes">2x</span>
144
- <span class="cline-any cline-yes">2x</span>
154
+ <span class="cline-any cline-neutral">&nbsp;</span>
145
155
  <span class="cline-any cline-neutral">&nbsp;</span>
146
156
  <span class="cline-any cline-neutral">&nbsp;</span>
147
157
  <span class="cline-any cline-neutral">&nbsp;</span>
148
158
  <span class="cline-any cline-neutral">&nbsp;</span>
149
159
  <span class="cline-any cline-neutral">&nbsp;</span>
150
160
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { promises as fs } from 'fs';
151
- import { path } from '@biorate/tools';
152
- import { Migration } from './migration';
153
- import { ISequelizeConnector, ISequelizeConfig, DataType } from '@biorate/sequelize';
154
161
  import { inject, Types } from '@biorate/inversion';
162
+ import { Migration } from './migration';
163
+ import {
164
+ ISequelizeConnector,
165
+ ISequelizeConfig,
166
+ ISequelizeConnection,
167
+ DataType,
168
+ } from '@biorate/sequelize';
155
169
  /**
156
170
  * @description Sequelize migration class
157
171
  */
158
172
  export class Sequelize extends Migration {
159
- @inject(Types.Sequelize) protected sequelize: ISequelizeConnector;
173
+ @inject(Types.Sequelize) protected connector: ISequelizeConnector;
160
174
  /**
161
175
  * @description Sequelize process method realization
162
176
  */
163
177
  protected async process() {
164
- for (const config of this.config.get&lt;ISequelizeConfig[]&gt;('Sequelize', [])) {
165
- const paths = await this.scan(config.name);
166
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!paths.length) <span class="cstat-no" title="statement not covered" >continue;</span>
167
- const connection = this.sequelize.connection(config.name);
168
- const model = connection.define(
169
- this.config.get&lt;string&gt;('migrations.tableName', 'migrations'),
170
- {
171
- name: {
172
- type: DataType.CHAR,
173
- primaryKey: true,
178
+ await this.forEach&lt;ISequelizeConfig, ISequelizeConnection&gt;(
179
+ 'Sequelize',
180
+ async (config, connection, paths) =&gt; {
181
+ const model = connection.define(
182
+ this.config.get&lt;string&gt;('migrations.tableName', 'migrations'),
183
+ {
184
+ name: {
185
+ type: DataType.CHAR,
186
+ primaryKey: true,
187
+ },
174
188
  },
175
- },
176
- { timestamps: false },
177
- );
178
- await model.sync({});
179
- for (const p of paths) {
180
- const name = path.basename(p);
181
- await connection.transaction(async () =&gt; {
182
- const item = await model.findOne({ where: { name } });
183
- <span class="missing-if-branch" title="if path not taken" >I</span>if (item) <span class="cstat-no" title="statement not covered" >return;</span>
184
- await connection.query(await fs.readFile(p, 'utf8'));
185
- await model.create({ name });
186
- this.log(config.name, name);
187
- });
188
- }
189
- }
189
+ { timestamps: false },
190
+ );
191
+ await model.sync({});
192
+ await this.forEachPath(
193
+ paths,
194
+ async (file, name) =&gt;
195
+ await connection.transaction(async () =&gt; {
196
+ const item = await model.findOne({ where: { name } });
197
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (item) <span class="cstat-no" title="statement not covered" >return;</span>
198
+ await connection.query(await fs.readFile(file, 'utf8'));
199
+ await model.create({ name });
200
+ this.log(config.name, name);
201
+ }),
202
+ );
203
+ },
204
+ );
190
205
  }
191
206
  }
192
207
  &nbsp;</pre></td></tr></table></pre>
@@ -196,7 +211,7 @@ export class Sequelize extends Migration {
196
211
  <div class='footer quiet pad2 space-top1 center small'>
197
212
  Code coverage generated by
198
213
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
199
- at Tue Jun 21 2022 12:57:44 GMT+0300 (Москва, стандартное время)
214
+ at Mon Aug 15 2022 14:09:53 GMT+0300 (Москва, стандартное время)
200
215
  </div>
201
216
  <script src="../../prettify.js"></script>
202
217
  <script>