Skip to content

Instantly share code, notes, and snippets.

@mortenbekditlevsen
Created August 22, 2018 07:31
Show Gist options
  • Save mortenbekditlevsen/409555af597d4b5a89a32bee01a41bc3 to your computer and use it in GitHub Desktop.
Save mortenbekditlevsen/409555af597d4b5a89a32bee01a41bc3 to your computer and use it in GitHub Desktop.
public class FirebaseService {
private let rootRef: DatabaseReference
public init(ref: DatabaseReference) {
self.rootRef = ref.root
}
// MARK: Observing Paths
func observeSingleEvent<T>(at path: Path<T>) -> Single<T>
where T: Decodable {
let ref = rootRef.child(path.rendered)
return ref.rx.observeSingleEvent(of: .value)
}
func observe<T>(at path: Path<T>) -> Observable<DecodeResult<T>>
where T: Decodable {
let ref = rootRef.child(path.rendered)
return ref.rx.observe(eventType: .value)
}
// MARK: Observing Collection Paths
func observeSingleEvent<T>(of type: CollectionEventType,
at path: Path<T>) -> Single<T>
where T: Decodable {
let ref = rootRef.child(path.rendered)
return ref.rx.observeSingleEvent(of: type.firebaseEventType)
}
func observe<T>(eventType type: CollectionEventType,
at path: Path<T>.Collection) -> Observable<DecodeResult<T>>
where T: Decodable {
let ref = rootRef.child(path.rendered)
return ref.rx.observe(eventType: type.firebaseEventType)
}
// ...
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment