@stamhoofd/models 2.83.0 → 2.83.1
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebshopCounter.d.ts","sourceRoot":"","sources":["../../../src/helpers/WebshopCounter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,cAAc;IACvB,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;WAEvC,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"WebshopCounter.d.ts","sourceRoot":"","sources":["../../../src/helpers/WebshopCounter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,cAAc;IACvB,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;WAEvC,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;WAkChD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3D,MAAM,CAAC,QAAQ;CAGlB"}
|
|
@@ -11,6 +11,8 @@ class WebshopCounter {
|
|
|
11
11
|
return Math.floor(Math.random() * 1000000000) + 100000000;
|
|
12
12
|
}
|
|
13
13
|
const webshopId = webshop.id;
|
|
14
|
+
// For sequential numbering, we cannot go over 100000000
|
|
15
|
+
const maxStartNumber = 100000000 - 100000;
|
|
14
16
|
// Prevent race conditions: create a queue
|
|
15
17
|
// The queue can only run one at a time for the same webshop (so multiple webshops at the same time are allowed)
|
|
16
18
|
return await queues_1.QueueHandler.schedule('webshop/numbers-' + webshopId, async () => {
|
|
@@ -21,12 +23,12 @@ class WebshopCounter {
|
|
|
21
23
|
}
|
|
22
24
|
const [rows] = await simple_database_1.Database.select(`select max(number) as previousNumber from webshop_orders where webshopId = ? AND number < 100000000`, [webshopId]);
|
|
23
25
|
let nextNumber;
|
|
24
|
-
if (rows.length
|
|
25
|
-
nextNumber = webshop.privateMeta.startNumber ?? 1;
|
|
26
|
+
if (rows.length === 0) {
|
|
27
|
+
nextNumber = Math.min(maxStartNumber, webshop.privateMeta.startNumber ?? 1);
|
|
26
28
|
}
|
|
27
29
|
else {
|
|
28
30
|
const previousNumber = rows[0]['']['previousNumber'];
|
|
29
|
-
nextNumber = (previousNumber ?? ((webshop.privateMeta.startNumber ?? 1) - 1)) + 1;
|
|
31
|
+
nextNumber = (previousNumber ?? (Math.min(maxStartNumber, webshop.privateMeta.startNumber ?? 1) - 1)) + 1;
|
|
30
32
|
}
|
|
31
33
|
this.numberCache.set(webshopId, nextNumber + 1);
|
|
32
34
|
return nextNumber;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebshopCounter.js","sourceRoot":"","sources":["../../../src/helpers/WebshopCounter.ts"],"names":[],"mappings":";;;AAAA,iEAAuD;AACvD,8CAAiD;AACjD,sDAA6D;AAI7D,MAAa,cAAc;IACvB,MAAM,CAAC,WAAW,GAAwB,IAAI,GAAG,EAAE,CAAC;IAEpD,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAgB;QACvC,IAAI,OAAO,CAAC,WAAW,CAAC,aAAa,IAAI,iCAAoB,CAAC,MAAM,EAAE,CAAC;YACnE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,SAAS,CAAC;QAC9D,CAAC;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;QAE7B,0CAA0C;QAC1C,gHAAgH;QAChH,OAAO,MAAM,qBAAY,CAAC,QAAQ,CAAC,kBAAkB,GAAG,SAAS,EAAE,KAAK,IAAI,EAAE;YAC1E,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;gBACpD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;gBAChD,OAAO,UAAU,CAAC;YACtB,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,0BAAQ,CAAC,MAAM,CAAC,qGAAqG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YACzJ,IAAI,UAA8B,CAAC;YAEnC,IAAI,IAAI,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"WebshopCounter.js","sourceRoot":"","sources":["../../../src/helpers/WebshopCounter.ts"],"names":[],"mappings":";;;AAAA,iEAAuD;AACvD,8CAAiD;AACjD,sDAA6D;AAI7D,MAAa,cAAc;IACvB,MAAM,CAAC,WAAW,GAAwB,IAAI,GAAG,EAAE,CAAC;IAEpD,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAgB;QACvC,IAAI,OAAO,CAAC,WAAW,CAAC,aAAa,IAAI,iCAAoB,CAAC,MAAM,EAAE,CAAC;YACnE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,SAAS,CAAC;QAC9D,CAAC;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;QAE7B,wDAAwD;QACxD,MAAM,cAAc,GAAG,SAAS,GAAG,MAAM,CAAC;QAE1C,0CAA0C;QAC1C,gHAAgH;QAChH,OAAO,MAAM,qBAAY,CAAC,QAAQ,CAAC,kBAAkB,GAAG,SAAS,EAAE,KAAK,IAAI,EAAE;YAC1E,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;gBACpD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;gBAChD,OAAO,UAAU,CAAC;YACtB,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,0BAAQ,CAAC,MAAM,CAAC,qGAAqG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YACzJ,IAAI,UAA8B,CAAC;YAEnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpB,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;YAChF,CAAC;iBACI,CAAC;gBACF,MAAM,cAAc,GAAkB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAkB,CAAC;gBACrF,UAAU,GAAG,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9G,CAAC;YAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;YAChD,OAAO,UAAU,CAAC;QACtB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,SAAiB;QACvC,0CAA0C;QAC1C,gHAAgH;QAChH,OAAO,MAAM,qBAAY,CAAC,QAAQ,CAAC,kBAAkB,GAAG,SAAS,EAAE,KAAK,IAAI,EAAE;YAC1E,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACnC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,QAAQ;QACX,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;;AAhDL,wCAiDC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stamhoofd/models",
|
|
3
|
-
"version": "2.83.
|
|
3
|
+
"version": "2.83.1",
|
|
4
4
|
"main": "./dist/src/index.js",
|
|
5
5
|
"types": "./dist/src/index.d.ts",
|
|
6
6
|
"license": "UNLICENCED",
|
|
@@ -30,5 +30,5 @@
|
|
|
30
30
|
"publishConfig": {
|
|
31
31
|
"access": "public"
|
|
32
32
|
},
|
|
33
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "97bf928ed008f1a992380b25385c86caecc43d42"
|
|
34
34
|
}
|
|
@@ -13,6 +13,9 @@ export class WebshopCounter {
|
|
|
13
13
|
}
|
|
14
14
|
const webshopId = webshop.id;
|
|
15
15
|
|
|
16
|
+
// For sequential numbering, we cannot go over 100000000
|
|
17
|
+
const maxStartNumber = 100000000 - 100000;
|
|
18
|
+
|
|
16
19
|
// Prevent race conditions: create a queue
|
|
17
20
|
// The queue can only run one at a time for the same webshop (so multiple webshops at the same time are allowed)
|
|
18
21
|
return await QueueHandler.schedule('webshop/numbers-' + webshopId, async () => {
|
|
@@ -25,12 +28,12 @@ export class WebshopCounter {
|
|
|
25
28
|
const [rows] = await Database.select(`select max(number) as previousNumber from webshop_orders where webshopId = ? AND number < 100000000`, [webshopId]);
|
|
26
29
|
let nextNumber: number | undefined;
|
|
27
30
|
|
|
28
|
-
if (rows.length
|
|
29
|
-
nextNumber = webshop.privateMeta.startNumber ?? 1;
|
|
31
|
+
if (rows.length === 0) {
|
|
32
|
+
nextNumber = Math.min(maxStartNumber, webshop.privateMeta.startNumber ?? 1);
|
|
30
33
|
}
|
|
31
34
|
else {
|
|
32
35
|
const previousNumber: number | null = rows[0]['']['previousNumber'] as number | null;
|
|
33
|
-
nextNumber = (previousNumber ?? ((webshop.privateMeta.startNumber ?? 1) - 1)) + 1;
|
|
36
|
+
nextNumber = (previousNumber ?? (Math.min(maxStartNumber, webshop.privateMeta.startNumber ?? 1) - 1)) + 1;
|
|
34
37
|
}
|
|
35
38
|
|
|
36
39
|
this.numberCache.set(webshopId, nextNumber + 1);
|
|
@@ -47,7 +50,7 @@ export class WebshopCounter {
|
|
|
47
50
|
});
|
|
48
51
|
}
|
|
49
52
|
|
|
50
|
-
static clearAll(){
|
|
51
|
-
this.numberCache.clear()
|
|
53
|
+
static clearAll() {
|
|
54
|
+
this.numberCache.clear();
|
|
52
55
|
}
|
|
53
56
|
}
|