import firebase_admin
import json
import os
import firebase_admin.db
from dotenv import load_dotenv
load_dotenv()

class Firebase:
    def __init__(self, host=None):
        self.credentials = firebase_admin.credentials.Certificate(json.loads(os.environ.get("FIREBASE_CREDENTIALS_JSON")))

        try:
            firebase_admin.get_app()
        except:
            firebase_admin.initialize_app(credential=self.credentials, options={'databaseURL': host})

        self.db = firebase_admin.db
        
    def get_by_child(self, child=None):
        if child:
            data = self.db.reference().child(child).get()
            if data:
                return data
            else:
                return False
        else:
            return False
        
    def get_user_by_token(self, token=None):
        if token != 'all':
            users = self.db.reference().child('users').get(shallow=True)
            for user in users:
                user_data = self.db.reference().child(f"users/{user}").get()
                if user_data.get("token", None) == token:
                    return user_data
                
            return False
        else:
            users = self.db.reference().child('users').get(shallow=True)
            return users