@volontariapp/domain-user 2.3.5-snap-7ff4433 → 2.3.5
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/CHANGELOG.md +0 -2
- package/dist/entities/user.entity.d.ts +1 -3
- package/dist/entities/user.entity.d.ts.map +1 -1
- package/dist/entities/user.entity.js +0 -41
- package/dist/entities/user.entity.js.map +1 -1
- package/dist/models/user.model.js +3 -3
- package/dist/models/user.model.js.map +1 -1
- package/package.json +4 -16
- package/dist/models/mapper.d.ts +0 -2
- package/dist/models/mapper.d.ts.map +0 -1
- package/dist/models/mapper.js +0 -36
- package/dist/models/mapper.js.map +0 -1
- package/dist/repositories/index.d.ts +0 -4
- package/dist/repositories/index.d.ts.map +0 -1
- package/dist/repositories/index.js +0 -4
- package/dist/repositories/index.js.map +0 -1
- package/dist/repositories/interfaces/badge.repository.d.ts +0 -11
- package/dist/repositories/interfaces/badge.repository.d.ts.map +0 -1
- package/dist/repositories/interfaces/badge.repository.js +0 -2
- package/dist/repositories/interfaces/badge.repository.js.map +0 -1
- package/dist/repositories/interfaces/index.d.ts +0 -3
- package/dist/repositories/interfaces/index.d.ts.map +0 -1
- package/dist/repositories/interfaces/index.js +0 -3
- package/dist/repositories/interfaces/index.js.map +0 -1
- package/dist/repositories/interfaces/user.repository.d.ts +0 -16
- package/dist/repositories/interfaces/user.repository.d.ts.map +0 -1
- package/dist/repositories/interfaces/user.repository.js +0 -2
- package/dist/repositories/interfaces/user.repository.js.map +0 -1
- package/dist/repositories/postgres-badge.repository.d.ts +0 -12
- package/dist/repositories/postgres-badge.repository.d.ts.map +0 -1
- package/dist/repositories/postgres-badge.repository.js +0 -38
- package/dist/repositories/postgres-badge.repository.js.map +0 -1
- package/dist/repositories/postgres-user.repository.d.ts +0 -23
- package/dist/repositories/postgres-user.repository.d.ts.map +0 -1
- package/dist/repositories/postgres-user.repository.js +0 -96
- package/dist/repositories/postgres-user.repository.js.map +0 -1
- package/dist/services/auth.service.d.ts +0 -29
- package/dist/services/auth.service.d.ts.map +0 -1
- package/dist/services/auth.service.js +0 -93
- package/dist/services/auth.service.js.map +0 -1
- package/dist/services/badge.service.d.ts +0 -15
- package/dist/services/badge.service.d.ts.map +0 -1
- package/dist/services/badge.service.js +0 -139
- package/dist/services/badge.service.js.map +0 -1
- package/dist/services/user.service.d.ts +0 -19
- package/dist/services/user.service.d.ts.map +0 -1
- package/dist/services/user.service.js +0 -188
- package/dist/services/user.service.js.map +0 -1
- package/dist/test/__test-utils__/factories/badge.factory.d.ts +0 -7
- package/dist/test/__test-utils__/factories/badge.factory.d.ts.map +0 -1
- package/dist/test/__test-utils__/factories/badge.factory.js +0 -29
- package/dist/test/__test-utils__/factories/badge.factory.js.map +0 -1
- package/dist/test/__test-utils__/factories/commands.factory.d.ts +0 -6
- package/dist/test/__test-utils__/factories/commands.factory.d.ts.map +0 -1
- package/dist/test/__test-utils__/factories/commands.factory.js +0 -24
- package/dist/test/__test-utils__/factories/commands.factory.js.map +0 -1
- package/dist/test/__test-utils__/factories/user.factory.d.ts +0 -8
- package/dist/test/__test-utils__/factories/user.factory.d.ts.map +0 -1
- package/dist/test/__test-utils__/factories/user.factory.js +0 -42
- package/dist/test/__test-utils__/factories/user.factory.js.map +0 -1
- package/dist/test/__test-utils__/mocks/badge.repository.mock.d.ts +0 -4
- package/dist/test/__test-utils__/mocks/badge.repository.mock.d.ts.map +0 -1
- package/dist/test/__test-utils__/mocks/badge.repository.mock.js +0 -11
- package/dist/test/__test-utils__/mocks/badge.repository.mock.js.map +0 -1
- package/dist/test/__test-utils__/mocks/user.repository.mock.d.ts +0 -4
- package/dist/test/__test-utils__/mocks/user.repository.mock.d.ts.map +0 -1
- package/dist/test/__test-utils__/mocks/user.repository.mock.js +0 -16
- package/dist/test/__test-utils__/mocks/user.repository.mock.js.map +0 -1
- package/dist/test/data-source.d.ts +0 -8
- package/dist/test/data-source.d.ts.map +0 -1
- package/dist/test/data-source.js +0 -36
- package/dist/test/data-source.js.map +0 -1
- package/dist/test/integration/postgres-badge.repository.int.spec.d.ts +0 -2
- package/dist/test/integration/postgres-badge.repository.int.spec.d.ts.map +0 -1
- package/dist/test/integration/postgres-badge.repository.int.spec.js +0 -129
- package/dist/test/integration/postgres-badge.repository.int.spec.js.map +0 -1
- package/dist/test/integration/postgres-user.repository.int.spec.d.ts +0 -2
- package/dist/test/integration/postgres-user.repository.int.spec.d.ts.map +0 -1
- package/dist/test/integration/postgres-user.repository.int.spec.js +0 -222
- package/dist/test/integration/postgres-user.repository.int.spec.js.map +0 -1
- package/dist/test/migrations/1776334421317-InitialUserSchema.d.ts +0 -7
- package/dist/test/migrations/1776334421317-InitialUserSchema.d.ts.map +0 -1
- package/dist/test/migrations/1776334421317-InitialUserSchema.js +0 -58
- package/dist/test/migrations/1776334421317-InitialUserSchema.js.map +0 -1
- package/dist/test/setup.d.ts +0 -2
- package/dist/test/setup.d.ts.map +0 -1
- package/dist/test/setup.js +0 -2
- package/dist/test/setup.js.map +0 -1
- package/dist/test/unit/auth.service.unit.spec.d.ts +0 -2
- package/dist/test/unit/auth.service.unit.spec.d.ts.map +0 -1
- package/dist/test/unit/auth.service.unit.spec.js +0 -236
- package/dist/test/unit/auth.service.unit.spec.js.map +0 -1
- package/dist/test/unit/badge.service.unit.spec.d.ts +0 -2
- package/dist/test/unit/badge.service.unit.spec.d.ts.map +0 -1
- package/dist/test/unit/badge.service.unit.spec.js +0 -120
- package/dist/test/unit/badge.service.unit.spec.js.map +0 -1
- package/dist/test/unit/mapper.unit.spec.d.ts +0 -2
- package/dist/test/unit/mapper.unit.spec.d.ts.map +0 -1
- package/dist/test/unit/mapper.unit.spec.js +0 -358
- package/dist/test/unit/mapper.unit.spec.js.map +0 -1
- package/dist/test/unit/user.service.unit.spec.d.ts +0 -2
- package/dist/test/unit/user.service.unit.spec.d.ts.map +0 -1
- package/dist/test/unit/user.service.unit.spec.js +0 -480
- package/dist/test/unit/user.service.unit.spec.js.map +0 -1
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
-
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
-
};
|
|
13
|
-
var AuthService_1;
|
|
14
|
-
import { Inject, Injectable } from '@nestjs/common';
|
|
15
|
-
import { Logger } from '@volontariapp/logger';
|
|
16
|
-
import * as repositories from '../repositories/index.js';
|
|
17
|
-
import { UserEntity } from '../entities/user.entity.js';
|
|
18
|
-
import { DATABASE_ERROR, INVALID_RNA, USER_ALREADY_EXISTS, USER_NOT_FOUND, } from '@volontariapp/errors-nest';
|
|
19
|
-
import { hashPassword, verifyPassword, calculateHash } from '@volontariapp/crypto';
|
|
20
|
-
import { isBaseError, isDatabaseDriverError } from '@volontariapp/errors';
|
|
21
|
-
import { JwtService } from '@volontariapp/auth';
|
|
22
|
-
let AuthService = AuthService_1 = class AuthService {
|
|
23
|
-
userRepository;
|
|
24
|
-
jwtService;
|
|
25
|
-
logger = new Logger({ context: AuthService_1.name });
|
|
26
|
-
constructor(userRepository, jwtService) {
|
|
27
|
-
this.userRepository = userRepository;
|
|
28
|
-
this.jwtService = jwtService;
|
|
29
|
-
}
|
|
30
|
-
async signUp(command) {
|
|
31
|
-
const existingUser = await this.userRepository.findByEmail(command.email);
|
|
32
|
-
if (existingUser) {
|
|
33
|
-
this.logger.warn(`Attempt to sign up with already registered email hash: ${calculateHash(command.email).slice(0, 8)}`);
|
|
34
|
-
throw USER_ALREADY_EXISTS(command.email);
|
|
35
|
-
}
|
|
36
|
-
const user = UserEntity.create({
|
|
37
|
-
email: command.email,
|
|
38
|
-
pseudo: command.pseudo,
|
|
39
|
-
rna: command.organisationInfo?.rna,
|
|
40
|
-
bio: command.bio,
|
|
41
|
-
logoPath: command.logoPath,
|
|
42
|
-
});
|
|
43
|
-
const hashedPassword = hashPassword(command.password);
|
|
44
|
-
try {
|
|
45
|
-
if (user.rna != null && !UserEntity.isValidRna(user.rna)) {
|
|
46
|
-
this.logger.warn(`Invalid RNA ${user.rna} for new user`);
|
|
47
|
-
throw INVALID_RNA(user.rna);
|
|
48
|
-
}
|
|
49
|
-
const userEntity = await this.userRepository.createWithHashedPassword(user, hashedPassword);
|
|
50
|
-
const authUser = { id: userEntity.id, email: userEntity.email, role: userEntity.role };
|
|
51
|
-
const [accessToken, refreshToken] = await Promise.all([
|
|
52
|
-
this.jwtService.signAccessToken(authUser),
|
|
53
|
-
this.jwtService.signRefreshToken(authUser),
|
|
54
|
-
]);
|
|
55
|
-
return { accessToken, refreshToken };
|
|
56
|
-
}
|
|
57
|
-
catch (error) {
|
|
58
|
-
if (isBaseError(error))
|
|
59
|
-
throw error;
|
|
60
|
-
if (isDatabaseDriverError(error) && error.code === '23505') {
|
|
61
|
-
throw USER_ALREADY_EXISTS(user.email);
|
|
62
|
-
}
|
|
63
|
-
const err = error;
|
|
64
|
-
this.logger.error(`Error while creating user: ${err.message}`);
|
|
65
|
-
throw DATABASE_ERROR('creating user', err.message);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
async logIn(command) {
|
|
69
|
-
const user = await this.userRepository.findByEmail(command.email);
|
|
70
|
-
if (!user) {
|
|
71
|
-
this.logger.warn(`Login attempt with non-existent email hash: ${calculateHash(command.email).slice(0, 8)}`);
|
|
72
|
-
throw USER_NOT_FOUND(command.email, 'email');
|
|
73
|
-
}
|
|
74
|
-
const passwordHash = await this.userRepository.findPasswordHashByEmail(command.email);
|
|
75
|
-
if (passwordHash == null || !verifyPassword(command.password, passwordHash)) {
|
|
76
|
-
this.logger.warn(`Invalid password attempt for email hash: ${calculateHash(command.email).slice(0, 8)}`);
|
|
77
|
-
throw USER_NOT_FOUND(command.email, 'email');
|
|
78
|
-
}
|
|
79
|
-
const authUser = { id: user.id, email: user.email, role: user.role };
|
|
80
|
-
const [accessToken, refreshToken] = await Promise.all([
|
|
81
|
-
this.jwtService.signAccessToken(authUser),
|
|
82
|
-
this.jwtService.signRefreshToken(authUser),
|
|
83
|
-
]);
|
|
84
|
-
return { accessToken, refreshToken };
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
AuthService = AuthService_1 = __decorate([
|
|
88
|
-
Injectable(),
|
|
89
|
-
__param(0, Inject(repositories.PostgresUserRepository)),
|
|
90
|
-
__metadata("design:paramtypes", [Object, JwtService])
|
|
91
|
-
], AuthService);
|
|
92
|
-
export { AuthService };
|
|
93
|
-
//# sourceMappingURL=auth.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../src/services/auth.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { IBadgeRepository } from '../repositories/index.js';
|
|
2
|
-
import { BadgeEntity } from '../entities/badge.entity.js';
|
|
3
|
-
export declare class BadgeService {
|
|
4
|
-
private readonly badgeRepository;
|
|
5
|
-
private readonly logger;
|
|
6
|
-
constructor(badgeRepository: IBadgeRepository);
|
|
7
|
-
findById(id: string): Promise<BadgeEntity>;
|
|
8
|
-
findBySlug(slug: string): Promise<BadgeEntity>;
|
|
9
|
-
findAll(): Promise<BadgeEntity[]>;
|
|
10
|
-
findManyByIds(ids: string[]): Promise<BadgeEntity[]>;
|
|
11
|
-
create(badgeData: Partial<BadgeEntity>): Promise<BadgeEntity>;
|
|
12
|
-
update(id: string, badgeData: Partial<BadgeEntity>): Promise<BadgeEntity>;
|
|
13
|
-
delete(id: string): Promise<void>;
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=badge.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"badge.service.d.ts","sourceRoot":"","sources":["../../src/services/badge.service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI1D,qBACa,YAAY;IAKrB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAJlC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8C;gBAIlD,eAAe,EAAE,gBAAgB;IAG9C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAgB1C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAgB9C,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAWvC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAW9C,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAe7D,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAgBzE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAcxC"}
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
-
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
-
};
|
|
13
|
-
var BadgeService_1;
|
|
14
|
-
import { Inject, Injectable } from '@nestjs/common';
|
|
15
|
-
import { Logger } from '@volontariapp/logger';
|
|
16
|
-
import { PostgresBadgeRepository } from '../repositories/postgres-badge.repository.js';
|
|
17
|
-
import { isBaseError, isDatabaseDriverError } from '@volontariapp/errors';
|
|
18
|
-
import { BADGE_NOT_FOUND, BADGE_ALREADY_EXISTS, DATABASE_ERROR } from '@volontariapp/errors-nest';
|
|
19
|
-
let BadgeService = BadgeService_1 = class BadgeService {
|
|
20
|
-
badgeRepository;
|
|
21
|
-
logger = new Logger({ context: BadgeService_1.name });
|
|
22
|
-
constructor(badgeRepository) {
|
|
23
|
-
this.badgeRepository = badgeRepository;
|
|
24
|
-
}
|
|
25
|
-
async findById(id) {
|
|
26
|
-
try {
|
|
27
|
-
const badge = await this.badgeRepository.findById(id);
|
|
28
|
-
if (!badge) {
|
|
29
|
-
this.logger.warn(`Badge with id ${id} not found`);
|
|
30
|
-
throw BADGE_NOT_FOUND(id, 'id');
|
|
31
|
-
}
|
|
32
|
-
return badge;
|
|
33
|
-
}
|
|
34
|
-
catch (error) {
|
|
35
|
-
if (isBaseError(error))
|
|
36
|
-
throw error;
|
|
37
|
-
const err = error;
|
|
38
|
-
this.logger.error(`Error while finding badge by id ${id}: ${err.message}`);
|
|
39
|
-
throw DATABASE_ERROR(`finding badge by id ${id}`, err.message);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
async findBySlug(slug) {
|
|
43
|
-
try {
|
|
44
|
-
const badge = await this.badgeRepository.findBySlug(slug);
|
|
45
|
-
if (!badge) {
|
|
46
|
-
this.logger.warn(`Badge with slug ${slug} not found`);
|
|
47
|
-
throw BADGE_NOT_FOUND(slug, 'slug');
|
|
48
|
-
}
|
|
49
|
-
return badge;
|
|
50
|
-
}
|
|
51
|
-
catch (error) {
|
|
52
|
-
if (isBaseError(error))
|
|
53
|
-
throw error;
|
|
54
|
-
const err = error;
|
|
55
|
-
this.logger.error(`Error while finding badge by slug ${slug}: ${err.message}`);
|
|
56
|
-
throw DATABASE_ERROR(`finding badge by slug ${slug}`, err.message);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
async findAll() {
|
|
60
|
-
try {
|
|
61
|
-
return await this.badgeRepository.findAll();
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
if (isBaseError(error))
|
|
65
|
-
throw error;
|
|
66
|
-
const err = error;
|
|
67
|
-
this.logger.error(`Error while finding all badges: ${err.message}`);
|
|
68
|
-
throw DATABASE_ERROR('finding all badges', err.message);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
findManyByIds(ids) {
|
|
72
|
-
try {
|
|
73
|
-
return this.badgeRepository.findManyByIds(ids);
|
|
74
|
-
}
|
|
75
|
-
catch (error) {
|
|
76
|
-
if (isBaseError(error))
|
|
77
|
-
throw error;
|
|
78
|
-
const err = error;
|
|
79
|
-
this.logger.error(`Error while finding badges by ids ${ids.join(', ')}: ${err.message}`);
|
|
80
|
-
throw DATABASE_ERROR(`finding badges by ids ${ids.join(', ')}`, err.message);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
async create(badgeData) {
|
|
84
|
-
try {
|
|
85
|
-
return await this.badgeRepository.create(badgeData);
|
|
86
|
-
}
|
|
87
|
-
catch (error) {
|
|
88
|
-
if (isBaseError(error))
|
|
89
|
-
throw error;
|
|
90
|
-
if (isDatabaseDriverError(error) && error.code === '23505') {
|
|
91
|
-
this.logger.warn(`Badge with slug ${badgeData.slug ?? 'unknown'} already exists`);
|
|
92
|
-
throw BADGE_ALREADY_EXISTS(badgeData.slug ?? 'unknown');
|
|
93
|
-
}
|
|
94
|
-
const err = error;
|
|
95
|
-
this.logger.error(`Error while creating badge: ${err.message}`);
|
|
96
|
-
throw DATABASE_ERROR('creating badge', err.message);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
async update(id, badgeData) {
|
|
100
|
-
try {
|
|
101
|
-
const updatedBadge = await this.badgeRepository.update(id, badgeData);
|
|
102
|
-
if (!updatedBadge) {
|
|
103
|
-
this.logger.warn(`Badge with id ${id} not found for update`);
|
|
104
|
-
throw BADGE_NOT_FOUND(id, 'id');
|
|
105
|
-
}
|
|
106
|
-
return updatedBadge;
|
|
107
|
-
}
|
|
108
|
-
catch (error) {
|
|
109
|
-
if (isBaseError(error))
|
|
110
|
-
throw error;
|
|
111
|
-
const err = error;
|
|
112
|
-
this.logger.error(`Error while updating badge with id ${id}: ${err.message}`);
|
|
113
|
-
throw DATABASE_ERROR(`updating badge with id ${id}`, err.message);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
async delete(id) {
|
|
117
|
-
try {
|
|
118
|
-
const deleted = await this.badgeRepository.delete(id);
|
|
119
|
-
if (!deleted) {
|
|
120
|
-
this.logger.warn(`Badge with id ${id} not found for deletion`);
|
|
121
|
-
throw BADGE_NOT_FOUND(id, 'id');
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
catch (error) {
|
|
125
|
-
if (isBaseError(error))
|
|
126
|
-
throw error;
|
|
127
|
-
const err = error;
|
|
128
|
-
this.logger.error(`Error while deleting badge with id ${id}: ${err.message}`);
|
|
129
|
-
throw DATABASE_ERROR(`deleting badge with id ${id}`, err.message);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
BadgeService = BadgeService_1 = __decorate([
|
|
134
|
-
Injectable(),
|
|
135
|
-
__param(0, Inject(PostgresBadgeRepository)),
|
|
136
|
-
__metadata("design:paramtypes", [Object])
|
|
137
|
-
], BadgeService);
|
|
138
|
-
export { BadgeService };
|
|
139
|
-
//# sourceMappingURL=badge.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"badge.service.js","sourceRoot":"","sources":["../../src/services/badge.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { IUserRepository } from '../repositories/index.js';
|
|
2
|
-
import { UserEntity } from '../entities/user.entity.js';
|
|
3
|
-
import { BadgeService } from './badge.service.js';
|
|
4
|
-
export declare class UserService {
|
|
5
|
-
private readonly userRepository;
|
|
6
|
-
private readonly badgeService;
|
|
7
|
-
private readonly logger;
|
|
8
|
-
constructor(userRepository: IUserRepository, badgeService: BadgeService);
|
|
9
|
-
findById(id: string): Promise<UserEntity>;
|
|
10
|
-
findByEmail(email: string): Promise<UserEntity>;
|
|
11
|
-
findByRna(rna: string): Promise<UserEntity>;
|
|
12
|
-
findAll(limit?: number, offset?: number): Promise<[UserEntity[], number]>;
|
|
13
|
-
update(id: string, data: Partial<UserEntity>): Promise<UserEntity>;
|
|
14
|
-
delete(id: string): Promise<void>;
|
|
15
|
-
addBadgeToUser(userId: string, badgeId: string): Promise<void>;
|
|
16
|
-
removeBadgeFromUser(userId: string, badgeId: string): Promise<void>;
|
|
17
|
-
incrementImpactScore(userId: string, score: number): Promise<void>;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=user.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"user.service.d.ts","sourceRoot":"","sources":["../../src/services/user.service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAWxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,qBACa,WAAW;IAKpB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAL/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;gBAIjD,cAAc,EAAE,eAAe,EAC/B,YAAY,EAAE,YAAY;IAGvC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAgBzC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAkB/C,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAgB3C,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,CAAC;IAWzE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAoBlE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAejC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB9D,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBnE,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAmBzE"}
|
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
-
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
-
};
|
|
13
|
-
var UserService_1;
|
|
14
|
-
import { Inject, Injectable } from '@nestjs/common';
|
|
15
|
-
import { Logger } from '@volontariapp/logger';
|
|
16
|
-
import { PostgresUserRepository } from '../repositories/postgres-user.repository.js';
|
|
17
|
-
import { UserEntity } from '../entities/user.entity.js';
|
|
18
|
-
import { isBaseError } from '@volontariapp/errors';
|
|
19
|
-
import { calculateHash } from '@volontariapp/crypto';
|
|
20
|
-
import { USER_NOT_FOUND, USER_ALREADY_HAS_BADGE, USER_BADGE_NOT_FOUND, INVALID_RNA, INVALID_SCORE_INCREMENT, DATABASE_ERROR, } from '@volontariapp/errors-nest';
|
|
21
|
-
import { BadgeService } from './badge.service.js';
|
|
22
|
-
let UserService = UserService_1 = class UserService {
|
|
23
|
-
userRepository;
|
|
24
|
-
badgeService;
|
|
25
|
-
logger = new Logger({ context: UserService_1.name });
|
|
26
|
-
constructor(userRepository, badgeService) {
|
|
27
|
-
this.userRepository = userRepository;
|
|
28
|
-
this.badgeService = badgeService;
|
|
29
|
-
}
|
|
30
|
-
async findById(id) {
|
|
31
|
-
try {
|
|
32
|
-
const user = await this.userRepository.findById(id);
|
|
33
|
-
if (!user) {
|
|
34
|
-
this.logger.warn(`User with id ${id} not found`);
|
|
35
|
-
throw USER_NOT_FOUND(id);
|
|
36
|
-
}
|
|
37
|
-
return user;
|
|
38
|
-
}
|
|
39
|
-
catch (error) {
|
|
40
|
-
if (isBaseError(error))
|
|
41
|
-
throw error;
|
|
42
|
-
const err = error;
|
|
43
|
-
this.logger.error(`Error while finding user by id ${id}: ${err.message}`);
|
|
44
|
-
throw DATABASE_ERROR(`finding user by id ${id}`, err.message);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
async findByEmail(email) {
|
|
48
|
-
try {
|
|
49
|
-
const user = await this.userRepository.findByEmail(email);
|
|
50
|
-
if (!user) {
|
|
51
|
-
this.logger.warn(`User with email hash ${calculateHash(email).slice(0, 8)} not found`);
|
|
52
|
-
throw USER_NOT_FOUND(email, 'email');
|
|
53
|
-
}
|
|
54
|
-
return user;
|
|
55
|
-
}
|
|
56
|
-
catch (error) {
|
|
57
|
-
if (isBaseError(error))
|
|
58
|
-
throw error;
|
|
59
|
-
const err = error;
|
|
60
|
-
this.logger.error(`Error while finding user by email hash ${calculateHash(email).slice(0, 8)}: ${err.message}`);
|
|
61
|
-
throw DATABASE_ERROR(`finding user by email ${email}`, err.message);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
async findByRna(rna) {
|
|
65
|
-
try {
|
|
66
|
-
const user = await this.userRepository.findByRna(rna);
|
|
67
|
-
if (!user) {
|
|
68
|
-
this.logger.warn(`User with rna ${rna} not found`);
|
|
69
|
-
throw USER_NOT_FOUND(rna, 'rna');
|
|
70
|
-
}
|
|
71
|
-
return user;
|
|
72
|
-
}
|
|
73
|
-
catch (error) {
|
|
74
|
-
if (isBaseError(error))
|
|
75
|
-
throw error;
|
|
76
|
-
const err = error;
|
|
77
|
-
this.logger.error(`Error while finding user by rna ${rna}: ${err.message}`);
|
|
78
|
-
throw DATABASE_ERROR(`finding user by rna ${rna}`, err.message);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
async findAll(limit, offset) {
|
|
82
|
-
try {
|
|
83
|
-
return await this.userRepository.findAll(limit, offset);
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
if (isBaseError(error))
|
|
87
|
-
throw error;
|
|
88
|
-
const err = error;
|
|
89
|
-
this.logger.error(`Error while finding all users: ${err.message}`);
|
|
90
|
-
throw DATABASE_ERROR('finding all users', err.message);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
async update(id, data) {
|
|
94
|
-
try {
|
|
95
|
-
if (data.rna != null && !UserEntity.isValidRna(data.rna)) {
|
|
96
|
-
this.logger.warn(`Invalid RNA ${data.rna} for user update with id ${id}`);
|
|
97
|
-
throw INVALID_RNA(data.rna);
|
|
98
|
-
}
|
|
99
|
-
const updatedUser = await this.userRepository.update(id, data);
|
|
100
|
-
if (!updatedUser) {
|
|
101
|
-
this.logger.warn(`User with id ${id} not found for update`);
|
|
102
|
-
throw USER_NOT_FOUND(id);
|
|
103
|
-
}
|
|
104
|
-
return updatedUser;
|
|
105
|
-
}
|
|
106
|
-
catch (error) {
|
|
107
|
-
if (isBaseError(error))
|
|
108
|
-
throw error;
|
|
109
|
-
const err = error;
|
|
110
|
-
this.logger.error(`Error while updating user with id ${id}: ${err.message}`);
|
|
111
|
-
throw DATABASE_ERROR(`updating user with id ${id}`, err.message);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
async delete(id) {
|
|
115
|
-
try {
|
|
116
|
-
const deleted = await this.userRepository.delete(id);
|
|
117
|
-
if (!deleted) {
|
|
118
|
-
this.logger.warn(`User with id ${id} not found for deletion`);
|
|
119
|
-
throw USER_NOT_FOUND(id);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
catch (error) {
|
|
123
|
-
if (isBaseError(error))
|
|
124
|
-
throw error;
|
|
125
|
-
const err = error;
|
|
126
|
-
this.logger.error(`Error while deleting user with id ${id}: ${err.message}`);
|
|
127
|
-
throw DATABASE_ERROR(`deleting user with id ${id}`, err.message);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
async addBadgeToUser(userId, badgeId) {
|
|
131
|
-
try {
|
|
132
|
-
const user = await this.findById(userId);
|
|
133
|
-
await this.badgeService.findById(badgeId);
|
|
134
|
-
if (user.badges.some((b) => b.id === badgeId)) {
|
|
135
|
-
this.logger.warn(`User with id ${userId} already has badge with id ${badgeId}`);
|
|
136
|
-
throw USER_ALREADY_HAS_BADGE(userId, badgeId);
|
|
137
|
-
}
|
|
138
|
-
await this.userRepository.addBadgeToUser(userId, badgeId);
|
|
139
|
-
}
|
|
140
|
-
catch (error) {
|
|
141
|
-
if (isBaseError(error))
|
|
142
|
-
throw error;
|
|
143
|
-
const err = error;
|
|
144
|
-
this.logger.error(`Error while adding badge ${badgeId} to user ${userId}: ${err.message}`);
|
|
145
|
-
throw DATABASE_ERROR(`adding badge ${badgeId} to user ${userId}`, err.message);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
async removeBadgeFromUser(userId, badgeId) {
|
|
149
|
-
try {
|
|
150
|
-
const user = await this.findById(userId);
|
|
151
|
-
if (!user.badges.some((badge) => badge.id === badgeId)) {
|
|
152
|
-
this.logger.warn(`User with id ${userId} does not have badge with id ${badgeId} for removal`);
|
|
153
|
-
throw USER_BADGE_NOT_FOUND(userId, badgeId);
|
|
154
|
-
}
|
|
155
|
-
await this.userRepository.removeBadgeFromUser(userId, badgeId);
|
|
156
|
-
}
|
|
157
|
-
catch (error) {
|
|
158
|
-
if (isBaseError(error))
|
|
159
|
-
throw error;
|
|
160
|
-
const err = error;
|
|
161
|
-
this.logger.error(`Error while removing badge ${badgeId} from user ${userId}: ${err.message}`);
|
|
162
|
-
throw DATABASE_ERROR(`removing badge ${badgeId} from user ${userId}`, err.message);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
async incrementImpactScore(userId, score) {
|
|
166
|
-
try {
|
|
167
|
-
if (score <= 0) {
|
|
168
|
-
this.logger.warn(`Invalid score increment of ${score.toString()} for user ${userId}`);
|
|
169
|
-
throw INVALID_SCORE_INCREMENT(score);
|
|
170
|
-
}
|
|
171
|
-
await this.userRepository.incrementImpactScore(userId, score);
|
|
172
|
-
}
|
|
173
|
-
catch (error) {
|
|
174
|
-
if (isBaseError(error))
|
|
175
|
-
throw error;
|
|
176
|
-
const err = error;
|
|
177
|
-
this.logger.error(`Error while incrementing impact score of user ${userId} by ${score.toString()}: ${err.message}`);
|
|
178
|
-
throw DATABASE_ERROR(`incrementing impact score of user ${userId} by ${score.toString()}`, err.message);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
};
|
|
182
|
-
UserService = UserService_1 = __decorate([
|
|
183
|
-
Injectable(),
|
|
184
|
-
__param(0, Inject(PostgresUserRepository)),
|
|
185
|
-
__metadata("design:paramtypes", [Object, BadgeService])
|
|
186
|
-
], UserService);
|
|
187
|
-
export { UserService };
|
|
188
|
-
//# sourceMappingURL=user.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"user.service.js","sourceRoot":"","sources":["../../src/services/user.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { BadgeEntity } from '../../../entities/badge.entity.js';
|
|
2
|
-
export declare class BadgeFactory {
|
|
3
|
-
static build(overrides?: Partial<BadgeEntity>): BadgeEntity;
|
|
4
|
-
static buildMany(count: number, overrides?: Partial<BadgeEntity>): BadgeEntity[];
|
|
5
|
-
static buildInput(overrides?: Partial<Omit<BadgeEntity, 'id'>>): Omit<BadgeEntity, 'id'>;
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=badge.factory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"badge.factory.d.ts","sourceRoot":"","sources":["../../../../src/test/__test-utils__/factories/badge.factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAEhE,qBAAa,YAAY;IACvB,MAAM,CAAC,KAAK,CAAC,SAAS,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,WAAW;IAY/D,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,WAAW,EAAE;IAIpF,MAAM,CAAC,UAAU,CAAC,SAAS,GAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAM,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;CAU7F"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import { BadgeEntity } from '../../../entities/badge.entity.js';
|
|
3
|
-
export class BadgeFactory {
|
|
4
|
-
static build(overrides = {}) {
|
|
5
|
-
const uid = randomUUID().slice(0, 8);
|
|
6
|
-
return Object.assign(new BadgeEntity(), {
|
|
7
|
-
id: randomUUID(),
|
|
8
|
-
name: `Badge ${uid}`,
|
|
9
|
-
slug: `badge-${uid}`,
|
|
10
|
-
description: `Description for badge ${uid}`,
|
|
11
|
-
iconPath: undefined,
|
|
12
|
-
...overrides,
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
static buildMany(count, overrides = {}) {
|
|
16
|
-
return Array.from({ length: count }, () => BadgeFactory.build(overrides));
|
|
17
|
-
}
|
|
18
|
-
static buildInput(overrides = {}) {
|
|
19
|
-
const uid = randomUUID().slice(0, 8);
|
|
20
|
-
return {
|
|
21
|
-
name: `Badge ${uid}`,
|
|
22
|
-
slug: `badge-${uid}`,
|
|
23
|
-
description: `Description for badge ${uid}`,
|
|
24
|
-
iconPath: undefined,
|
|
25
|
-
...overrides,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=badge.factory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"badge.factory.js","sourceRoot":"","sources":["../../../../src/test/__test-utils__/factories/badge.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAEhE,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,KAAK,CAAC,YAAkC,EAAE;QAC/C,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,WAAW,EAAE,EAAE;YACtC,EAAE,EAAE,UAAU,EAAE;YAChB,IAAI,EAAE,SAAS,GAAG,EAAE;YACpB,IAAI,EAAE,SAAS,GAAG,EAAE;YACpB,WAAW,EAAE,yBAAyB,GAAG,EAAE;YAC3C,QAAQ,EAAE,SAAS;YACnB,GAAG,SAAS;SACb,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAa,EAAE,YAAkC,EAAE;QAClE,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,YAA8C,EAAE;QAChE,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,OAAO;YACL,IAAI,EAAE,SAAS,GAAG,EAAE;YACpB,IAAI,EAAE,SAAS,GAAG,EAAE;YACpB,WAAW,EAAE,yBAAyB,GAAG,EAAE;YAC3C,QAAQ,EAAE,SAAS;YACnB,GAAG,SAAS;SACb,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { SignUpCommand, LoginCommand } from '@volontariapp/contracts';
|
|
2
|
-
export declare class CommandsFactory {
|
|
3
|
-
static buildSignUpCommand(overrides?: Partial<SignUpCommand>): SignUpCommand;
|
|
4
|
-
static buildLoginCommand(overrides?: Partial<LoginCommand>): LoginCommand;
|
|
5
|
-
}
|
|
6
|
-
//# sourceMappingURL=commands.factory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commands.factory.d.ts","sourceRoot":"","sources":["../../../../src/test/__test-utils__/factories/commands.factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE3E,qBAAa,eAAe;IAC1B,MAAM,CAAC,kBAAkB,CAAC,SAAS,GAAE,OAAO,CAAC,aAAa,CAAM,GAAG,aAAa;IAchF,MAAM,CAAC,iBAAiB,CAAC,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,YAAY;CAO9E"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from 'node:crypto';
|
|
2
|
-
export class CommandsFactory {
|
|
3
|
-
static buildSignUpCommand(overrides = {}) {
|
|
4
|
-
const uid = randomUUID().slice(0, 8);
|
|
5
|
-
return {
|
|
6
|
-
email: `user-${uid}@example.com`,
|
|
7
|
-
password: 'SecurePassword123!',
|
|
8
|
-
phone: '+33612345678',
|
|
9
|
-
pseudo: `user-${uid}`,
|
|
10
|
-
bio: `Bio for user ${uid}`,
|
|
11
|
-
logoPath: undefined,
|
|
12
|
-
organisationInfo: undefined,
|
|
13
|
-
...overrides,
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
static buildLoginCommand(overrides = {}) {
|
|
17
|
-
return {
|
|
18
|
-
email: 'user@example.com',
|
|
19
|
-
password: 'SecurePassword123!',
|
|
20
|
-
...overrides,
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=commands.factory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commands.factory.js","sourceRoot":"","sources":["../../../../src/test/__test-utils__/factories/commands.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,OAAO,eAAe;IAC1B,MAAM,CAAC,kBAAkB,CAAC,YAAoC,EAAE;QAC9D,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,OAAO;YACL,KAAK,EAAE,QAAQ,GAAG,cAAc;YAChC,QAAQ,EAAE,oBAAoB;YAC9B,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,QAAQ,GAAG,EAAE;YACrB,GAAG,EAAE,gBAAgB,GAAG,EAAE;YAC1B,QAAQ,EAAE,SAAS;YACnB,gBAAgB,EAAE,SAAS;YAC3B,GAAG,SAAS;SACb,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,YAAmC,EAAE;QAC5D,OAAO;YACL,KAAK,EAAE,kBAAkB;YACzB,QAAQ,EAAE,oBAAoB;YAC9B,GAAG,SAAS;SACb,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { UserEntity } from '../../../entities/user.entity.js';
|
|
2
|
-
export declare const generateRandomRna: () => string;
|
|
3
|
-
export declare class UserFactory {
|
|
4
|
-
static build(overrides?: Partial<UserEntity>): UserEntity;
|
|
5
|
-
static buildMany(count: number, overrides?: Partial<UserEntity>): UserEntity[];
|
|
6
|
-
static buildInput(overrides?: Partial<Omit<UserEntity, 'id'>>): Omit<UserEntity, 'id'>;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=user.factory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"user.factory.d.ts","sourceRoot":"","sources":["../../../../src/test/__test-utils__/factories/user.factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAG9D,eAAO,MAAM,iBAAiB,QAAO,MAGpC,CAAC;AAEF,qBAAa,WAAW;IACtB,MAAM,CAAC,KAAK,CAAC,SAAS,GAAE,OAAO,CAAC,UAAU,CAAM,GAAG,UAAU;IAgB7D,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,OAAO,CAAC,UAAU,CAAM,GAAG,UAAU,EAAE;IAIlF,MAAM,CAAC,UAAU,CAAC,SAAS,GAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAM,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;CAc3F"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import { UserEntity } from '../../../entities/user.entity.js';
|
|
3
|
-
import { UserRoles } from '@volontariapp/shared';
|
|
4
|
-
export const generateRandomRna = () => {
|
|
5
|
-
const digits = Math.random().toString().slice(2, 11);
|
|
6
|
-
return `W${digits.padEnd(9, '0')}`;
|
|
7
|
-
};
|
|
8
|
-
export class UserFactory {
|
|
9
|
-
static build(overrides = {}) {
|
|
10
|
-
const uid = randomUUID().slice(0, 8);
|
|
11
|
-
return Object.assign(new UserEntity(), {
|
|
12
|
-
id: randomUUID(),
|
|
13
|
-
email: `user-${uid}@example.com`,
|
|
14
|
-
pseudo: `user-${uid}`,
|
|
15
|
-
logoPath: undefined,
|
|
16
|
-
rna: `W${generateRandomRna()}`,
|
|
17
|
-
bio: `Bio for user ${uid}`,
|
|
18
|
-
role: UserRoles.VOLUNTEER,
|
|
19
|
-
totalImpactScore: 0,
|
|
20
|
-
badges: [],
|
|
21
|
-
...overrides,
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
static buildMany(count, overrides = {}) {
|
|
25
|
-
return Array.from({ length: count }, () => UserFactory.build(overrides));
|
|
26
|
-
}
|
|
27
|
-
static buildInput(overrides = {}) {
|
|
28
|
-
const uid = randomUUID().slice(0, 8);
|
|
29
|
-
return {
|
|
30
|
-
email: `user-${uid}@example.com`,
|
|
31
|
-
pseudo: `user-${uid}`,
|
|
32
|
-
logoPath: undefined,
|
|
33
|
-
rna: `W${generateRandomRna()}`,
|
|
34
|
-
bio: `Bio for user ${uid}`,
|
|
35
|
-
role: UserRoles.VOLUNTEER,
|
|
36
|
-
totalImpactScore: 0,
|
|
37
|
-
badges: [],
|
|
38
|
-
...overrides,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=user.factory.js.map
|