Skip to content

Commit e9ef15a

Browse files
committed
(Feat) UserRepository 구상체 추가 [prgrms-be-devcourse#7]
* On branch : develop # 메모리 저장소 : UserMemoryRepository # 파일 저장소 : UserFileRepository * Changes to be committed: Modified : UserMemoryRepository.java, UserFileRepository.java
1 parent efdd8c5 commit e9ef15a

2 files changed

Lines changed: 94 additions & 0 deletions

File tree

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package com.example.voucherproject.user.repository;
2+
3+
import com.example.voucherproject.common.enums.UserType;
4+
import com.example.voucherproject.common.file.CSVReader;
5+
import com.example.voucherproject.common.file.CSVWriter;
6+
import com.example.voucherproject.user.domain.User;
7+
import lombok.RequiredArgsConstructor;
8+
import lombok.extern.slf4j.Slf4j;
9+
import org.springframework.context.annotation.Primary;
10+
import org.springframework.stereotype.Component;
11+
import org.springframework.stereotype.Repository;
12+
13+
import java.util.ArrayList;
14+
import java.util.List;
15+
import java.util.UUID;
16+
17+
@Slf4j
18+
@Repository
19+
@Primary
20+
@RequiredArgsConstructor
21+
public class UserFileRepository implements UserRepository{
22+
// TODO: file io interface로 변경하기
23+
private CSVReader csvReader = new CSVReader();
24+
private CSVWriter csvWriter = new CSVWriter();
25+
26+
private final String ALL_USER_LIST = "user_allList.csv";
27+
private final String BLACK_USER_LIST = "user_blacklist.csv";
28+
29+
@Override
30+
public User save(User user) {
31+
switch(user.getType()){
32+
case BLACK:
33+
csvWriter.userToCSV(user,BLACK_USER_LIST);
34+
case NORMAL:
35+
csvWriter.userToCSV(user,ALL_USER_LIST);
36+
break;
37+
default:
38+
log.warn("[유저 저장 실패] 사유 : 유저 타입 미지정 -> See 유저정보 -> " + user);
39+
break;
40+
}
41+
return user;
42+
}
43+
44+
@Override
45+
public List<User> getUserList(UserType type) {
46+
switch(type){
47+
case BLACK:
48+
return getList(BLACK_USER_LIST);
49+
case NORMAL:
50+
return getList(ALL_USER_LIST);
51+
default:
52+
log.warn("[유저 리스트 불러오기 실패] 사유 : 존재하지 않는 유저타입");
53+
return null;
54+
}
55+
}
56+
57+
// TODO: 여기서 유저를 생성해도 될까? -> 나는 된다고 생각함
58+
public List<User> getList(String listType) {
59+
List<User> users = new ArrayList<>();
60+
61+
var allUser = csvReader.readUser(listType);
62+
allUser.stream().forEach(user ->{
63+
var userUUID = UUID.fromString(user.get(0));
64+
var userType = UserType.valueOf(user.get(1));
65+
var userName = user.get(2);
66+
users.add(new User(userUUID, userType, userName));
67+
});
68+
return users;
69+
}
70+
71+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.example.voucherproject.user.repository;
2+
import com.example.voucherproject.common.enums.UserType;
3+
import com.example.voucherproject.user.domain.User;
4+
import org.springframework.context.annotation.Primary;
5+
import org.springframework.stereotype.Repository;
6+
import java.util.*;
7+
8+
@Repository
9+
public class UserMemoryRepository implements UserRepository{
10+
private final Map<UUID, User> userMap = new HashMap<>();
11+
12+
@Override
13+
public User save(User user) {
14+
userMap.put(user.getId(), user);
15+
return user;
16+
}
17+
18+
@Override
19+
public List<User> getUserList(UserType type) {
20+
return null;
21+
}
22+
23+
}

0 commit comments

Comments
 (0)