@furystack/sequelize-store 1.1.1 → 2.0.0
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.
- package/dist/sequelize-store.js +3 -2
- package/dist/sequelize-store.js.map +1 -1
- package/dist/sequelize-store.spec.js +13 -9
- package/dist/sequelize-store.spec.js.map +1 -1
- package/dist/store-manager-helpers.js +2 -1
- package/dist/store-manager-helpers.js.map +1 -1
- package/package.json +1 -1
- package/src/sequelize-store.spec.ts +13 -10
- package/src/sequelize-store.ts +20 -10
- package/src/store-manager-helpers.ts +13 -5
- package/types/sequelize-store.d.ts +11 -6
- package/types/sequelize-store.d.ts.map +1 -1
- package/types/store-manager-helpers.d.ts +9 -5
- package/types/store-manager-helpers.d.ts.map +1 -1
package/dist/sequelize-store.js
CHANGED
|
@@ -14,6 +14,7 @@ class SequelizeStore {
|
|
|
14
14
|
this.initLock = new semaphore_async_await_1.default(1);
|
|
15
15
|
this.primaryKey = options.primaryKey;
|
|
16
16
|
this.model = options.model;
|
|
17
|
+
this.sequelizeModel = options.sequelizeModel;
|
|
17
18
|
}
|
|
18
19
|
async getModel() {
|
|
19
20
|
if (this.initializedModel) {
|
|
@@ -29,8 +30,8 @@ class SequelizeStore {
|
|
|
29
30
|
await this.options.initModel(client);
|
|
30
31
|
await client.sync();
|
|
31
32
|
}
|
|
32
|
-
const model = client.model(this.options.
|
|
33
|
-
this.initializedModel =
|
|
33
|
+
const model = client.model(this.options.sequelizeModel.name);
|
|
34
|
+
this.initializedModel = this.sequelizeModel;
|
|
34
35
|
return model;
|
|
35
36
|
}
|
|
36
37
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequelize-store.js","sourceRoot":"","sources":["../src/sequelize-store.ts"],"names":[],"mappings":";;;;;;AAUA,kFAA6C;
|
|
1
|
+
{"version":3,"file":"sequelize-store.js","sourceRoot":"","sources":["../src/sequelize-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const core_1 = require("@furystack/core");
|
|
4
|
+
const core_2 = require("@furystack/core");
|
|
4
5
|
const store_manager_helpers_1 = require("./store-manager-helpers");
|
|
5
6
|
const sequelize_1 = require("sequelize");
|
|
6
7
|
const utils_1 = require("@furystack/utils");
|
|
@@ -15,13 +16,14 @@ jest.mock('uuid', () => {
|
|
|
15
16
|
class TestSequelizeClass extends sequelize_1.Model {
|
|
16
17
|
}
|
|
17
18
|
describe('Sequelize Store', () => {
|
|
18
|
-
(0,
|
|
19
|
+
(0, core_2.createStoreTest)({
|
|
19
20
|
typeName: 'sequelize-store',
|
|
20
21
|
skipRegexTests: true,
|
|
21
22
|
createStore: (i) => {
|
|
22
23
|
(0, store_manager_helpers_1.useSequelize)({
|
|
23
24
|
injector: i,
|
|
24
|
-
model:
|
|
25
|
+
model: core_1.TestClass,
|
|
26
|
+
sequelizeModel: TestSequelizeClass,
|
|
25
27
|
primaryKey: 'id',
|
|
26
28
|
options: {
|
|
27
29
|
dialect: 'sqlite',
|
|
@@ -56,7 +58,7 @@ describe('Sequelize Store', () => {
|
|
|
56
58
|
}, { sequelize, timestamps: false });
|
|
57
59
|
},
|
|
58
60
|
});
|
|
59
|
-
const store = i.getInstance(
|
|
61
|
+
const store = i.getInstance(core_2.StoreManager).getStoreFor(core_1.TestClass, 'id');
|
|
60
62
|
return store;
|
|
61
63
|
},
|
|
62
64
|
});
|
|
@@ -77,7 +79,8 @@ describe('Sequelize Store', () => {
|
|
|
77
79
|
await (0, utils_1.usingAsync)(new inject_1.Injector(), async (i) => {
|
|
78
80
|
(0, store_manager_helpers_1.useSequelize)({
|
|
79
81
|
injector: i,
|
|
80
|
-
model:
|
|
82
|
+
model: core_1.TestClass,
|
|
83
|
+
sequelizeModel: TestSequelizeClass,
|
|
81
84
|
primaryKey: 'id',
|
|
82
85
|
options: {
|
|
83
86
|
dialect: 'sqlite',
|
|
@@ -114,8 +117,8 @@ describe('Sequelize Store', () => {
|
|
|
114
117
|
},
|
|
115
118
|
});
|
|
116
119
|
const store = i
|
|
117
|
-
.getInstance(
|
|
118
|
-
.getStoreFor(
|
|
120
|
+
.getInstance(core_2.StoreManager)
|
|
121
|
+
.getStoreFor(core_1.TestClass, 'id');
|
|
119
122
|
const model1Promise = store.getModel();
|
|
120
123
|
const model2 = await store.getModel();
|
|
121
124
|
const model1 = await model1Promise;
|
|
@@ -128,7 +131,8 @@ describe('Sequelize Store', () => {
|
|
|
128
131
|
await (0, utils_1.usingAsync)(new inject_1.Injector(), async (i) => {
|
|
129
132
|
(0, store_manager_helpers_1.useSequelize)({
|
|
130
133
|
injector: i,
|
|
131
|
-
model:
|
|
134
|
+
model: core_1.TestClass,
|
|
135
|
+
sequelizeModel: TestSequelizeClass,
|
|
132
136
|
primaryKey: 'id',
|
|
133
137
|
options: {
|
|
134
138
|
dialect: 'sqlite',
|
|
@@ -140,8 +144,8 @@ describe('Sequelize Store', () => {
|
|
|
140
144
|
},
|
|
141
145
|
});
|
|
142
146
|
const store = i
|
|
143
|
-
.getInstance(
|
|
144
|
-
.getStoreFor(
|
|
147
|
+
.getInstance(core_2.StoreManager)
|
|
148
|
+
.getStoreFor(core_1.TestClass, 'id');
|
|
145
149
|
expect.assertions(1);
|
|
146
150
|
try {
|
|
147
151
|
await store.getModel();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequelize-store.spec.js","sourceRoot":"","sources":["../src/sequelize-store.spec.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"sequelize-store.spec.js","sourceRoot":"","sources":["../src/sequelize-store.spec.ts"],"names":[],"mappings":";;AAAA,0CAA2C;AAC3C,0CAA+D;AAC/D,mEAAsD;AACtD,yCAA4C;AAC5C,4CAAyD;AACzD,8CAA4C;AAC5C,yEAAmE;AAGnE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;IACrB,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;QACzB,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;KAC1B,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,kBAAmB,SAAQ,iBAA2B;CAQ3D;AAED,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAA,sBAAe,EAAC;QACd,QAAQ,EAAE,iBAAiB;QAC3B,cAAc,EAAE,IAAI;QACpB,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;YACjB,IAAA,oCAAY,EAAC;gBACX,QAAQ,EAAE,CAAC;gBACX,KAAK,EAAE,gBAAS;gBAChB,cAAc,EAAE,kBAAkB;gBAClC,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE;oBACP,OAAO,EAAE,QAAQ;oBACjB,OAAO,EAAE,UAAU;oBACnB,OAAO,EAAE,KAAK;iBACf;gBACD,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;oBAC7B,kBAAkB,CAAC,IAAI,CACrB;wBACE,EAAE,EAAE;4BACF,IAAI,EAAE,qBAAS,CAAC,OAAO;4BACvB,aAAa,EAAE,IAAI;4BACnB,UAAU,EAAE,IAAI;yBACjB;wBACD,YAAY,EAAE;4BACZ,IAAI,EAAE,qBAAS,CAAC,MAAM;yBACvB;wBACD,YAAY,EAAE;4BACZ,IAAI,EAAE,qBAAS,CAAC,MAAM;yBACvB;wBACD,YAAY,EAAE;4BACZ,IAAI,EAAE,qBAAS,CAAC,OAAO;yBACxB;wBACD,YAAY,EAAE;4BACZ,IAAI,EAAE,qBAAS,CAAC,OAAO;yBACxB;wBACD,YAAY,EAAE;4BACZ,IAAI,EAAE,qBAAS,CAAC,OAAO;yBACxB;wBACD,SAAS,EAAE;4BACT,IAAI,EAAE,qBAAS,CAAC,IAAI;yBACrB;qBACF,EACD,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,CACjC,CAAA;gBACH,CAAC;aACF,CAAC,CAAA;YACF,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,CAAC,mBAAY,CAAC,CAAC,WAAW,CAAC,gBAAS,EAAE,IAAI,CAAC,CAAA;YACtE,OAAO,KAAK,CAAA;QACd,CAAC;KACF,CAAC,CAAA;IAEF,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,IAAA,kBAAU,EAAC,IAAI,iBAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,iDAAsB,CAAC,CAAA;YACrD,MAAM,QAAQ,GAAG;gBACf,OAAO,EAAE,QAAQ;gBACjB,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,KAAK;aACN,CAAA;YACV,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;YACpD,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;YACpD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/B,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,IAAA,kBAAU,EAAC,IAAI,iBAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,IAAA,oCAAY,EAAC;gBACX,QAAQ,EAAE,CAAC;gBACX,KAAK,EAAE,gBAAS;gBAChB,cAAc,EAAE,kBAAkB;gBAClC,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE;oBACP,OAAO,EAAE,QAAQ;oBACjB,OAAO,EAAE,UAAU;oBACnB,OAAO,EAAE,KAAK;iBACf;gBACD,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;oBAC7B,MAAM,IAAA,kBAAU,EAAC,GAAG,CAAC,CAAA;oBACrB,kBAAkB,CAAC,IAAI,CACrB;wBACE,EAAE,EAAE;4BACF,IAAI,EAAE,qBAAS,CAAC,OAAO;4BACvB,aAAa,EAAE,IAAI;4BACnB,UAAU,EAAE,IAAI;yBACjB;wBACD,YAAY,EAAE;4BACZ,IAAI,EAAE,qBAAS,CAAC,MAAM;yBACvB;wBACD,YAAY,EAAE;4BACZ,IAAI,EAAE,qBAAS,CAAC,MAAM;yBACvB;wBACD,YAAY,EAAE;4BACZ,IAAI,EAAE,qBAAS,CAAC,OAAO;yBACxB;wBACD,YAAY,EAAE;4BACZ,IAAI,EAAE,qBAAS,CAAC,OAAO;yBACxB;wBACD,YAAY,EAAE;4BACZ,IAAI,EAAE,qBAAS,CAAC,OAAO;yBACxB;wBACD,SAAS,EAAE;4BACT,IAAI,EAAE,qBAAS,CAAC,IAAI;yBACrB;qBACF,EACD,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,CACjC,CAAA;gBACH,CAAC;aACF,CAAC,CAAA;YACF,MAAM,KAAK,GAAwD,CAAC;iBACjE,WAAW,CAAC,mBAAY,CAAC;iBACzB,WAAW,CAAC,gBAAS,EAAE,IAAI,CAAC,CAAA;YAE/B,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;YACtC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAA;YAErC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAA;YAElC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC3B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAA;YACrC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,IAAA,kBAAU,EAAC,IAAI,iBAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,IAAA,oCAAY,EAAC;gBACX,QAAQ,EAAE,CAAC;gBACX,KAAK,EAAE,gBAAS;gBAChB,cAAc,EAAE,kBAAkB;gBAClC,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE;oBACP,OAAO,EAAE,QAAQ;oBACjB,OAAO,EAAE,UAAU;oBACnB,OAAO,EAAE,KAAK;iBACf;gBACD,SAAS,EAAE,KAAK,IAAI,EAAE;oBACpB,4BAA4B;gBAC9B,CAAC;aACF,CAAC,CAAA;YACF,MAAM,KAAK,GAAwD,CAAC;iBACjE,WAAW,CAAC,mBAAY,CAAC;iBACzB,WAAW,CAAC,gBAAS,EAAE,IAAI,CAAC,CAAA;YAE/B,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;YACpB,IAAI;gBACF,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAA;aACvB;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAA,CAAC,8BAA8B;aAChH;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -4,13 +4,14 @@ exports.useSequelize = void 0;
|
|
|
4
4
|
const core_1 = require("@furystack/core");
|
|
5
5
|
const sequelize_client_factory_1 = require("./sequelize-client-factory");
|
|
6
6
|
const sequelize_store_1 = require("./sequelize-store");
|
|
7
|
-
const useSequelize = function ({ injector, model, primaryKey, options, initModel, }) {
|
|
7
|
+
const useSequelize = function ({ injector, model, sequelizeModel, primaryKey, options, initModel, }) {
|
|
8
8
|
const clientFactory = injector.getInstance(sequelize_client_factory_1.SequelizeClientFactory);
|
|
9
9
|
const store = new sequelize_store_1.SequelizeStore({
|
|
10
10
|
model,
|
|
11
11
|
primaryKey,
|
|
12
12
|
getSequelizeClient: () => clientFactory.getSequelizeClient(options),
|
|
13
13
|
initModel,
|
|
14
|
+
sequelizeModel,
|
|
14
15
|
});
|
|
15
16
|
(0, core_1.addStore)(injector, store);
|
|
16
17
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-manager-helpers.js","sourceRoot":"","sources":["../src/store-manager-helpers.ts"],"names":[],"mappings":";;;AAAA,0CAA0C;AAG1C,yEAAmE;AACnE,uDAAkD;AAE3C,MAAM,YAAY,GAAG,
|
|
1
|
+
{"version":3,"file":"store-manager-helpers.js","sourceRoot":"","sources":["../src/store-manager-helpers.ts"],"names":[],"mappings":";;;AAAA,0CAA0C;AAG1C,yEAAmE;AACnE,uDAAkD;AAE3C,MAAM,YAAY,GAAG,UAAkF,EAC5G,QAAQ,EACR,KAAK,EACL,cAAc,EACd,UAAU,EACV,OAAO,EACP,SAAS,GA0BV;IACC,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC,iDAAsB,CAAC,CAAA;IAClE,MAAM,KAAK,GAAG,IAAI,gCAAc,CAAC;QAC/B,KAAK;QACL,UAAU;QACV,kBAAkB,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACnE,SAAS;QACT,cAAc;KACf,CAAC,CAAA;IACF,IAAA,eAAQ,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;AAC3B,CAAC,CAAA;AA1CY,QAAA,YAAY,gBA0CxB"}
|
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { TestClass } from '@furystack/core'
|
|
2
2
|
import { StoreManager, createStoreTest } from '@furystack/core'
|
|
3
3
|
import { useSequelize } from './store-manager-helpers'
|
|
4
4
|
import { DataTypes, Model } from 'sequelize'
|
|
@@ -14,7 +14,7 @@ jest.mock('uuid', () => {
|
|
|
14
14
|
}
|
|
15
15
|
})
|
|
16
16
|
|
|
17
|
-
class TestSequelizeClass extends Model implements TestClass {
|
|
17
|
+
class TestSequelizeClass extends Model<TestClass, TestClass> implements TestClass {
|
|
18
18
|
id!: number
|
|
19
19
|
stringValue1!: string
|
|
20
20
|
stringValue2!: string
|
|
@@ -31,7 +31,8 @@ describe('Sequelize Store', () => {
|
|
|
31
31
|
createStore: (i) => {
|
|
32
32
|
useSequelize({
|
|
33
33
|
injector: i,
|
|
34
|
-
model:
|
|
34
|
+
model: TestClass,
|
|
35
|
+
sequelizeModel: TestSequelizeClass,
|
|
35
36
|
primaryKey: 'id',
|
|
36
37
|
options: {
|
|
37
38
|
dialect: 'sqlite',
|
|
@@ -69,7 +70,7 @@ describe('Sequelize Store', () => {
|
|
|
69
70
|
)
|
|
70
71
|
},
|
|
71
72
|
})
|
|
72
|
-
const store = i.getInstance(StoreManager).getStoreFor(
|
|
73
|
+
const store = i.getInstance(StoreManager).getStoreFor(TestClass, 'id')
|
|
73
74
|
return store
|
|
74
75
|
},
|
|
75
76
|
})
|
|
@@ -92,7 +93,8 @@ describe('Sequelize Store', () => {
|
|
|
92
93
|
await usingAsync(new Injector(), async (i) => {
|
|
93
94
|
useSequelize({
|
|
94
95
|
injector: i,
|
|
95
|
-
model:
|
|
96
|
+
model: TestClass,
|
|
97
|
+
sequelizeModel: TestSequelizeClass,
|
|
96
98
|
primaryKey: 'id',
|
|
97
99
|
options: {
|
|
98
100
|
dialect: 'sqlite',
|
|
@@ -131,9 +133,9 @@ describe('Sequelize Store', () => {
|
|
|
131
133
|
)
|
|
132
134
|
},
|
|
133
135
|
})
|
|
134
|
-
const store: SequelizeStore<TestSequelizeClass, 'id'> = i
|
|
136
|
+
const store: SequelizeStore<TestClass, TestSequelizeClass, 'id'> = i
|
|
135
137
|
.getInstance(StoreManager)
|
|
136
|
-
.getStoreFor(
|
|
138
|
+
.getStoreFor(TestClass, 'id')
|
|
137
139
|
|
|
138
140
|
const model1Promise = store.getModel()
|
|
139
141
|
const model2 = await store.getModel()
|
|
@@ -150,7 +152,8 @@ describe('Sequelize Store', () => {
|
|
|
150
152
|
await usingAsync(new Injector(), async (i) => {
|
|
151
153
|
useSequelize({
|
|
152
154
|
injector: i,
|
|
153
|
-
model:
|
|
155
|
+
model: TestClass,
|
|
156
|
+
sequelizeModel: TestSequelizeClass,
|
|
154
157
|
primaryKey: 'id',
|
|
155
158
|
options: {
|
|
156
159
|
dialect: 'sqlite',
|
|
@@ -161,9 +164,9 @@ describe('Sequelize Store', () => {
|
|
|
161
164
|
// won't init the model here
|
|
162
165
|
},
|
|
163
166
|
})
|
|
164
|
-
const store: SequelizeStore<TestSequelizeClass, 'id'> = i
|
|
167
|
+
const store: SequelizeStore<TestClass, TestSequelizeClass, 'id'> = i
|
|
165
168
|
.getInstance(StoreManager)
|
|
166
|
-
.getStoreFor(
|
|
169
|
+
.getStoreFor(TestClass, 'id')
|
|
167
170
|
|
|
168
171
|
expect.assertions(1)
|
|
169
172
|
try {
|
package/src/sequelize-store.ts
CHANGED
|
@@ -10,11 +10,16 @@ import type { Constructable } from '@furystack/inject'
|
|
|
10
10
|
import type { Sequelize, ModelStatic, Model, WhereOptions, Attributes } from 'sequelize'
|
|
11
11
|
import Semaphore from 'semaphore-async-await'
|
|
12
12
|
|
|
13
|
-
export interface SequelizeStoreSettings<T extends
|
|
13
|
+
export interface SequelizeStoreSettings<T extends object, M extends Model<T>, TPrimaryKey extends keyof T> {
|
|
14
|
+
/**
|
|
15
|
+
* The Model to use
|
|
16
|
+
*/
|
|
17
|
+
model: Constructable<T>
|
|
18
|
+
|
|
14
19
|
/**
|
|
15
20
|
* The Sequelize Model class
|
|
16
21
|
*/
|
|
17
|
-
|
|
22
|
+
sequelizeModel: ModelStatic<M>
|
|
18
23
|
/**
|
|
19
24
|
* The Primary key field
|
|
20
25
|
*/
|
|
@@ -32,16 +37,20 @@ export interface SequelizeStoreSettings<T extends Model, TPrimaryKey extends key
|
|
|
32
37
|
/**
|
|
33
38
|
* TypeORM Store implementation for FuryStack
|
|
34
39
|
*/
|
|
35
|
-
export class SequelizeStore<T extends
|
|
40
|
+
export class SequelizeStore<T extends object, M extends Model<T>, TPrimaryKey extends keyof T>
|
|
41
|
+
implements PhysicalStore<T, TPrimaryKey>
|
|
42
|
+
{
|
|
36
43
|
public readonly primaryKey: TPrimaryKey
|
|
37
44
|
|
|
38
|
-
public readonly model:
|
|
45
|
+
public readonly model: Constructable<T>
|
|
46
|
+
|
|
47
|
+
public readonly sequelizeModel: ModelStatic<M>
|
|
39
48
|
|
|
40
49
|
private initLock = new Semaphore(1)
|
|
41
50
|
|
|
42
|
-
private initializedModel?: ModelStatic<
|
|
51
|
+
private initializedModel?: ModelStatic<M>
|
|
43
52
|
|
|
44
|
-
public async getModel(): Promise<ModelStatic<
|
|
53
|
+
public async getModel(): Promise<ModelStatic<M>> {
|
|
45
54
|
if (this.initializedModel) {
|
|
46
55
|
return this.initializedModel
|
|
47
56
|
}
|
|
@@ -57,18 +66,19 @@ export class SequelizeStore<T extends Model, TPrimaryKey extends keyof T> implem
|
|
|
57
66
|
await client.sync()
|
|
58
67
|
}
|
|
59
68
|
|
|
60
|
-
const model = client.model(this.options.
|
|
69
|
+
const model = client.model(this.options.sequelizeModel.name) as ModelStatic<M>
|
|
61
70
|
|
|
62
|
-
this.initializedModel =
|
|
71
|
+
this.initializedModel = this.sequelizeModel
|
|
63
72
|
return model
|
|
64
73
|
} finally {
|
|
65
74
|
this.initLock.release()
|
|
66
75
|
}
|
|
67
76
|
}
|
|
68
77
|
|
|
69
|
-
constructor(private readonly options: SequelizeStoreSettings<T, TPrimaryKey>) {
|
|
78
|
+
constructor(private readonly options: SequelizeStoreSettings<T, M, TPrimaryKey>) {
|
|
70
79
|
this.primaryKey = options.primaryKey
|
|
71
80
|
this.model = options.model
|
|
81
|
+
this.sequelizeModel = options.sequelizeModel
|
|
72
82
|
}
|
|
73
83
|
public async add(...entries: Array<WithOptionalId<T, TPrimaryKey>>): Promise<CreateResult<T>> {
|
|
74
84
|
const model = await this.getModel()
|
|
@@ -105,7 +115,7 @@ export class SequelizeStore<T extends Model, TPrimaryKey extends keyof T> implem
|
|
|
105
115
|
|
|
106
116
|
const result = await model.findAll({
|
|
107
117
|
where: filter.filter as WhereOptions<T>,
|
|
108
|
-
attributes: filter.select as Attributes<
|
|
118
|
+
attributes: filter.select as Attributes<any>,
|
|
109
119
|
order,
|
|
110
120
|
limit: filter.top,
|
|
111
121
|
offset: filter.skip,
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { addStore } from '@furystack/core'
|
|
2
|
-
import type { Injector } from '@furystack/inject'
|
|
3
|
-
import type { Options,
|
|
2
|
+
import type { Constructable, Injector } from '@furystack/inject'
|
|
3
|
+
import type { Options, Sequelize, ModelStatic, Model } from 'sequelize'
|
|
4
4
|
import { SequelizeClientFactory } from './sequelize-client-factory'
|
|
5
5
|
import { SequelizeStore } from './sequelize-store'
|
|
6
6
|
|
|
7
|
-
export const useSequelize = function <T extends Model>({
|
|
7
|
+
export const useSequelize = function <T extends object, M extends ModelStatic<Model<T>>, Key extends keyof T>({
|
|
8
8
|
injector,
|
|
9
9
|
model,
|
|
10
|
+
sequelizeModel,
|
|
10
11
|
primaryKey,
|
|
11
12
|
options,
|
|
12
13
|
initModel,
|
|
@@ -15,11 +16,17 @@ export const useSequelize = function <T extends Model>({
|
|
|
15
16
|
/**
|
|
16
17
|
* The constructable model class
|
|
17
18
|
*/
|
|
18
|
-
model:
|
|
19
|
+
model: Constructable<T>
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The Sequelize Model class
|
|
23
|
+
*/
|
|
24
|
+
sequelizeModel: M
|
|
25
|
+
|
|
19
26
|
/**
|
|
20
27
|
* The name of the Primary Key property
|
|
21
28
|
*/
|
|
22
|
-
primaryKey:
|
|
29
|
+
primaryKey: Key
|
|
23
30
|
/**
|
|
24
31
|
* Optional options for the MongoDb Client
|
|
25
32
|
*/
|
|
@@ -36,6 +43,7 @@ export const useSequelize = function <T extends Model>({
|
|
|
36
43
|
primaryKey,
|
|
37
44
|
getSequelizeClient: () => clientFactory.getSequelizeClient(options),
|
|
38
45
|
initModel,
|
|
46
|
+
sequelizeModel,
|
|
39
47
|
})
|
|
40
48
|
addStore(injector, store)
|
|
41
49
|
}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import type { FindOptions, PhysicalStore, PartialResult, FilterType, WithOptionalId, CreateResult } from '@furystack/core';
|
|
2
2
|
import type { Constructable } from '@furystack/inject';
|
|
3
3
|
import type { Sequelize, ModelStatic, Model } from 'sequelize';
|
|
4
|
-
export interface SequelizeStoreSettings<T extends
|
|
4
|
+
export interface SequelizeStoreSettings<T extends object, M extends Model<T>, TPrimaryKey extends keyof T> {
|
|
5
|
+
/**
|
|
6
|
+
* The Model to use
|
|
7
|
+
*/
|
|
8
|
+
model: Constructable<T>;
|
|
5
9
|
/**
|
|
6
10
|
* The Sequelize Model class
|
|
7
11
|
*/
|
|
8
|
-
|
|
12
|
+
sequelizeModel: ModelStatic<M>;
|
|
9
13
|
/**
|
|
10
14
|
* The Primary key field
|
|
11
15
|
*/
|
|
@@ -22,14 +26,15 @@ export interface SequelizeStoreSettings<T extends Model, TPrimaryKey extends key
|
|
|
22
26
|
/**
|
|
23
27
|
* TypeORM Store implementation for FuryStack
|
|
24
28
|
*/
|
|
25
|
-
export declare class SequelizeStore<T extends
|
|
29
|
+
export declare class SequelizeStore<T extends object, M extends Model<T>, TPrimaryKey extends keyof T> implements PhysicalStore<T, TPrimaryKey> {
|
|
26
30
|
private readonly options;
|
|
27
31
|
readonly primaryKey: TPrimaryKey;
|
|
28
|
-
readonly model:
|
|
32
|
+
readonly model: Constructable<T>;
|
|
33
|
+
readonly sequelizeModel: ModelStatic<M>;
|
|
29
34
|
private initLock;
|
|
30
35
|
private initializedModel?;
|
|
31
|
-
getModel(): Promise<ModelStatic<
|
|
32
|
-
constructor(options: SequelizeStoreSettings<T, TPrimaryKey>);
|
|
36
|
+
getModel(): Promise<ModelStatic<M>>;
|
|
37
|
+
constructor(options: SequelizeStoreSettings<T, M, TPrimaryKey>);
|
|
33
38
|
add(...entries: Array<WithOptionalId<T, TPrimaryKey>>): Promise<CreateResult<T>>;
|
|
34
39
|
update(id: T[TPrimaryKey], data: Partial<T>): Promise<void>;
|
|
35
40
|
count(filter?: FilterType<T>): Promise<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequelize-store.d.ts","sourceRoot":"","sources":["../src/sequelize-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,aAAa,EACb,UAAU,EACV,cAAc,EACd,YAAY,EACb,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAA4B,MAAM,WAAW,CAAA;AAGxF,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,KAAK,EAAE,WAAW,SAAS,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"sequelize-store.d.ts","sourceRoot":"","sources":["../src/sequelize-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,aAAa,EACb,UAAU,EACV,cAAc,EACd,YAAY,EACb,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAA4B,MAAM,WAAW,CAAA;AAGxF,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC;IACvG;;OAEG;IACH,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAEvB;;OAEG;IACH,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IAC9B;;OAEG;IACH,UAAU,EAAE,WAAW,CAAA;IACvB;;OAEG;IACH,kBAAkB,EAAE,MAAM,SAAS,CAAA;IACnC;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpD;AAED;;GAEG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,CAC3F,YAAW,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC;IAqC5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAnCpC,SAAgB,UAAU,EAAE,WAAW,CAAA;IAEvC,SAAgB,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAEvC,SAAgB,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IAE9C,OAAO,CAAC,QAAQ,CAAmB;IAEnC,OAAO,CAAC,gBAAgB,CAAC,CAAgB;IAE5B,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBAyBnB,OAAO,EAAE,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC;IAKlE,GAAG,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAOhF,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3D,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAI9C,IAAI,CAAC,OAAO,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,EAC9C,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAsB/B,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAIzE,MAAM,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,OAAO;CAGrB"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
import type { Injector } from '@furystack/inject';
|
|
2
|
-
import type { Options,
|
|
3
|
-
export declare const useSequelize: <T extends Model<
|
|
1
|
+
import type { Constructable, Injector } from '@furystack/inject';
|
|
2
|
+
import type { Options, Sequelize, ModelStatic, Model } from 'sequelize';
|
|
3
|
+
export declare const useSequelize: <T extends object, M extends ModelStatic<Model<T, T>>, Key extends keyof T>({ injector, model, sequelizeModel, primaryKey, options, initModel, }: {
|
|
4
4
|
injector: Injector;
|
|
5
5
|
/**
|
|
6
6
|
* The constructable model class
|
|
7
7
|
*/
|
|
8
|
-
model:
|
|
8
|
+
model: Constructable<T>;
|
|
9
|
+
/**
|
|
10
|
+
* The Sequelize Model class
|
|
11
|
+
*/
|
|
12
|
+
sequelizeModel: M;
|
|
9
13
|
/**
|
|
10
14
|
* The name of the Primary Key property
|
|
11
15
|
*/
|
|
12
|
-
primaryKey:
|
|
16
|
+
primaryKey: Key;
|
|
13
17
|
/**
|
|
14
18
|
* Optional options for the MongoDb Client
|
|
15
19
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-manager-helpers.d.ts","sourceRoot":"","sources":["../src/store-manager-helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"store-manager-helpers.d.ts","sourceRoot":"","sources":["../src/store-manager-helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAIvE,eAAO,MAAM,YAAY;cAQb,QAAQ;IAClB;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAEH;;OAEG;aACM,OAAO;IAChB;;OAEG;6BAEqB,SAAS,KAAK,QAAQ,IAAI,CAAC;UAWpD,CAAA"}
|