Skip to content

Commit

Permalink
Merge pull request #29 from boostcampwm-2022/feature/QuestRepositoryP…
Browse files Browse the repository at this point in the history
…rotocol

Feature/quest repository protocol
  • Loading branch information
sprituz committed Nov 21, 2022
2 parents 078c39e + 72ecc1f commit ac9696f
Show file tree
Hide file tree
Showing 8 changed files with 96 additions and 26 deletions.
12 changes: 12 additions & 0 deletions .github/workflows/slack-notify.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
on: push
name: Slack Notification Demo
jobs:
slackNotification:
name: Slack Notification
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Slack Notification
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
4 changes: 4 additions & 0 deletions DailyQuest/DailyQuest.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
34ACC364291DEF6100741371 /* FirebaseFirestore in Frameworks */ = {isa = PBXBuildFile; productRef = 34ACC363291DEF6100741371 /* FirebaseFirestore */; };
34ACC366291DEF6100741371 /* FirebaseStorage in Frameworks */ = {isa = PBXBuildFile; productRef = 34ACC365291DEF6100741371 /* FirebaseStorage */; };
34ACC36C291DF0DD00741371 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 34ACC36B291DF0DD00741371 /* GoogleService-Info.plist */; };
34CAE318292B19A3007653AD /* QuestsRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34CAE317292B19A3007653AD /* QuestsRepository.swift */; };
34EE6EB72924C674005AF583 /* QuestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34EE6EB62924C674005AF583 /* QuestView.swift */; };
34EE6EB92924CAA1005AF583 /* QuestViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34EE6EB82924CAA1005AF583 /* QuestViewModel.swift */; };
A50F9A3429266F45005C00FE /* NetworkService.swift in Sources */ = {isa = PBXBuildFile; fileRef = A50F9A3329266F45005C00FE /* NetworkService.swift */; };
Expand Down Expand Up @@ -129,6 +130,7 @@
34ACC34D291DE9C100741371 /* DailyQuestUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyQuestUITests.swift; sourceTree = "<group>"; };
34ACC34F291DE9C100741371 /* DailyQuestUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyQuestUITestsLaunchTests.swift; sourceTree = "<group>"; };
34ACC36B291DF0DD00741371 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
34CAE317292B19A3007653AD /* QuestsRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuestsRepository.swift; sourceTree = "<group>"; };
34EE6EB62924C674005AF583 /* QuestView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuestView.swift; sourceTree = "<group>"; };
34EE6EB82924CAA1005AF583 /* QuestViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuestViewModel.swift; sourceTree = "<group>"; };
A50F9A3329266F45005C00FE /* NetworkService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkService.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -255,6 +257,7 @@
3499551829232A05007AB99E /* Repositories */ = {
isa = PBXGroup;
children = (
34CAE317292B19A3007653AD /* QuestsRepository.swift */,
);
path = Repositories;
sourceTree = "<group>";
Expand Down Expand Up @@ -764,6 +767,7 @@
34A529E7292481E1001BAD34 /* BrowseCoordinator.swift in Sources */,
34A529D329247903001BAD34 /* TabCoordinator.swift in Sources */,
34EE6EB92924CAA1005AF583 /* QuestViewModel.swift in Sources */,
34CAE318292B19A3007653AD /* QuestsRepository.swift in Sources */,
3449AD5D2922197000B87619 /* User.swift in Sources */,
A51F01CD29233ABB0031ECA2 /* RealmUserInfoStorage.swift in Sources */,
A50F9A3429266F45005C00FE /* NetworkService.swift in Sources */,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,18 @@ extension UserQuestEntity {
convenience init(quest: Quest) {
self.init(uuid: quest.uuid,
title: quest.title,
startDay: quest.startDay,
endDay: quest.endDay,
startDay: Date(), // no more use
endDay: Date(), // no more use
currentCount: quest.currentCount,
totalCount: quest.totalCount)
}
}

extension UserQuestEntity {
func toDomain() -> Quest {
return Quest(uuid: uuid,
return Quest(groupId: UUID(), // update here
uuid: uuid,
title: title,
startDay: startDay,
endDay: endDay,
repeat: `repeat`,
currentCount: currentCount,
totalCount: totalCount)
}
Expand Down
4 changes: 1 addition & 3 deletions DailyQuest/DailyQuest/Domain/Entities/Quest.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,9 @@
import Foundation

struct Quest {
let groupId: UUID
let uuid: UUID
let title: String
let startDay: Date
let endDay: Date
let `repeat`: Int
var currentCount: Int
let totalCount: Int

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
//
// QuestsRepository.swift
// DailyQuest
//
// Created by jinwoong Kim on 2022/11/21.
//

import Foundation

import RxSwift

protocol QuestsRepository {
/**
해당 퀘스트를 저장합니다.
- Parameters:
- quest: 저장할 퀘스트입니다.
- Returns: 성공시 Quest를, 실패시, error를 방출하는 Observable입니다.
*/
func save(with quest: [Quest]) -> Single<[Quest]>

/**
해당 날짜의 퀘스트 배열을 받아옵니다.
- Parameters:
- date: 받아오길 원하는 날짜입니다.
- Returns: Quest의 배열을 방출하는 Observable입니다. 비어있다면 비어있는 배열을 방출합니다.
*/
func fetch(by date: Date) -> Observable<[Quest]>

/**
해당 날짜의 퀘스트 값(`currentCount`)을 업데이트 합니다.
- Parameters:
- quest: 업데이트될 퀘스트입니다.
- Returns: 성공시 Quest를, 실패시 error를 방출하는 Observable입니다.
*/
func update(with quest: Quest) -> Single<Quest>

/**
해당 날짜에 해당하는 퀘스트의 값을 업데이트 합니다.
- Parameters:
- questId: 삭제하고자 하는 퀘스트의 id입니다.
- Returns: 성공시 해당 Quest를, 실패시 error를 방출하는 Observable입니다.
*/
func delete(with questId: UUID) -> Single<Quest>

/**
해당 group의 Quest를 모두 삭제합니다.
- Parameters:
- groupId: 삭제하고자 하는 퀘스트 그룹의 id입니다.
- Returns: 성공시 해당 Quest 배열을, 실패시 error를 방출하는 Observable입니다.
*/
func deleteAll(with groupId: UUID) -> Single<[Quest]>
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,26 +12,26 @@ import RxSwift
final class BrowseViewModel {
let user1 = User(uuid: "", nickName: "jinwoong", profile: Data(), backgroundImage: Data(), description: "")
let quests1 = [
Quest(uuid: UUID(), title: "물마시기", startDay: Date(), endDay: Date(), repeat: 1, currentCount: 2, totalCount: 5),
Quest(uuid: UUID(), title: "코딩하기", startDay: Date(), endDay: Date(), repeat: 1, currentCount: 0, totalCount: 10)
Quest(groupId: UUID(), uuid: UUID(), title: "물마시기", currentCount: 2, totalCount: 5),
Quest(groupId: UUID(),uuid: UUID(), title: "코딩하기", currentCount: 0, totalCount: 10)
]

let user2 = User(uuid: "", nickName: "someone", profile: Data(), backgroundImage: Data(), description: "")
let quests2 = [
Quest(uuid: UUID(), title: "물마시기", startDay: Date(), endDay: Date(), repeat: 1, currentCount: 4, totalCount: 5),
Quest(uuid: UUID(), title: "책읽기", startDay: Date(), endDay: Date(), repeat: 1, currentCount: 9, totalCount: 20),
Quest(uuid: UUID(), title: "달리기", startDay: Date(), endDay: Date(), repeat: 1, currentCount: 4, totalCount: 9),
Quest(uuid: UUID(), title: "잠자기", startDay: Date(), endDay: Date(), repeat: 1, currentCount: 1, totalCount: 1)
Quest(groupId: UUID(),uuid: UUID(), title: "물마시기", currentCount: 4, totalCount: 5),
Quest(groupId: UUID(),uuid: UUID(), title: "책읽기", currentCount: 9, totalCount: 20),
Quest(groupId: UUID(),uuid: UUID(), title: "달리기", currentCount: 4, totalCount: 9),
Quest(groupId: UUID(),uuid: UUID(), title: "잠자기", currentCount: 1, totalCount: 1)
]

let user3 = User(uuid: "", nickName: "Max...", profile: Data(), backgroundImage: Data(), description: "")
let quests3 = [
Quest(uuid: UUID(), title: "물마시기", startDay: Date(), endDay: Date(), repeat: 1, currentCount: 4, totalCount: 5),
Quest(uuid: UUID(), title: "그림 그리기", startDay: Date(), endDay: Date(), repeat: 1, currentCount: 1, totalCount: 2),
Quest(uuid: UUID(), title: "달리기", startDay: Date(), endDay: Date(), repeat: 1, currentCount: 4, totalCount: 9),
Quest(uuid: UUID(), title: "책읽기", startDay: Date(), endDay: Date(), repeat: 1, currentCount: 1, totalCount: 1),
Quest(uuid: UUID(), title: "잠자기", startDay: Date(), endDay: Date(), repeat: 1, currentCount: 1, totalCount: 1),
Quest(uuid: UUID(), title: "행복하기", startDay: Date(), endDay: Date(), repeat: 1, currentCount: 0, totalCount: 1)
Quest(groupId: UUID(),uuid: UUID(), title: "물마시기", currentCount: 4, totalCount: 5),
Quest(groupId: UUID(),uuid: UUID(), title: "그림 그리기", currentCount: 1, totalCount: 2),
Quest(groupId: UUID(),uuid: UUID(), title: "달리기", currentCount: 4, totalCount: 9),
Quest(groupId: UUID(),uuid: UUID(), title: "책읽기", currentCount: 1, totalCount: 1),
Quest(groupId: UUID(),uuid: UUID(), title: "잠자기", currentCount: 1, totalCount: 1),
Quest(groupId: UUID(),uuid: UUID(), title: "행복하기", currentCount: 0, totalCount: 1)
]

let data: Observable<[(User, [Quest])]>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ struct QuestCellPreview: PreviewProvider{
static var previews: some View {
UIViewPreview {
let cell = QuestCell(frame: .zero)
let quest = Quest(uuid: UUID(), title: "my quest", startDay: Date(), endDay: Date(), repeat: 1, currentCount: 2, totalCount: 5)
let quest = Quest(groupId: UUID(), uuid: UUID(), title: "my quest", currentCount: 2, totalCount: 5)

cell.setup(with: quest)
return cell
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ import RxSwift

final class QuestViewModel {
let quests = [
Quest(uuid: UUID(), title: "물마시기", startDay: Date(), endDay: Date(), repeat: 1, currentCount: 4, totalCount: 5),
Quest(uuid: UUID(), title: "책읽기", startDay: Date(), endDay: Date(), repeat: 1, currentCount: 9, totalCount: 20),
Quest(uuid: UUID(), title: "달리기", startDay: Date(), endDay: Date(), repeat: 1, currentCount: 4, totalCount: 9),
Quest(uuid: UUID(), title: "잠자기", startDay: Date(), endDay: Date(), repeat: 1, currentCount: 1, totalCount: 1)
Quest(groupId: UUID(), uuid: UUID(), title: "물마시기", currentCount: 4, totalCount: 5),
Quest(groupId: UUID(), uuid: UUID(), title: "책읽기", currentCount: 9, totalCount: 20),
Quest(groupId: UUID(), uuid: UUID(), title: "달리기", currentCount: 4, totalCount: 9),
Quest(groupId: UUID(), uuid: UUID(), title: "잠자기", currentCount: 1, totalCount: 1)
]

let data: Observable<[Quest]>
Expand Down

0 comments on commit ac9696f

Please sign in to comment.