Skip to content

Commit 0441607

Browse files
committed
Add database
1 parent e5a5fb3 commit 0441607

1 file changed

Lines changed: 89 additions & 0 deletions

File tree

sjfirebase/jinterface/database.py

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
from typing import Callable
2+
3+
from jnius import PythonJavaClass, java_method
4+
5+
__all__ = ("ValueEventListener", "ChildEventListener")
6+
7+
8+
class ValueEventListener(PythonJavaClass):
9+
__javainterfaces__ = ["com/google/firebase/database/ValueEventListener"]
10+
__javacontext__ = "app"
11+
12+
def __init__(self, on_data_change, on_cancelled):
13+
super().__init__()
14+
self.on_data_change = on_data_change
15+
self.on_cancelled = on_cancelled
16+
17+
@java_method('(Lcom/google/firebase/database/DataSnapshot;)V')
18+
def onDataChange(self, snapshot):
19+
self.on_data_change(snapshot)
20+
21+
@java_method('(Lcom/google/firebase/database/DatabaseError;)V')
22+
def onCancelled(self, error):
23+
self.on_cancelled(error)
24+
25+
26+
class CompletionListener(PythonJavaClass):
27+
__javainterfaces__ = ["com/google/firebase/database/DatabaseReference$CompletionListener"]
28+
__javacontext__ = "app"
29+
30+
def __init__(self, on_complete):
31+
super().__init__()
32+
self.on_complete = on_complete
33+
34+
@java_method('(Lcom/google/firebase/database/DatabaseError;'
35+
'Lcom/google/firebase/database/DatabaseReference)V')
36+
def onComplete(self, error, ref):
37+
self.on_complete(error, ref)
38+
39+
40+
class ChildEventListener(PythonJavaClass):
41+
__javainterfaces__ = ["com/google/firebase/database/ChildEventListener"]
42+
__javacontext__ = "app"
43+
44+
def __init__(self, **kwargs):
45+
self.on_cancelled = kwargs.get("on_cancelled", lambda _: None)
46+
self.on_child_added = kwargs.get("on_child_added", lambda *_: None)
47+
self.on_child_moved = kwargs.get("on_child_moved", lambda *_: None)
48+
self.on_child_changed = kwargs.get("on_child_changed", lambda *_: None)
49+
self.on_child_removed = kwargs.get("on_child_removed", lambda _: None)
50+
51+
@java_method('(Lcom/google/firebase/database/DatabaseError;)V')
52+
def onCancelled(self, error):
53+
self.on_cancelled(error)
54+
55+
@java_method("(Lcom/google/firebase/database/DataSnapshot;Ljava/lang/String;)V")
56+
def onChildAdded(self, snapshot, previous_child_name):
57+
self.on_child_added(snapshot, previous_child_name)
58+
59+
@java_method("(Lcom/google/firebase/database/DataSnapshot;Ljava/lang/String;)V")
60+
def onChildChanged(self, snapshot, previous_child_name):
61+
self.on_child_changed(snapshot, previous_child_name)
62+
63+
@java_method("(Lcom/google/firebase/database/DataSnapshot;Ljava/lang/String;)V")
64+
def onChildMoved(self, snapshot, previous_child_name):
65+
self.on_child_moved(snapshot, previous_child_name)
66+
67+
@java_method("(Lcom/google/firebase/database/DataSnapshot;)V")
68+
def onChildRemoved(self, snapshot):
69+
self.on_child_removed(snapshot)
70+
71+
72+
class TransactionHandler(PythonJavaClass):
73+
__javainterfaces__ = ["com/google/firebase/database/Transaction$Handler"]
74+
__javacontext__ = "app"
75+
76+
def __init__(self, do_transaction, on_complete):
77+
super().__init__()
78+
self.do_transaction = do_transaction
79+
self.on_complete = on_complete
80+
81+
@java_method("(Lcom/google/firebase/database/MutableData;)"
82+
"Lcom/google/firebase/database/Transaction$Result")
83+
def doTransaction(self, current_data):
84+
self.do_transaction(current_data)
85+
86+
@java_method('(Lcom/google/firebase/database/DatabaseError;'
87+
'Lcom/google/firebase/database/DataSnapshot)V')
88+
def onComplete(self, error, current_data):
89+
self.on_complete(error, current_data)

0 commit comments

Comments
 (0)