• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

khu-khlug / sight-backend / 13069177905

31 Jan 2025 08:36AM UTC coverage: 57.736% (+0.06%) from 57.673%
13069177905

push

github

web-flow
fix: state 및 active 프로퍼티의 이름을 적절하게 수정 (#96)

524 of 1442 branches covered (36.34%)

Branch coverage included in aggregate %.

6 of 14 new or added lines in 7 files covered. (42.86%)

30 existing lines in 4 files now uncovered.

1409 of 1906 relevant lines covered (73.92%)

7.03 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/app/application/user/query/listUser/ListUserQueryHandler.ts
1
import { EntityRepository } from '@mikro-orm/mysql';
2
import { InjectRepository } from '@mikro-orm/nestjs';
×
3
import { Injectable } from '@nestjs/common';
×
4
import { IQueryHandler, QueryHandler } from '@nestjs/cqrs';
×
5

×
6
import { ListUserQuery } from '@khlug/app/application/user/query/listUser/ListUserQuery';
7
import { ListUserQueryResult } from '@khlug/app/application/user/query/listUser/ListUserQueryResult';
8
import { UserWithTagListView } from '@khlug/app/application/user/query/view/UserListView';
×
9

10
import { User } from '@khlug/app/domain/user/model/User';
11

×
12
@Injectable()
×
13
@QueryHandler(ListUserQuery)
14
export class ListUserQueryHandler
15
  implements IQueryHandler<ListUserQuery, ListUserQueryResult>
16
{
17
  constructor(
18
    @InjectRepository(User)
19
    private readonly userRepository: EntityRepository<User>,
20
  ) {}
21

22
  async execute(query: ListUserQuery): Promise<ListUserQueryResult> {
23
    const {
24
      email,
NEW
25
      phone,
×
26
      name,
27
      number,
NEW
28
      college,
×
NEW
29
      grade,
×
NEW
30
      studentStatus,
×
NEW
31
      limit,
×
32
      offset,
33
    } = query;
34

UNCOV
35
    const qb = this.userRepository.createQueryBuilder('user');
×
UNCOV
36

×
37
    if (email) {
38
      qb.andWhere('email LIKE ?', [`%${email}%`]);
39
    }
40

×
UNCOV
41
    if (phone) {
×
42
      qb.andWhere('phone LIKE ?', [`%${phone}%`]);
43
    }
44

45
    if (name) {
×
UNCOV
46
      qb.andWhere('realname LIKE ?', [`%${name}%`]);
×
47
    }
48

49
    if (number) {
50
      qb.andWhere('number LIKE ?', [`%${number}%`]);
×
UNCOV
51
    }
×
52

53
    if (college) {
54
      qb.andWhere('college LIKE ?', [`%${college}%`]);
55
    }
×
UNCOV
56

×
57
    if (grade) {
58
      qb.andWhere('grade = ?', [grade]);
59
    }
60

×
NEW
61
    if (studentStatus) {
×
62
      qb.andWhere('state = ?', [studentStatus]);
63
    }
64

65
    const [users, count] = await qb
×
66
      .limit(limit)
67
      .offset(offset)
UNCOV
68
      .orderBy({ id: 'ASC' })
×
69
      .getResultAndCount();
70

UNCOV
71
    const listView: UserWithTagListView = {
×
UNCOV
72
      count,
×
UNCOV
73
      users: users.map((user) => {
×
74
        const normalTags: string[] = [];
×
75
        const redTags: string[] = [];
UNCOV
76

×
77
        if (user.needAuth()) {
×
78
          redTags.push('미인증');
UNCOV
79
        }
×
80

81
        if (user.point < 0) {
82
          redTags.push('-exp');
83
        }
84

85
        return {
86
          id: user.id,
87
          name: user.name,
88
          profile: {
89
            name: user.profile.name,
90
            college: user.profile.college,
91
            grade: user.profile.grade,
92
            number: user.profile.number,
93
            email: user.profile.email,
94
            phone: user.profile.phone,
95
            homepage: user.profile.homepage,
96
            language: user.profile.language,
97
            prefer: user.profile.prefer,
98
          },
99
          admission: user.admission,
100
          studentStatus: user.studentStatus,
101
          point: user.point,
102
          status: user.status,
103
          manager: user.manager,
104
          slack: user.slack,
105
          rememberToken: user.rememberToken,
106
          khuisAuthAt: user.khuisAuthAt,
107
          returnAt: user.returnAt,
108
          returnReason: user.returnReason,
109
          lastLoginAt: user.lastLoginAt,
110
          lastEnterAt: user.lastEnterAt,
111
          createdAt: user.createdAt,
UNCOV
112
          updatedAt: user.updatedAt,
×
113
          normalTags,
114
          redTags,
UNCOV
115
        };
×
116
      }),
117
    };
118
    return new ListUserQueryResult(listView);
119
  }
120
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc