Firestore 관련 코드 작성 시 Data 타입을 사용하지 않고, 커스텀 타입으로 사용하기 위해 메서드 내부 로직을 변경하여, 아래 테스트 항목을 통해 동작을 확인합니다.
순서 | 항목 | 홍식 확인 | 광조 확인 |
---|---|---|---|
회원 가입 및 사진 관련 항목 | O | ||
1 | 회원 가입 시 Firestore 에서 Users 컬렉션의 문서를 회원가입 시 입력한 이메일로 생성합니다. | O | O |
2 | 처음 사진 추가 시 Firestore 에서 Users/(로그인한 이메일)/Photo 컬렉션의 문서ID가 “1000” 으로 생성됩니다. | O | O |
3 | 사진 추가 시 Storage 에서 자신의 이메일로 생성된 폴더 하위에 랜덤 UUID를 갖는 폴더를 생성하고, 포토 이미지와 태그 이미지를 저장합니다. | O | O |
4 | 이후 사진 추가 시 1000 에서 +1 씩 증가된 ID를 갖는 문서를 생성합니다. | O | O |
5 | 사진 수정 시 해당 문서의 필드 데이터가 수정됩니다. | O | O |
6 | 사진 삭제 시 해당 문서가 삭제됩니다. | O | O |
포즈 추천 관련 항목 | |||
1 | 포즈 추천 페이지 전환 시 Firestore의 /Users/(로그인한 이메일)/Image 컬렉션에 랜덤한 ID를 갖는 문서들이 생성됩니다. | O | O |
2 | 랜덤 포즈 페이지에서 북마크 버튼을 눌렀을 때, Image 컬렉션의 해당 문서 isSelected 필드의 값이 true 로 변경됩니다. | O | O |
3 | 랜덤 포즈 페이지에서 북마크 버튼을 취소할 때, Image 컬렉션의 해당 문서 isSelected 필드의 값이 false 로 변경됩니다. | O | O |
4 | 찜한 포즈 페이지에서 포즈 상세보기 시 우측 상단의 별 버튼을 눌렀을 때, Image 컬렉션의 해당 문서 isSelected 필드의 값이 false 로 변경됩니다. | O | O |
5 | 찜한 포즈 페이지에서 포즈 상세보기 시 우측 상단의 별 버튼이 비활성화일 때, Image 컬렉션의 해당 문서 isSelected 필드의 값이 true 로 변경됩니다. | O | O |
유저 데이터 관련 항목 | |||
1 | 프로필 수정 시 Users 컬렉션의 로그인한 이메일 ID를 갖는 문서의 nickname, imageURL 필드가 변경됩니다. | O | O |
2 | 프로필 이미지 저장 시 Storage 에서 로그인한 이메일로 생성된 폴더 하위에 profile 이라는 폴더를 생성하고 해당 폴더에 이미지를 저장합니다. | O | O |
3 | 회원 탈퇴 시 Users 컬렉션의 로그인한 이메일 ID 문서 및 하위 문서(Photo, Image)들이 모두 삭제됩니다. | O | O |
4 | 회원 탈퇴 시 Storage 에서 로그인한 이메일로 생성된 폴더 및 하위 폴더의 포토 이미지, 태그 이미지가 모두 삭제됩니다. | O | O |
FirestoreManager.swift
fetchUserDocumentFromFirestore
메서드를 호출해서 처리합니다.createUserDocument(email:user:)
메서드를 호출해서 처리합니다.updateUserDocument(user:)
메서드를 호출해서 처리합니다.deleteUserDocument
메서드를 호출해서 처리합니다.fetchPhotoFromFirestore(completion:)
메서드를 호출해서 처리합니다.createPhotoDocument(photo:completion:)
메서드 하나를 호출해서 처리합니다.deletePhotoDocument(id:)
메서드를 호출해서 처리합니다.createRecommendPoseDocument(imageData:)
메서드를 호출해서 처리합니다.makePoseData
메서드를 호출해서 실제 문서 데이터를 생성합니다. (makePoseData
메서드는 포즈 추천 페이지의 viewDidLoad
에서 호출합니다.)StorageManager.swift
deleteImage(imageURL:completion:)
메서드를 호출해서 처리합니다.downloadImage(urlString:completion:)
메서드를 호출해서 처리합니다.
uploadPhotoImage(image:completion)
메서드를 호출해서 처리합니다.deleteAllImagesFromStorage(photo:completion:)
메서드를 호출해서 처리합니다.uploadUserImage(image:completion)
메서드를 호출해서 처리합니다.https://firebase.google.com/docs/auth/ios/manage-users?hl=ko#re-authenticate_a_user