Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Angular Router
- summary
- Router
- 호버
- 스크롤 이벤트 감지
- ApexChart
- angular animation
- Oracle LISTAGG 사용 예시
- mysql if
- flex-1
- 앵귤러 모달
- route
- 모달
- 스크롤 이벤트
- scroll
- egov spring ajax 사용 예시
- modal
- 옵저버블
- 앵귤러 애니메이션
- angular modal
- Ionic modal
- 아이오닉 스크롤 이벤트
- angular button
- formgroup
- 검색
- angular route
- prisma
- TAILWIND
- ajax 사용 예시
- 셀렉트박스 커스텀
Archives
- Today
- Total
깜놀하는 해므찌로
Prisma Craete Log service search query / 쌓는 방식 로그 본문
반응형
SMALL
async search(option: PaginationInfluencerRequestOptionDTO): Promise<
[
InfluencerRequest[],
number,
{
totalCount: number;
pendingCount: number;
returnedCount: number;
completedCount: number;
}
]
> {
// Define the 'where' condition for filtering
const where: Prisma.InfluencerRequestWhereInput = {
content: { contains: option.query },
deletedAt: null || undefined,
};
// Define the 'orderBy' condition for sorting
const orderBy: Prisma.InfluencerRequestOrderByWithAggregationInput = {};
orderBy[option.orderBy] = option.align;
// Group the influencer requests by userId
const userGroup = await this.prismaService.influencerRequest.groupBy({
by: ['userId'],
});
// Extract the userIds from the grouped data
const userIds = userGroup.map((group) => group.userId);
// Fetch influencer requests for each userId
const influencerRequests = await Promise.all(
userIds.map(async (userId) => {
const userRequests = await this.prismaService.influencerRequest.findMany({
where: {
...where,
userId,
},
orderBy,
include: {
user: true,
logs: true,
},
take: 1,
});
return userRequests[0];
})
);
let filterEntities;
if (option.status !== 'ALL') {
// Filter influencer requests based on the provided status option
filterEntities = influencerRequests.filter(
(item) => item.status === option.status
);
} else {
// If status is 'ALL', include all influencer requests without filtering
filterEntities = influencerRequests;
}
const count = filterEntities.length;
const counts = {
// Calculate the total count and count for each status
totalCount: filterEntities.length,
pendingCount: influencerRequests
.filter((item) => item && item.status === InfluencerRequestStatus.PENDING)
.filter(Boolean).length,
returnedCount: influencerRequests
.filter((item) => item && item.status === InfluencerRequestStatus.RETURN)
.filter(Boolean).length,
completedCount: influencerRequests
.filter((item) => item && item.status === InfluencerRequestStatus.COMPLETED)
.filter(Boolean).length,
};
// Return the filtered influencer requests, count, and counts object
return [filterEntities, count, counts];
}
반응형
LIST
'IT' 카테고리의 다른 글
Typescript Angular Row / pageNo / pageNumber / pagination 함수 예시 (0) | 2023.08.29 |
---|---|
Prisma in / TypeScript Set 중복 제거 예시 (0) | 2023.08.29 |
Prisma Log Tx Transaction control 프리즈마 로그 트랜잭션 핸들링 예시 (0) | 2023.08.28 |
Prisma include 작성자 사용자 정보 함께 조회 (0) | 2023.08.25 |
Angular tailwind CSS button disable example / button disabled (0) | 2023.08.24 |