Skip to content

Commit

Permalink
Promisfying toPersistence mapping methods (user,post)
Browse files Browse the repository at this point in the history
  • Loading branch information
devbenho committed Jun 1, 2024
1 parent edfa547 commit 92bd7a9
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 58 deletions.
14 changes: 12 additions & 2 deletions server/src/infrastructure/posts/post.mapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ import {
LikePostMapper,
LikePostPersistence,
} from '@infrastructure/like-posts';
import { MapperConfig } from '@infrastructure/shared/persistence/mapper.config';
import { Nullable } from '@domain/shared/types';

class PostMapper {
public static toDomain(
Expand Down Expand Up @@ -59,8 +57,20 @@ class PostMapper {
postPersistence.createdAt = domain.createdAt;
postPersistence.deletedAt = domain.deletedAt;

if (domainEntities?.author) {
postPersistence.author = UserMapper.toPersistence(domainEntities.author);
}
postPersistence.likes = domainEntities?.likes
? Promise.all(domainEntities.likes.map(like => LikePostMapper.toPersistence(like)))
: Promise.resolve([]);

postPersistence.comments = domainEntities?.comments
? Promise.all(domainEntities.comments.map(comment => CommentMapper.toPersistence(comment)))
: Promise.resolve([]);

return Promise.resolve(postPersistence);
}

}

export { PostMapper };
77 changes: 21 additions & 56 deletions server/src/infrastructure/users/user.mapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class UserMapper {
);
}

static async toPersistence(
static toPersistence(
domain: User,
domainEntities?: {
comments?: Comment[];
Expand All @@ -85,68 +85,33 @@ class UserMapper {
userPersistence.updatedAt = domain.updatedAt;
userPersistence.deletedAt = domain.deletedAt;

if (domainEntities) {
if (domainEntities.comments) {
userPersistence.comments = Promise.resolve(
await Promise.all(
domainEntities.comments.map(comment =>
CommentMapper.toPersistence(comment),
),
),
);
}
userPersistence.comments = domainEntities?.comments
? Promise.all(domainEntities.comments.map(comment => CommentMapper.toPersistence(comment)))
: Promise.resolve([]);

if (domainEntities.likedComments) {
userPersistence.likedComments = Promise.resolve(
await Promise.all(
domainEntities.likedComments.map(likeComment =>
LikeCommentMapper.toPersistence(likeComment),
),
),
);
}
userPersistence.likedComments = domainEntities?.likedComments
? Promise.all(domainEntities.likedComments.map(likeComment => LikeCommentMapper.toPersistence(likeComment)))
: Promise.resolve([]);

if (domainEntities.posts) {
userPersistence.posts = Promise.resolve(
await Promise.all(
domainEntities.posts.map(post => PostMapper.toPersistence(post)),
),
);
}
userPersistence.posts = domainEntities?.posts
? Promise.all(domainEntities.posts.map(post => PostMapper.toPersistence(post)))
: Promise.resolve([]);

if (domainEntities.likedPosts) {
userPersistence.likedPosts = Promise.resolve(
await Promise.all(
domainEntities.likedPosts.map(likePost =>
LikePostMapper.toPersistence(likePost),
),
),
);
}
userPersistence.likedPosts = domainEntities?.likedPosts
? Promise.all(domainEntities.likedPosts.map(likePost => LikePostMapper.toPersistence(likePost)))
: Promise.resolve([]);

if (domainEntities.replies) {
userPersistence.replies = Promise.resolve(
await Promise.all(
domainEntities.replies.map(reply =>
ReplyMapper.toPersistence(reply),
),
),
);
}
userPersistence.replies = domainEntities?.replies
? Promise.all(domainEntities.replies.map(reply => ReplyMapper.toPersistence(reply)))
: Promise.resolve([]);

if (domainEntities.likedReplies) {
userPersistence.likedReplies = Promise.resolve(
await Promise.all(
domainEntities.likedReplies.map(likeReply =>
LikeReplyMapper.toPersistence(likeReply),
),
),
);
}
}
userPersistence.likedReplies = domainEntities?.likedReplies
? Promise.all(domainEntities.likedReplies.map(likeReply => LikeReplyMapper.toPersistence(likeReply)))
: Promise.resolve([]);

return userPersistence;
return Promise.resolve(userPersistence);
}

}

export { UserMapper };

0 comments on commit 92bd7a9

Please sign in to comment.