Skip to content

Commit

Permalink
[feat] NetworkService protocol
Browse files Browse the repository at this point in the history
Co-Authored-By: Dayeon Lee <43718982+sprituz@users.noreply.github.com>
  • Loading branch information
Jeonhui and sprituz committed Nov 21, 2022
1 parent dc4e6d2 commit 078c39e
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 1 deletion.
4 changes: 4 additions & 0 deletions DailyQuest/DailyQuest.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
A50F9A3429266F45005C00FE /* NetworkService.swift in Sources */ = {isa = PBXBuildFile; fileRef = A50F9A3329266F45005C00FE /* NetworkService.swift */; };
A50F9A3729266F6F005C00FE /* FirebaseService.swift in Sources */ = {isa = PBXBuildFile; fileRef = A50F9A3629266F6F005C00FE /* FirebaseService.swift */; };
A50F9A3929266FD8005C00FE /* Date+.swift in Sources */ = {isa = PBXBuildFile; fileRef = A50F9A3829266FD8005C00FE /* Date+.swift */; };
A50F9A3F292679BC005C00FE /* NetworkConfigure.swift in Sources */ = {isa = PBXBuildFile; fileRef = A50F9A3E292679BC005C00FE /* NetworkConfigure.swift */; };
A51189C329226E66008A9D33 /* UserQuestEntity+Mapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = A51189C229226E66008A9D33 /* UserQuestEntity+Mapping.swift */; };
A51F01C82923392F0031ECA2 /* UserInfoStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = A51F01C72923392F0031ECA2 /* UserInfoStorage.swift */; };
A51F01CA2923397E0031ECA2 /* UserInfoEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = A51F01C92923397E0031ECA2 /* UserInfoEntity.swift */; };
Expand Down Expand Up @@ -133,6 +134,7 @@
A50F9A3329266F45005C00FE /* NetworkService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkService.swift; sourceTree = "<group>"; };
A50F9A3629266F6F005C00FE /* FirebaseService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirebaseService.swift; sourceTree = "<group>"; };
A50F9A3829266FD8005C00FE /* Date+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Date+.swift"; sourceTree = "<group>"; };
A50F9A3E292679BC005C00FE /* NetworkConfigure.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkConfigure.swift; sourceTree = "<group>"; };
A51189C229226E66008A9D33 /* UserQuestEntity+Mapping.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserQuestEntity+Mapping.swift"; sourceTree = "<group>"; };
A51F01C72923392F0031ECA2 /* UserInfoStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserInfoStorage.swift; sourceTree = "<group>"; };
A51F01C92923397E0031ECA2 /* UserInfoEntity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserInfoEntity.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -465,6 +467,7 @@
isa = PBXGroup;
children = (
A50F9A3329266F45005C00FE /* NetworkService.swift */,
A50F9A3E292679BC005C00FE /* NetworkConfigure.swift */,
A50F9A3529266F5C005C00FE /* FirebaseService */,
);
path = Infrastructure;
Expand Down Expand Up @@ -757,6 +760,7 @@
3499551E29233DEF007AB99E /* QuestCell.swift in Sources */,
34A529DC29247BB6001BAD34 /* HomeSceneDIContainer.swift in Sources */,
34874AA229250C43000570DF /* UIButton+.swift in Sources */,
A50F9A3F292679BC005C00FE /* NetworkConfigure.swift in Sources */,
34A529E7292481E1001BAD34 /* BrowseCoordinator.swift in Sources */,
34A529D329247903001BAD34 /* TabCoordinator.swift in Sources */,
34EE6EB92924CAA1005AF583 /* QuestViewModel.swift in Sources */,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Firebase
import FirebaseAuth
import FirebaseFirestore

final class FirebaseService {
final class FirebaseService: NetworkService {
static let shared = FirebaseService()
private let auth: Auth
private let db: Firestore
Expand All @@ -24,5 +24,45 @@ final class FirebaseService {
uid = auth.currentUser?.uid
}

private func documnetReference(userCase: UserCase, access: Access) -> DocumentReference? {
switch userCase {
case .currentUser:
guard let currentUserUid = uid else { return nil }
return db.collection("users").document(currentUserUid)
case let .anotherUser(uid):
return db.collection("users").document(uid)
}
}

func create<T: Codable>(userCase: UserCase, access: Access) -> Single<T> {
return Single<T>.create { single in


return Disposables.create()
}
}

func read<T: Codable>(userCase: UserCase, access: Access) -> Observable<T> {
return Observable<T>.create { observer in


return Disposables.create()
}
}

func update<T: Codable>(userCase: UserCase, access: Access) -> Single<T> {
return Single<T>.create { single in

return Disposables.create()
}
}

func delete<T: Codable>(userCase: UserCase, access: Access) -> Single<T> {
return Single<T>.create { single in

return Disposables.create()
}
}

}

19 changes: 19 additions & 0 deletions DailyQuest/DailyQuest/Infrastructure/NetworkConfigure.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
//
// NetworkConfigure.swift
// DailyQuest
//
// Created by 이전희 on 2022/11/17.
//

import Foundation

enum UserCase {
case currentUser
case anotherUser(_ uid: String)
}

enum Access {
case quests
case receiveQuests
case userInfo
}
9 changes: 9 additions & 0 deletions DailyQuest/DailyQuest/Infrastructure/NetworkService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,15 @@

import RxSwift

enum NetworkServiceError {
case noAuth
}

protocol NetworkService {
var uid: String? { get }

func create<T: Codable>(userCase: UserCase, access: Access) -> Single<T>
func read<T: Codable>(userCase: UserCase, access: Access) -> Observable<T>
func update<T: Codable>(userCase: UserCase, access: Access) -> Single<T>
func delete<T: Codable>(userCase: UserCase, access: Access) -> Single<T>
}

0 comments on commit 078c39e

Please sign in to comment.