Skip to content

Commit 6fa2746

Browse files
committedMay 14, 2023
fix: get entity props
1 parent c954323 commit 6fa2746

File tree

6 files changed

+11
-15
lines changed

6 files changed

+11
-15
lines changed
 

‎package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
"rxjs": "^7.2.0",
6464
"slonik": "^31.2.4",
6565
"uuid": "^9.0.0",
66-
"zod": "^3.20.6"
66+
"zod": "^3.21.4"
6767
},
6868
"devDependencies": {
6969
"@nestjs/cli": "^9.0.0",
@@ -108,6 +108,6 @@
108108
"testEnvironment": "node"
109109
},
110110
"volta": {
111-
"node": "16.16.0"
111+
"node": "20.1.0"
112112
}
113113
}

‎src/libs/ddd/entity.base.ts

+4-8
Original file line numberDiff line numberDiff line change
@@ -92,21 +92,17 @@ export abstract class Entity<EntityProps> {
9292
}
9393

9494
/**
95-
* Returns current **copy** of entity's props.
96-
* Modifying entity's state won't change previously created
97-
* copy returned by this method since it doesn't return a reference.
98-
* If a reference to a specific property is needed create a getter in parent class.
99-
*
95+
* Returns entity properties.
10096
* @return {*} {Props & EntityProps}
10197
* @memberof Entity
10298
*/
103-
public getPropsCopy(): EntityProps & BaseEntityProps {
104-
const propsCopy = structuredClone({
99+
public getProps(): EntityProps & BaseEntityProps {
100+
const propsCopy = {
105101
id: this._id,
106102
createdAt: this._createdAt,
107103
updatedAt: this._updatedAt,
108104
...this.props,
109-
});
105+
};
110106
return Object.freeze(propsCopy);
111107
}
112108

‎src/modules/user/database/user.repository.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ export class UserRepository
4949
}
5050

5151
async updateAddress(user: UserEntity): Promise<void> {
52-
const address = user.getPropsCopy().address;
52+
const address = user.getProps().address;
5353
const statement = sql.type(userSchema)`
5454
UPDATE "users" SET
5555
street = ${address.street}, country = ${address.country}, "postalCode" = ${address.postalCode}

‎src/modules/user/domain/user.entity.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export class UserEntity extends AggregateRoot<UserProps> {
3636
/* You can create getters only for the properties that you need to
3737
access and leave the rest of the properties private to keep entity
3838
encapsulated. To get all entity properties (for saving it to a
39-
database or mapping a response) use .getPropsCopy() method
39+
database or mapping a response) use .getProps() method
4040
defined in a EntityBase parent class */
4141
get role(): UserRoles {
4242
return this.props.role;

‎src/modules/user/user.mapper.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export class UserMapper
1717
implements Mapper<UserEntity, UserModel, UserResponseDto>
1818
{
1919
toPersistence(entity: UserEntity): UserModel {
20-
const copy = entity.getPropsCopy();
20+
const copy = entity.getProps();
2121
const record: UserModel = {
2222
id: copy.id,
2323
createdAt: copy.createdAt,
@@ -50,7 +50,7 @@ export class UserMapper
5050
}
5151

5252
toResponse(entity: UserEntity): UserResponseDto {
53-
const props = entity.getPropsCopy();
53+
const props = entity.getProps();
5454
const response = new UserResponseDto(entity);
5555
response.email = props.email;
5656
response.country = props.address.country;

‎src/modules/wallet/wallet.mapper.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { WalletModel, walletSchema } from './database/wallet.repository';
66
@Injectable()
77
export class WalletMapper implements Mapper<WalletEntity, WalletModel> {
88
toPersistence(entity: WalletEntity): WalletModel {
9-
const copy = entity.getPropsCopy();
9+
const copy = entity.getProps();
1010
const record: WalletModel = {
1111
id: copy.id,
1212
createdAt: copy.createdAt,

0 commit comments

Comments
 (0)
Failed to load comments.