@furystack/sequelize-store 3.0.10 → 3.0.11

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sequelize-store.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequelize-store.spec.d.ts","sourceRoot":"","sources":["../src/sequelize-store.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,159 @@
1
+ import { TestClass, createStoreTest } from '@furystack/core/create-physical-store-tests';
2
+ import { StoreManager } from '@furystack/core';
3
+ import { useSequelize } from './store-manager-helpers.js';
4
+ import { DataTypes, Model } from 'sequelize';
5
+ import { sleepAsync, usingAsync } from '@furystack/utils';
6
+ import { Injector } from '@furystack/inject';
7
+ import { SequelizeClientFactory } from './sequelize-client-factory.js';
8
+ import { describe, it, expect } from 'vitest';
9
+ class TestSequelizeClass extends Model {
10
+ id;
11
+ stringValue1;
12
+ stringValue2;
13
+ numberValue1;
14
+ numberValue2;
15
+ booleanValue;
16
+ dateValue;
17
+ }
18
+ describe('Sequelize Store', () => {
19
+ createStoreTest({
20
+ typeName: 'sequelize-store',
21
+ skipRegexTests: true,
22
+ createStore: (i) => {
23
+ useSequelize({
24
+ injector: i,
25
+ model: TestClass,
26
+ sequelizeModel: TestSequelizeClass,
27
+ primaryKey: 'id',
28
+ options: {
29
+ dialect: 'sqlite',
30
+ storage: ':memory:',
31
+ logging: false,
32
+ },
33
+ initModel: async (sequelize) => {
34
+ TestSequelizeClass.init({
35
+ id: {
36
+ type: DataTypes.INTEGER,
37
+ autoIncrement: true,
38
+ primaryKey: true,
39
+ },
40
+ stringValue1: {
41
+ type: DataTypes.STRING,
42
+ },
43
+ stringValue2: {
44
+ type: DataTypes.STRING,
45
+ },
46
+ numberValue1: {
47
+ type: DataTypes.INTEGER,
48
+ },
49
+ numberValue2: {
50
+ type: DataTypes.INTEGER,
51
+ },
52
+ booleanValue: {
53
+ type: DataTypes.BOOLEAN,
54
+ },
55
+ dateValue: {
56
+ type: DataTypes.DATE,
57
+ },
58
+ }, { sequelize, timestamps: false });
59
+ },
60
+ });
61
+ const store = i.getInstance(StoreManager).getStoreFor(TestClass, 'id');
62
+ return store;
63
+ },
64
+ });
65
+ it('should return the cached sequelize client instance from the factory', async () => {
66
+ await usingAsync(new Injector(), async (i) => {
67
+ const factory = i.getInstance(SequelizeClientFactory);
68
+ const settings = {
69
+ dialect: 'sqlite',
70
+ storage: ':memory:',
71
+ logging: false,
72
+ };
73
+ const client1 = factory.getSequelizeClient(settings);
74
+ const client2 = factory.getSequelizeClient(settings);
75
+ expect(client1).toBe(client2);
76
+ });
77
+ });
78
+ it('should return the cached model from the store class', async () => {
79
+ await usingAsync(new Injector(), async (i) => {
80
+ useSequelize({
81
+ injector: i,
82
+ model: TestClass,
83
+ sequelizeModel: TestSequelizeClass,
84
+ primaryKey: 'id',
85
+ options: {
86
+ dialect: 'sqlite',
87
+ storage: ':memory:',
88
+ logging: false,
89
+ },
90
+ initModel: async (sequelize) => {
91
+ await sleepAsync(100);
92
+ TestSequelizeClass.init({
93
+ id: {
94
+ type: DataTypes.INTEGER,
95
+ autoIncrement: true,
96
+ primaryKey: true,
97
+ },
98
+ stringValue1: {
99
+ type: DataTypes.STRING,
100
+ },
101
+ stringValue2: {
102
+ type: DataTypes.STRING,
103
+ },
104
+ numberValue1: {
105
+ type: DataTypes.INTEGER,
106
+ },
107
+ numberValue2: {
108
+ type: DataTypes.INTEGER,
109
+ },
110
+ booleanValue: {
111
+ type: DataTypes.BOOLEAN,
112
+ },
113
+ dateValue: {
114
+ type: DataTypes.DATE,
115
+ },
116
+ }, { sequelize, timestamps: false });
117
+ },
118
+ });
119
+ const store = i
120
+ .getInstance(StoreManager)
121
+ .getStoreFor(TestClass, 'id');
122
+ const model1Promise = store.getModel();
123
+ const model2 = await store.getModel();
124
+ const model1 = await model1Promise;
125
+ expect(model2).toBe(model1);
126
+ const model3 = await store.getModel();
127
+ expect(model3).toBe(model1);
128
+ });
129
+ });
130
+ it('should throw if the sequelize model is not initialized', async () => {
131
+ await usingAsync(new Injector(), async (i) => {
132
+ useSequelize({
133
+ injector: i,
134
+ model: TestClass,
135
+ sequelizeModel: TestSequelizeClass,
136
+ primaryKey: 'id',
137
+ options: {
138
+ dialect: 'sqlite',
139
+ storage: ':memory:',
140
+ logging: false,
141
+ },
142
+ initModel: async () => {
143
+ // won't init the model here
144
+ },
145
+ });
146
+ const store = i
147
+ .getInstance(StoreManager)
148
+ .getStoreFor(TestClass, 'id');
149
+ expect.assertions(1);
150
+ try {
151
+ await store.getModel();
152
+ }
153
+ catch (error) {
154
+ expect(error.message).toBe('TestSequelizeClass has not been defined'); // will be thrown by sequelize
155
+ }
156
+ });
157
+ });
158
+ });
159
+ //# sourceMappingURL=sequelize-store.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequelize-store.spec.js","sourceRoot":"","sources":["../src/sequelize-store.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@furystack/sequelize-store",
3
- "version": "3.0.10",
3
+ "version": "3.0.11",
4
4
  "description": "Sequelize-based Store implementation for FuryStack",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -35,17 +35,17 @@
35
35
  },
36
36
  "homepage": "https://github.com/furystack/furystack",
37
37
  "dependencies": {
38
- "@furystack/core": "^12.0.10",
39
- "@furystack/inject": "^8.1.0",
40
- "@furystack/utils": "^4.0.9",
38
+ "@furystack/core": "^12.0.11",
39
+ "@furystack/inject": "^8.1.1",
40
+ "@furystack/utils": "^4.0.10",
41
41
  "semaphore-async-await": "^1.5.1",
42
- "sequelize": "^6.32.1"
42
+ "sequelize": "^6.33.0"
43
43
  },
44
44
  "devDependencies": {
45
- "@types/node": "^20.5.6",
45
+ "@types/node": "^20.8.10",
46
46
  "sqlite3": "5.1.6",
47
47
  "typescript": "^5.2.2",
48
- "vitest": "^0.34.3"
48
+ "vitest": "^0.34.6"
49
49
  },
50
50
  "typings": "./types/index.d.ts"
51
51
  }
@@ -1,11 +1,11 @@
1
1
  import { TestClass, createStoreTest } from '@furystack/core/create-physical-store-tests'
2
2
  import { StoreManager } from '@furystack/core'
3
- import { useSequelize } from './store-manager-helpers'
3
+ import { useSequelize } from './store-manager-helpers.js'
4
4
  import { DataTypes, Model } from 'sequelize'
5
5
  import { sleepAsync, usingAsync } from '@furystack/utils'
6
6
  import { Injector } from '@furystack/inject'
7
- import { SequelizeClientFactory } from './sequelize-client-factory'
8
- import type { SequelizeStore } from './sequelize-store'
7
+ import { SequelizeClientFactory } from './sequelize-client-factory.js'
8
+ import type { SequelizeStore } from './sequelize-store.js'
9
9
  import { describe, it, expect } from 'vitest'
10
10
 
11
11
  class TestSequelizeClass extends Model<TestClass, TestClass> implements TestClass {