velocious 1.0.100 → 1.0.102

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 (38) hide show
  1. package/package.json +1 -1
  2. package/spec/dummy/src/model-bases/authentication-token.js +3 -4
  3. package/spec/dummy/src/model-bases/project-detail.js +3 -4
  4. package/spec/dummy/src/model-bases/project-translation.js +3 -4
  5. package/spec/dummy/src/model-bases/project.js +10 -16
  6. package/spec/dummy/src/model-bases/task.js +3 -4
  7. package/spec/dummy/src/model-bases/user.js +7 -12
  8. package/src/cli/base-command.js +1 -1
  9. package/src/configuration-types.js +7 -1
  10. package/src/configuration.js +2 -2
  11. package/src/database/drivers/base-column.js +8 -7
  12. package/src/database/drivers/base-columns-index.js +1 -1
  13. package/src/database/drivers/base-foreign-key.js +5 -5
  14. package/src/database/drivers/base-table.js +4 -4
  15. package/src/database/drivers/base.js +45 -23
  16. package/src/database/pool/base.js +5 -5
  17. package/src/database/query/base.js +1 -1
  18. package/src/database/query/from-base.js +2 -4
  19. package/src/database/query/index.js +31 -18
  20. package/src/database/query/order-base.js +1 -1
  21. package/src/database/query/select-base.js +1 -1
  22. package/src/database/query/where-base.js +1 -1
  23. package/src/database/record/index.js +444 -172
  24. package/src/database/record/instance-relationships/base.js +41 -44
  25. package/src/database/record/instance-relationships/belongs-to.js +15 -3
  26. package/src/database/record/instance-relationships/has-many.js +49 -28
  27. package/src/database/record/instance-relationships/has-one.js +22 -7
  28. package/src/database/record/relationships/base.js +35 -45
  29. package/src/database/record/relationships/belongs-to.js +13 -3
  30. package/src/database/record/relationships/has-many.js +8 -2
  31. package/src/database/record/relationships/has-one.js +8 -2
  32. package/src/database/record/validators/base.js +15 -3
  33. package/src/database/record/validators/presence.js +7 -0
  34. package/src/environment-handlers/base.js +7 -7
  35. package/src/environment-handlers/node/cli/commands/generate/base-models.js +5 -8
  36. package/src/environment-handlers/node.js +1 -2
  37. package/src/initializer.js +1 -1
  38. package/src/routes/base-route.js +1 -1
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "velocious": "bin/velocious.js"
4
4
  },
5
5
  "name": "velocious",
6
- "version": "1.0.100",
6
+ "version": "1.0.102",
7
7
  "main": "index.js",
8
8
  "scripts": {
9
9
  "lint": "eslint",
@@ -82,26 +82,25 @@ export default class AuthenticationTokenBase extends Record {
82
82
  hasUpdatedAt() { return this._hasAttribute(this.updatedAt()) }
83
83
 
84
84
  /**
85
- * @interface
86
85
  * @returns {import("../models/user.js").default}
87
86
  */
88
87
  user() { return this.getRelationshipByName("user").loaded() }
89
88
 
90
89
  /**
91
- * @interface
90
+ * @abstract
92
91
  * @param {Record<string, any>} attributes
93
92
  * @returns {import("../models/user.js").default}
94
93
  */
95
94
  buildUser(attributes) { throw new Error("Not implemented") } // eslint-disable-line no-unused-vars
96
95
 
97
96
  /**
98
- * @interface
97
+ * @abstract
99
98
  * @returns {Promise<void>}
100
99
  */
101
100
  loadUser() { throw new Error("Not implemented") }
102
101
 
103
102
  /**
104
- * @interface
103
+ * @abstract
105
104
  * @param {import("../models/user.js").default} newModel
106
105
  * @returns {void}
107
106
  */
@@ -75,26 +75,25 @@ export default class ProjectDetailBase extends Record {
75
75
  hasUpdatedAt() { return this._hasAttribute(this.updatedAt()) }
76
76
 
77
77
  /**
78
- * @interface
79
78
  * @returns {import("../models/project.js").default}
80
79
  */
81
80
  project() { return this.getRelationshipByName("project").loaded() }
82
81
 
83
82
  /**
84
- * @interface
83
+ * @abstract
85
84
  * @param {Record<string, any>} attributes
86
85
  * @returns {import("../models/project.js").default}
87
86
  */
88
87
  buildProject(attributes) { throw new Error("Not implemented") } // eslint-disable-line no-unused-vars
89
88
 
90
89
  /**
91
- * @interface
90
+ * @abstract
92
91
  * @returns {Promise<void>}
93
92
  */
94
93
  loadProject() { throw new Error("Not implemented") }
95
94
 
96
95
  /**
97
- * @interface
96
+ * @abstract
98
97
  * @param {import("../models/project.js").default} newModel
99
98
  * @returns {void}
100
99
  */
@@ -98,26 +98,25 @@ export default class ProjectTranslationBase extends Record {
98
98
  hasUpdatedAt() { return this._hasAttribute(this.updatedAt()) }
99
99
 
100
100
  /**
101
- * @interface
102
101
  * @returns {import("../models/project.js").default}
103
102
  */
104
103
  project() { return this.getRelationshipByName("project").loaded() }
105
104
 
106
105
  /**
107
- * @interface
106
+ * @abstract
108
107
  * @param {Record<string, any>} attributes
109
108
  * @returns {import("../models/project.js").default}
110
109
  */
111
110
  buildProject(attributes) { throw new Error("Not implemented") } // eslint-disable-line no-unused-vars
112
111
 
113
112
  /**
114
- * @interface
113
+ * @abstract
115
114
  * @returns {Promise<void>}
116
115
  */
117
116
  loadProject() { throw new Error("Not implemented") }
118
117
 
119
118
  /**
120
- * @interface
119
+ * @abstract
121
120
  * @param {import("../models/project.js").default} newModel
122
121
  * @returns {void}
123
122
  */
@@ -81,102 +81,96 @@ export default class ProjectBase extends Record {
81
81
  nameEn() { return this._getTranslatedAttributeWithFallback("name", "en") }
82
82
 
83
83
  /**
84
- * @interface
85
84
  * @returns {import("../models/user.js").default}
86
85
  */
87
86
  creatingUser() { return this.getRelationshipByName("creatingUser").loaded() }
88
87
 
89
88
  /**
90
- * @interface
89
+ * @abstract
91
90
  * @param {Record<string, any>} attributes
92
91
  * @returns {import("../models/user.js").default}
93
92
  */
94
93
  buildCreatingUser(attributes) { throw new Error("Not implemented") } // eslint-disable-line no-unused-vars
95
94
 
96
95
  /**
97
- * @interface
96
+ * @abstract
98
97
  * @returns {Promise<void>}
99
98
  */
100
99
  loadCreatingUser() { throw new Error("Not implemented") }
101
100
 
102
101
  /**
103
- * @interface
102
+ * @abstract
104
103
  * @param {import("../models/user.js").default} newModel
105
104
  * @returns {void}
106
105
  */
107
106
  setCreatingUser(newModel) { throw new Error("Not implemented") } // eslint-disable-line no-unused-vars
108
107
 
109
108
  /**
110
- * @interface
111
109
  * @returns {import("velocious/src/database/query/index.js").default<import("../models/task.js").default>}
112
110
  */
113
111
  tasks() { return this.getRelationshipByName("tasks") }
114
112
 
115
113
  /**
116
- * @interface
117
114
  * @returns {Array<import("../models/task.js").default>}
118
115
  */
119
116
  tasksLoaded() { return this.getRelationshipByName("tasks").loaded() }
120
117
 
121
118
  /**
122
- * @interface
119
+ * @abstract
123
120
  * @returns {Promise<void>}
124
121
  */
125
122
  loadTasks() { throw new Error("Not implemented") }
126
123
 
127
124
  /**
128
- * @interface
125
+ * @abstract
129
126
  * @param {Array<import("../models/task.js").default>} newModels
130
127
  * @returns {void}
131
128
  */
132
129
  setTasks(newModels) { throw new Error("Not implemented") } // eslint-disable-line no-unused-vars
133
130
 
134
131
  /**
135
- * @interface
136
132
  * @returns {import("../models/project-detail.js").default}
137
133
  */
138
134
  projectDetail() { return this.getRelationshipByName("projectDetail").loaded() }
139
135
 
140
136
  /**
141
- * @interface
137
+ * @abstract
142
138
  * @param {Record<string, any>} attributes
143
139
  * @returns {import("../models/project-detail.js").default}
144
140
  */
145
141
  buildProjectDetail(attributes) { throw new Error("Not implemented") } // eslint-disable-line no-unused-vars
146
142
 
147
143
  /**
148
- * @interface
144
+ * @abstract
149
145
  * @returns {Promise<void>}
150
146
  */
151
147
  loadProjectDetail() { throw new Error("Not implemented") }
152
148
 
153
149
  /**
154
- * @interface
150
+ * @abstract
155
151
  * @param {import("../models/project-detail.js").default} newModel
156
152
  * @returns {void}
157
153
  */
158
154
  setProjectDetail(newModel) { throw new Error("Not implemented") } // eslint-disable-line no-unused-vars
159
155
 
160
156
  /**
161
- * @interface
162
157
  * @returns {import("velocious/src/database/query/index.js").default<import("velocious/src/database/record/index.js").default>}
163
158
  */
164
159
  translations() { return this.getRelationshipByName("translations") }
165
160
 
166
161
  /**
167
- * @interface
168
162
  * @returns {Array<import("velocious/src/database/record/index.js").default>}
169
163
  */
170
164
  translationsLoaded() { return this.getRelationshipByName("translations").loaded() }
171
165
 
172
166
  /**
173
- * @interface
167
+ * @abstract
174
168
  * @returns {Promise<void>}
175
169
  */
176
170
  loadTranslations() { throw new Error("Not implemented") }
177
171
 
178
172
  /**
179
- * @interface
173
+ * @abstract
180
174
  * @param {Array<import("velocious/src/database/record/index.js").default>} newModels
181
175
  * @returns {void}
182
176
  */
@@ -91,26 +91,25 @@ export default class TaskBase extends Record {
91
91
  hasUpdatedAt() { return this._hasAttribute(this.updatedAt()) }
92
92
 
93
93
  /**
94
- * @interface
95
94
  * @returns {import("../models/project.js").default}
96
95
  */
97
96
  project() { return this.getRelationshipByName("project").loaded() }
98
97
 
99
98
  /**
100
- * @interface
99
+ * @abstract
101
100
  * @param {Record<string, any>} attributes
102
101
  * @returns {import("../models/project.js").default}
103
102
  */
104
103
  buildProject(attributes) { throw new Error("Not implemented") } // eslint-disable-line no-unused-vars
105
104
 
106
105
  /**
107
- * @interface
106
+ * @abstract
108
107
  * @returns {Promise<void>}
109
108
  */
110
109
  loadProject() { throw new Error("Not implemented") }
111
110
 
112
111
  /**
113
- * @interface
112
+ * @abstract
114
113
  * @param {import("../models/project.js").default} newModel
115
114
  * @returns {void}
116
115
  */
@@ -98,76 +98,71 @@ export default class UserBase extends Record {
98
98
  hasUpdatedAt() { return this._hasAttribute(this.updatedAt()) }
99
99
 
100
100
  /**
101
- * @interface
102
101
  * @returns {import("../models/project.js").default}
103
102
  */
104
103
  createdProject() { return this.getRelationshipByName("createdProject").loaded() }
105
104
 
106
105
  /**
107
- * @interface
106
+ * @abstract
108
107
  * @param {Record<string, any>} attributes
109
108
  * @returns {import("../models/project.js").default}
110
109
  */
111
110
  buildCreatedProject(attributes) { throw new Error("Not implemented") } // eslint-disable-line no-unused-vars
112
111
 
113
112
  /**
114
- * @interface
113
+ * @abstract
115
114
  * @returns {Promise<void>}
116
115
  */
117
116
  loadCreatedProject() { throw new Error("Not implemented") }
118
117
 
119
118
  /**
120
- * @interface
119
+ * @abstract
121
120
  * @param {import("../models/project.js").default} newModel
122
121
  * @returns {void}
123
122
  */
124
123
  setCreatedProject(newModel) { throw new Error("Not implemented") } // eslint-disable-line no-unused-vars
125
124
 
126
125
  /**
127
- * @interface
128
126
  * @returns {import("velocious/src/database/query/index.js").default<import("../models/authentication-token.js").default>}
129
127
  */
130
128
  authenticationTokens() { return this.getRelationshipByName("authenticationTokens") }
131
129
 
132
130
  /**
133
- * @interface
134
131
  * @returns {Array<import("../models/authentication-token.js").default>}
135
132
  */
136
133
  authenticationTokensLoaded() { return this.getRelationshipByName("authenticationTokens").loaded() }
137
134
 
138
135
  /**
139
- * @interface
136
+ * @abstract
140
137
  * @returns {Promise<void>}
141
138
  */
142
139
  loadAuthenticationTokens() { throw new Error("Not implemented") }
143
140
 
144
141
  /**
145
- * @interface
142
+ * @abstract
146
143
  * @param {Array<import("../models/authentication-token.js").default>} newModels
147
144
  * @returns {void}
148
145
  */
149
146
  setAuthenticationTokens(newModels) { throw new Error("Not implemented") } // eslint-disable-line no-unused-vars
150
147
 
151
148
  /**
152
- * @interface
153
149
  * @returns {import("velocious/src/database/query/index.js").default<import("../models/project.js").default>}
154
150
  */
155
151
  createdProjects() { return this.getRelationshipByName("createdProjects") }
156
152
 
157
153
  /**
158
- * @interface
159
154
  * @returns {Array<import("../models/project.js").default>}
160
155
  */
161
156
  createdProjectsLoaded() { return this.getRelationshipByName("createdProjects").loaded() }
162
157
 
163
158
  /**
164
- * @interface
159
+ * @abstract
165
160
  * @returns {Promise<void>}
166
161
  */
167
162
  loadCreatedProjects() { throw new Error("Not implemented") }
168
163
 
169
164
  /**
170
- * @interface
165
+ * @abstract
171
166
  * @param {Array<import("../models/project.js").default>} newModels
172
167
  * @returns {void}
173
168
  */
@@ -20,7 +20,7 @@ export default class VelociousCliBaseCommand {
20
20
  directory() { return this.getConfiguration().getDirectory() }
21
21
 
22
22
  /**
23
- * @interface
23
+ * @abstract
24
24
  * @returns {Promise<void>}
25
25
  */
26
26
  execute() {
@@ -21,9 +21,15 @@
21
21
  * @property {string} [host]
22
22
  * @property {boolean} [migrations]
23
23
  * @property {string} [password]
24
+ * @property {object} [record]
25
+ * @property {boolean} [record.transactions]
24
26
  * @property {string} [username]
25
27
  */
26
28
 
29
+ /**
30
+ * @typedef {Record<string, string[]>} LocaleFallbacksType
31
+ */
32
+
27
33
  /**
28
34
  * @typedef {object} ConfigurationArgsType
29
35
  * @property {object} args
@@ -37,7 +43,7 @@
37
43
  * @property {InitializersType} initializers
38
44
  * @property {string | function() : string} locale
39
45
  * @property {string[]} locales
40
- * @property {object} localeFallbacks
46
+ * @property {LocaleFallbacksType} localeFallbacks
41
47
  * @property {string} testing
42
48
  */
43
49
 
@@ -162,12 +162,12 @@ export default class VelociousConfiguration {
162
162
  }
163
163
 
164
164
  /**
165
- * @returns {object}
165
+ * @returns {import("./configuration-types.js").LocaleFallbacksType | undefined}
166
166
  */
167
167
  getLocaleFallbacks() { return this.localeFallbacks }
168
168
 
169
169
  /**
170
- * @param {object} newLocaleFallbacks
170
+ * @param {import("./configuration-types.js").LocaleFallbacksType} newLocaleFallbacks
171
171
  * @returns {void}
172
172
  */
173
173
  setLocaleFallbacks(newLocaleFallbacks) { this.localeFallbacks = newLocaleFallbacks }
@@ -8,7 +8,7 @@ export default class VelociousDatabaseDriversBaseColumn {
8
8
  table = undefined
9
9
 
10
10
  /**
11
- * @interface
11
+ * @abstract
12
12
  * @returns {boolean}
13
13
  */
14
14
  getAutoIncrement() {
@@ -16,6 +16,7 @@ export default class VelociousDatabaseDriversBaseColumn {
16
16
  }
17
17
 
18
18
  /**
19
+ * @abstract
19
20
  * @returns {any}
20
21
  */
21
22
  getDefault() {
@@ -60,7 +61,7 @@ export default class VelociousDatabaseDriversBaseColumn {
60
61
  }
61
62
 
62
63
  /**
63
- * @interface
64
+ * @abstract
64
65
  * @returns {Promise<Array<import("./base-columns-index.js").default>>}
65
66
  */
66
67
  getIndexes() {
@@ -68,7 +69,7 @@ export default class VelociousDatabaseDriversBaseColumn {
68
69
  }
69
70
 
70
71
  /**
71
- * @interface
72
+ * @abstract
72
73
  * @returns {number}
73
74
  */
74
75
  getMaxLength() {
@@ -76,7 +77,7 @@ export default class VelociousDatabaseDriversBaseColumn {
76
77
  }
77
78
 
78
79
  /**
79
- * @interface
80
+ * @abstract
80
81
  * @returns {string}
81
82
  */
82
83
  getName() {
@@ -84,7 +85,7 @@ export default class VelociousDatabaseDriversBaseColumn {
84
85
  }
85
86
 
86
87
  /**
87
- * @interface
88
+ * @abstract
88
89
  * @returns {boolean}
89
90
  */
90
91
  getNull() {
@@ -99,7 +100,7 @@ export default class VelociousDatabaseDriversBaseColumn {
99
100
  }
100
101
 
101
102
  /**
102
- * @interface
103
+ * @abstract
103
104
  * @returns {boolean}
104
105
  */
105
106
  getPrimaryKey() {
@@ -131,7 +132,7 @@ export default class VelociousDatabaseDriversBaseColumn {
131
132
  }
132
133
 
133
134
  /**
134
- * @interface
135
+ * @abstract
135
136
  * @returns {string}
136
137
  */
137
138
  getType() {
@@ -43,7 +43,7 @@ export default class VelociousDatabaseDriversBaseColumnsIndex {
43
43
  }
44
44
 
45
45
  /**
46
- * @interface
46
+ * @abstract
47
47
  * @returns {import("../table-data/table-index.js").default}
48
48
  */
49
49
  getTableDataIndex() {
@@ -14,7 +14,7 @@ export default class VelociousDatabaseDriversBaseForeignKey {
14
14
  }
15
15
 
16
16
  /**
17
- * @interface
17
+ * @abstract
18
18
  * @returns {string}
19
19
  */
20
20
  getColumnName() {
@@ -29,7 +29,7 @@ export default class VelociousDatabaseDriversBaseForeignKey {
29
29
  }
30
30
 
31
31
  /**
32
- * @interface
32
+ * @abstract
33
33
  * @returns {string}
34
34
  */
35
35
  getName() {
@@ -44,7 +44,7 @@ export default class VelociousDatabaseDriversBaseForeignKey {
44
44
  }
45
45
 
46
46
  /**
47
- * @interface
47
+ * @abstract
48
48
  * @returns {string}
49
49
  */
50
50
  getReferencedColumnName() {
@@ -52,7 +52,7 @@ export default class VelociousDatabaseDriversBaseForeignKey {
52
52
  }
53
53
 
54
54
  /**
55
- * @interface
55
+ * @abstract
56
56
  * @returns {string}
57
57
  */
58
58
  getReferencedTableName() {
@@ -69,7 +69,7 @@ export default class VelociousDatabaseDriversBaseForeignKey {
69
69
  }
70
70
 
71
71
  /**
72
- * @interface
72
+ * @abstract
73
73
  * @returns {string}
74
74
  */
75
75
  getTableName() {
@@ -19,7 +19,7 @@ export default class VelociousDatabaseDriversBaseTable {
19
19
  }
20
20
 
21
21
  /**
22
- * @interface
22
+ * @abstract
23
23
  * @returns {Promise<Array<import("./base-column.js").default>>}
24
24
  */
25
25
  getColumns() {
@@ -36,7 +36,7 @@ export default class VelociousDatabaseDriversBaseTable {
36
36
  }
37
37
 
38
38
  /**
39
- * @interface
39
+ * @abstract
40
40
  * @returns {Promise<import("./base-foreign-key.js").default[]>}
41
41
  */
42
42
  getForeignKeys() {
@@ -44,7 +44,7 @@ export default class VelociousDatabaseDriversBaseTable {
44
44
  }
45
45
 
46
46
  /**
47
- * @interface
47
+ * @abstract
48
48
  * @returns {Promise<import("./base-columns-index.js").default[]>}
49
49
  */
50
50
  getIndexes() {
@@ -52,7 +52,7 @@ export default class VelociousDatabaseDriversBaseTable {
52
52
  }
53
53
 
54
54
  /**
55
- * @interface
55
+ * @abstract
56
56
  * @returns {string}
57
57
  */
58
58
  getName() {