Notice
Recent Posts
Recent Comments
Link
투케이2K
129. (TWOK/UTIL) [Ios/Swift] C_FirebaseRealDatabase : 파이어베이스 RealDatabase 관리 클래스 본문
투케이2K 유틸파일
129. (TWOK/UTIL) [Ios/Swift] C_FirebaseRealDatabase : 파이어베이스 RealDatabase 관리 클래스
투케이2K 2024. 5. 15. 11:14[설 명]
프로그램 : Ios / Swift
설 명 : C_FirebaseRealDatabase : 파이어베이스 RealDatabase 관리 클래스
[소스 코드]
import Foundation
import UIKit
// ----------------------------------
// MARK: - [파이어베이스 라이브러리]
// ----------------------------------
import Firebase
// ----------------------------------
class C_FirebaseRealDatabase {
/**
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* TODO [클래스 설명]
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* 1. 파이어베이스 RealDatabase 관리 클래스
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* 2. 참고 : AppDelegate 파일에서 사전 FirebaseApp.configure 정의 필요
*
* let fireBaseConfigFile = Bundle.main.path(forResource: "GoogleService-Info", ofType: "plist")!
* let firOptions = FirebaseOptions(contentsOfFile: fireBaseConfigFile)!
* FirebaseApp.configure(options: firOptions)
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* */
/**
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* // TODO [빠른 로직 찾기 : 주석 로직 찾기]
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* // [SEARCH FAST] : [Observable] : [Write] : [기본] 데이터베이스 SET 쓰기
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* // [SEARCH FAST] : [Observable] : [Read] : [기본] 데이터베이스 SET 읽기
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* // [SEARCH FAST] : [Observable] : [Delete] : [기본] 데이터베이스 SET 삭제
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
*
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
*
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* */
// -----------------------------------------------------------------------------------------
// MARK: - [전역 변수 선언]
// -----------------------------------------------------------------------------------------
private static let ACTIVITY_NAME = "C_FirebaseRealDatabase"
// -----------------------------------------------------------------------------------------
// MARK: - [SEARCH FAST] : [Observable] : [Write] : [기본] 데이터베이스 SET 쓰기
// -----------------------------------------------------------------------------------------
func observableSetWriteDatabase(table:String, json:String, completion: @escaping (Bool)->()) {
/*
// -----------------------------------------
[observableSetWriteDatabase 메소드 설명]
// -----------------------------------------
1. [기본] 데이터베이스 SET 쓰기
// -----------------------------------------
2. 호출 방법 :
DispatchQueue.main.async { // [비동기 요청]
// [파이어베이스 테이블 명칭]
let tableName = "testUser"
// [JSON 생성]
var dic : Dictionary<String, Any> = ["name":"투케이", "age":29]
var json = C_Util().dic_To_JsonObject_String(_dicData: dic)
// [메소드 호출]
C_FirebaseRealDatabase().observableSetWriteDatabase(table:tableName, json:json){(result) in
S_Log._F_(description: "[기본] 데이터베이스 SET 쓰기", data: ["\(result)"])
}
}
// -----------------------------------------
*/
// [메인 큐에서 비동기 방식 실행 : UI 동작 실시]
DispatchQueue.main.async {
S_Log._F_(description: C_FirebaseRealDatabase.ACTIVITY_NAME + " : [Firebase] : [Write] : [기본] 데이터베이스 SET 쓰기 수행", data: [
"table :: \(table)",
"json :: \(json)"
])
// [리턴 변수 선언]
var returnData = false
// [널 체크]
if C_Util().stringNotNull(str: table) == true && C_Util().stringNotNull(str: json) == true {
// [파이어베이스 인스턴스 취득]
let ref = Database.database().reference()
// [파이어베이스 set 쓰기]
ref.child("\(table)").setValue("\(json)", withCompletionBlock: { (error, ref) in
if let err = error {
S_Log._F_(description: C_FirebaseRealDatabase.ACTIVITY_NAME + " : [Firebase] : [Write] : [기본] 데이터베이스 SET 쓰기 에러", data: [
"ERROR :: \(err.localizedDescription)"
])
// [콜백 반환]
completion(returnData)
return
}
// [리턴 결과 반환]
returnData = true
S_Log._F_(description: C_FirebaseRealDatabase.ACTIVITY_NAME + " : [Firebase] : [Write] : [기본] 데이터베이스 SET 쓰기 성공", data: nil)
// [콜백 반환]
completion(returnData)
})
}
else {
S_Log._F_(description: C_FirebaseRealDatabase.ACTIVITY_NAME + " : [Firebase] : [Write] : [기본] 데이터베이스 SET 쓰기 에러", data: [
"ERROR :: Input Data Is Null"
])
// [콜백 반환]
completion(returnData)
}
}
}
// -----------------------------------------------------------------------------------------
// MARK: - [SEARCH FAST] : [Observable] : [Read] : [기본] 데이터베이스 SET 읽기
// -----------------------------------------------------------------------------------------
func observableSetReadDatabase(table:String, completion: @escaping (String)->()) {
/*
// -----------------------------------------
[observableSetReadDatabase 메소드 설명]
// -----------------------------------------
1. [기본] 데이터베이스 SET 읽기
// -----------------------------------------
2. 호출 방법 :
DispatchQueue.main.async { // [비동기 요청]
// [파이어베이스 테이블 명칭]
let tableName = "testUser"
// [메소드 호출]
C_FirebaseRealDatabase().observableSetReadDatabase(table:tableName){(result) in
S_Log._F_(description: "[기본] 데이터베이스 SET 읽기", data: ["\(result)"])
}
}
// -----------------------------------------
*/
// [메인 큐에서 비동기 방식 실행 : UI 동작 실시]
DispatchQueue.main.async {
S_Log._F_(description: C_FirebaseRealDatabase.ACTIVITY_NAME + " : [Firebase] : [Read] : [기본] 데이터베이스 SET 읽기 수행", data: [
"table :: \(table)"
])
// [리턴 변수 선언]
var returnData = ""
// [널 체크]
if C_Util().stringNotNull(str: table) == true {
// [파이어베이스 인스턴스 취득]
let ref = Database.database().reference()
// [파이어베이스 set 쓰기]
ref.child("\(table)").getData(completion: { (error, ref) in
if let err = error {
S_Log._F_(description: C_FirebaseRealDatabase.ACTIVITY_NAME + " : [Firebase] : [Read] : [기본] 데이터베이스 SET 읽기 에러", data: [
"ERROR :: \(err.localizedDescription)"
])
// [콜백 반환]
completion(returnData)
return
}
// [리턴 결과 반환]
returnData = ref?.value as! String
S_Log._F_(description: C_FirebaseRealDatabase.ACTIVITY_NAME + " : [Firebase] : [Read] : [기본] 데이터베이스 SET 읽기 성공", data: nil)
// [콜백 반환]
completion(returnData)
})
}
else {
S_Log._F_(description: C_FirebaseRealDatabase.ACTIVITY_NAME + " : [Firebase] : [Read] : [기본] 데이터베이스 SET 읽기 에러", data: [
"ERROR :: Input Data Is Null"
])
// [콜백 반환]
completion(returnData)
}
}
}
// -----------------------------------------------------------------------------------------
// MARK: - [SEARCH FAST] : [Observable] : [Delete] : [기본] 데이터베이스 SET 삭제
// -----------------------------------------------------------------------------------------
func observableSetDeleteDatabase(table:String, completion: @escaping (Bool)->()) {
/*
// -----------------------------------------
[observableSetDeleteDatabase 메소드 설명]
// -----------------------------------------
1. [기본] 데이터베이스 SET 삭제
// -----------------------------------------
2. 호출 방법 :
DispatchQueue.main.async { // [비동기 요청]
// [파이어베이스 테이블 명칭]
let tableName = "testUser"
// [메소드 호출]
C_FirebaseRealDatabase().observableSetDeleteDatabase(table:tableName){(result) in
S_Log._F_(description: "[기본] 데이터베이스 SET 삭제", data: ["\(result)"])
}
}
// -----------------------------------------
*/
// [메인 큐에서 비동기 방식 실행 : UI 동작 실시]
DispatchQueue.main.async {
S_Log._F_(description: C_FirebaseRealDatabase.ACTIVITY_NAME + " : [Firebase] : [Delete] : [기본] 데이터베이스 SET 삭제 수행", data: [
"table :: \(table)"
])
// [리턴 변수 선언]
var returnData = false
// [널 체크]
if C_Util().stringNotNull(str: table) == true {
// [파이어베이스 인스턴스 취득]
let ref = Database.database().reference()
// [파이어베이스 set 쓰기]
ref.child("\(table)").setValue(nil, withCompletionBlock: { (error, ref) in
if let err = error {
S_Log._F_(description: C_FirebaseRealDatabase.ACTIVITY_NAME + " : [Firebase] : [Delete] : [기본] 데이터베이스 SET 삭제 에러", data: [
"ERROR :: \(err.localizedDescription)"
])
// [콜백 반환]
completion(returnData)
return
}
// [리턴 결과 반환]
returnData = true
S_Log._F_(description: C_FirebaseRealDatabase.ACTIVITY_NAME + " : [Firebase] : [Delete] : [기본] 데이터베이스 SET 삭제 성공", data: nil)
// [콜백 반환]
completion(returnData)
})
}
else {
S_Log._F_(description: C_FirebaseRealDatabase.ACTIVITY_NAME + " : [Firebase] : [Delete] : [기본] 데이터베이스 SET 삭제 에러", data: [
"ERROR :: Input Data Is Null"
])
// [콜백 반환]
completion(returnData)
}
}
}
} // [클래스 종료]
반응형
'투케이2K 유틸파일' 카테고리의 다른 글
Comments