@recursyve/nestjs-unique-codes-sequelize 8.0.0-beta.8 → 11.0.0-beta.9
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/models/unique-codes.model.js +9 -2
- package/package.json +8 -16
- package/repositories/database-read.repository.js +3 -2
- package/repositories/database.repository.js +2 -2
- package/sequelize-platform.module.js +2 -2
- package/services/unique-codes.service.js +32 -18
- package/utils/sequelize-migration.utils.d.ts +0 -1
|
@@ -6,7 +6,15 @@ const sequelize_typescript_1 = require("sequelize-typescript");
|
|
|
6
6
|
const uuid = require("uuid");
|
|
7
7
|
const sequelize_1 = require("sequelize");
|
|
8
8
|
let SequelizeUniqueCodes = class SequelizeUniqueCodes extends sequelize_typescript_1.Model {
|
|
9
|
+
code;
|
|
10
|
+
metadata;
|
|
11
|
+
validAt;
|
|
12
|
+
expiresAt;
|
|
13
|
+
availableUsageCount;
|
|
14
|
+
usages;
|
|
15
|
+
type;
|
|
9
16
|
};
|
|
17
|
+
exports.SequelizeUniqueCodes = SequelizeUniqueCodes;
|
|
10
18
|
tslib_1.__decorate([
|
|
11
19
|
sequelize_typescript_1.PrimaryKey,
|
|
12
20
|
sequelize_typescript_1.AutoIncrement,
|
|
@@ -45,9 +53,8 @@ tslib_1.__decorate([
|
|
|
45
53
|
sequelize_typescript_1.Column,
|
|
46
54
|
tslib_1.__metadata("design:type", String)
|
|
47
55
|
], SequelizeUniqueCodes.prototype, "type", void 0);
|
|
48
|
-
SequelizeUniqueCodes = tslib_1.__decorate([
|
|
56
|
+
exports.SequelizeUniqueCodes = SequelizeUniqueCodes = tslib_1.__decorate([
|
|
49
57
|
(0, sequelize_typescript_1.Table)({
|
|
50
58
|
tableName: "unique_codes"
|
|
51
59
|
})
|
|
52
60
|
], SequelizeUniqueCodes);
|
|
53
|
-
exports.SequelizeUniqueCodes = SequelizeUniqueCodes;
|
package/package.json
CHANGED
|
@@ -1,25 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@recursyve/nestjs-unique-codes-sequelize",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "11.0.0-beta.9",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
7
|
"peerDependencies": {
|
|
8
|
-
"@nestjs/common": "^
|
|
9
|
-
"@nestjs/core": "^
|
|
10
|
-
"@nestjs/sequelize": "^
|
|
11
|
-
"@recursyve/nestjs-unique-codes-core": "^
|
|
12
|
-
"date-fns": "^
|
|
13
|
-
"sequelize": "^6.
|
|
14
|
-
"sequelize-typescript": "^2.1.
|
|
15
|
-
},
|
|
16
|
-
"devDependencies": {
|
|
17
|
-
"@nestjs/common": "^8.0.5",
|
|
18
|
-
"@nestjs/core": "^8.0.5",
|
|
19
|
-
"sequelize": "^6.6.5",
|
|
20
|
-
"sequelize-typescript": "^2.1.0",
|
|
21
|
-
"tslint": "^6.1.2",
|
|
22
|
-
"typescript": "^4.3.5"
|
|
8
|
+
"@nestjs/common": "^11.0.0",
|
|
9
|
+
"@nestjs/core": "^11.0.0",
|
|
10
|
+
"@nestjs/sequelize": "^11.0.0",
|
|
11
|
+
"@recursyve/nestjs-unique-codes-core": "^11.0.0-beta.9",
|
|
12
|
+
"date-fns": "^3.0.0",
|
|
13
|
+
"sequelize": "^6.37.0",
|
|
14
|
+
"sequelize-typescript": "^2.1.6"
|
|
23
15
|
},
|
|
24
16
|
"gitHead": "9cef464495d8155c8dff97a6055da3253c899ddf"
|
|
25
17
|
}
|
|
@@ -7,6 +7,7 @@ const sequelize_typescript_1 = require("sequelize-typescript");
|
|
|
7
7
|
class M extends sequelize_typescript_1.Model {
|
|
8
8
|
}
|
|
9
9
|
let UniqueCodeDatabaseReadRepository = class UniqueCodeDatabaseReadRepository {
|
|
10
|
+
repository;
|
|
10
11
|
constructor(repository) {
|
|
11
12
|
this.repository = repository;
|
|
12
13
|
}
|
|
@@ -20,8 +21,8 @@ let UniqueCodeDatabaseReadRepository = class UniqueCodeDatabaseReadRepository {
|
|
|
20
21
|
return this.repository.findAll(options);
|
|
21
22
|
}
|
|
22
23
|
};
|
|
23
|
-
UniqueCodeDatabaseReadRepository =
|
|
24
|
+
exports.UniqueCodeDatabaseReadRepository = UniqueCodeDatabaseReadRepository;
|
|
25
|
+
exports.UniqueCodeDatabaseReadRepository = UniqueCodeDatabaseReadRepository = tslib_1.__decorate([
|
|
24
26
|
(0, common_1.Injectable)(),
|
|
25
27
|
tslib_1.__metadata("design:paramtypes", [Object])
|
|
26
28
|
], UniqueCodeDatabaseReadRepository);
|
|
27
|
-
exports.UniqueCodeDatabaseReadRepository = UniqueCodeDatabaseReadRepository;
|
|
@@ -30,8 +30,8 @@ let UniqueCodeDatabaseRepository = class UniqueCodeDatabaseRepository extends da
|
|
|
30
30
|
await model.destroy();
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
|
-
UniqueCodeDatabaseRepository =
|
|
33
|
+
exports.UniqueCodeDatabaseRepository = UniqueCodeDatabaseRepository;
|
|
34
|
+
exports.UniqueCodeDatabaseRepository = UniqueCodeDatabaseRepository = tslib_1.__decorate([
|
|
34
35
|
(0, common_1.Injectable)(),
|
|
35
36
|
tslib_1.__metadata("design:paramtypes", [Object])
|
|
36
37
|
], UniqueCodeDatabaseRepository);
|
|
37
|
-
exports.UniqueCodeDatabaseRepository = UniqueCodeDatabaseRepository;
|
|
@@ -30,7 +30,7 @@ let UniqueCodesSequelizePlatformModule = UniqueCodesSequelizePlatformModule_1 =
|
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
|
-
UniqueCodesSequelizePlatformModule =
|
|
33
|
+
exports.UniqueCodesSequelizePlatformModule = UniqueCodesSequelizePlatformModule;
|
|
34
|
+
exports.UniqueCodesSequelizePlatformModule = UniqueCodesSequelizePlatformModule = UniqueCodesSequelizePlatformModule_1 = tslib_1.__decorate([
|
|
34
35
|
(0, common_1.Module)({})
|
|
35
36
|
], UniqueCodesSequelizePlatformModule);
|
|
36
|
-
exports.UniqueCodesSequelizePlatformModule = UniqueCodesSequelizePlatformModule;
|
|
@@ -9,6 +9,7 @@ const date_fns_1 = require("date-fns");
|
|
|
9
9
|
const sequelize_2 = require("sequelize");
|
|
10
10
|
const models_1 = require("../models");
|
|
11
11
|
let SequelizeUniqueCodesService = class SequelizeUniqueCodesService extends nestjs_unique_codes_core_1.UniqueCodesService {
|
|
12
|
+
repository;
|
|
12
13
|
constructor(repository) {
|
|
13
14
|
super();
|
|
14
15
|
this.repository = repository;
|
|
@@ -20,32 +21,44 @@ let SequelizeUniqueCodesService = class SequelizeUniqueCodesService extends nest
|
|
|
20
21
|
return this.repository.bulkCreate(uniqueCodes, options);
|
|
21
22
|
}
|
|
22
23
|
async getByCode(code, options) {
|
|
23
|
-
const uniqueCode = await this.repository.findOne(
|
|
24
|
+
const uniqueCode = await this.repository.findOne({
|
|
25
|
+
where: {
|
|
24
26
|
code
|
|
25
|
-
}
|
|
27
|
+
},
|
|
28
|
+
...options
|
|
29
|
+
});
|
|
26
30
|
if (!uniqueCode)
|
|
27
31
|
throw new common_1.NotFoundException(`Unique code '${code}' not found`);
|
|
28
32
|
return uniqueCode;
|
|
29
33
|
}
|
|
30
34
|
findByCode(code, options) {
|
|
31
|
-
return this.repository.findOne(
|
|
35
|
+
return this.repository.findOne({
|
|
36
|
+
where: {
|
|
32
37
|
code
|
|
33
|
-
}
|
|
38
|
+
},
|
|
39
|
+
...options
|
|
40
|
+
});
|
|
34
41
|
}
|
|
35
42
|
async getByCodeAndType(code, type, options) {
|
|
36
|
-
const uniqueCode = await this.repository.findOne(
|
|
43
|
+
const uniqueCode = await this.repository.findOne({
|
|
44
|
+
where: {
|
|
37
45
|
code,
|
|
38
46
|
type
|
|
39
|
-
}
|
|
47
|
+
},
|
|
48
|
+
...options
|
|
49
|
+
});
|
|
40
50
|
if (!uniqueCode)
|
|
41
51
|
throw new common_1.NotFoundException(`Unique code '${code}' with type '${type}' not found`);
|
|
42
52
|
return uniqueCode;
|
|
43
53
|
}
|
|
44
54
|
findByCodeAndType(code, type, options) {
|
|
45
|
-
return this.repository.findOne(
|
|
55
|
+
return this.repository.findOne({
|
|
56
|
+
where: {
|
|
46
57
|
code,
|
|
47
58
|
type
|
|
48
|
-
}
|
|
59
|
+
},
|
|
60
|
+
...options
|
|
61
|
+
});
|
|
49
62
|
}
|
|
50
63
|
findFromMetadata(metadata, options) {
|
|
51
64
|
const conditions = [];
|
|
@@ -78,7 +91,6 @@ let SequelizeUniqueCodesService = class SequelizeUniqueCodesService extends nest
|
|
|
78
91
|
});
|
|
79
92
|
}
|
|
80
93
|
async validate(uniqueCode, options) {
|
|
81
|
-
var _a, _b;
|
|
82
94
|
if (typeof uniqueCode === "string") {
|
|
83
95
|
uniqueCode = await this.getByCode(uniqueCode, options);
|
|
84
96
|
}
|
|
@@ -86,34 +98,36 @@ let SequelizeUniqueCodesService = class SequelizeUniqueCodesService extends nest
|
|
|
86
98
|
return false;
|
|
87
99
|
}
|
|
88
100
|
const now = Date.now();
|
|
89
|
-
const start =
|
|
90
|
-
const end =
|
|
101
|
+
const start = uniqueCode.validAt ?? now;
|
|
102
|
+
const end = uniqueCode.expiresAt ?? now;
|
|
91
103
|
if ((0, date_fns_1.isAfter)(start, end))
|
|
92
104
|
return false;
|
|
93
105
|
return (0, date_fns_1.isWithinInterval)(now, { start, end });
|
|
94
106
|
}
|
|
95
107
|
async use(id, metadata, options) {
|
|
96
|
-
var _a;
|
|
97
108
|
const uniqueCode = await this.repository.findByPk(id, options);
|
|
98
109
|
const isValid = await this.validate(uniqueCode, options);
|
|
99
110
|
if (!isValid) {
|
|
100
111
|
throw new common_1.BadRequestException(`Unique code ${uniqueCode.code} invalid`);
|
|
101
112
|
}
|
|
102
|
-
const usages =
|
|
103
|
-
usages.push(
|
|
113
|
+
const usages = uniqueCode.usages ?? [];
|
|
114
|
+
usages.push({ ...metadata, usedAt: new Date() });
|
|
104
115
|
if (uniqueCode.availableUsageCount) {
|
|
105
116
|
await uniqueCode.decrement("availableUsageCount", options);
|
|
106
117
|
}
|
|
107
118
|
await this.repository.update({
|
|
108
119
|
usages
|
|
109
|
-
},
|
|
120
|
+
}, {
|
|
121
|
+
where: {
|
|
110
122
|
id
|
|
111
|
-
}
|
|
123
|
+
},
|
|
124
|
+
...options
|
|
125
|
+
});
|
|
112
126
|
}
|
|
113
127
|
};
|
|
114
|
-
SequelizeUniqueCodesService =
|
|
128
|
+
exports.SequelizeUniqueCodesService = SequelizeUniqueCodesService;
|
|
129
|
+
exports.SequelizeUniqueCodesService = SequelizeUniqueCodesService = tslib_1.__decorate([
|
|
115
130
|
(0, common_1.Injectable)(),
|
|
116
131
|
tslib_1.__param(0, (0, sequelize_1.InjectModel)(models_1.SequelizeUniqueCodes)),
|
|
117
132
|
tslib_1.__metadata("design:paramtypes", [Object])
|
|
118
133
|
], SequelizeUniqueCodesService);
|
|
119
|
-
exports.SequelizeUniqueCodesService = SequelizeUniqueCodesService;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
|