import firebase_admin from firebase_admin import credentials, firestore import datetime import pytz import os key = os.getenv("private_key") cred = credentials.Certificate({ "type": os.getenv("type"), "project_id": os.getenv("project_id"), "private_key_id":os.getenv("private_key_id") , "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDOKGfp30VKxr8J\nZXUr3GRy0vWuOsw/NJnrxfKmlM1Nm+Lc412fwalvxxEndjg5i6G/prIZfuM5PCYO\ny08UCJy+uvlvFaeryUmxvx6rBBREblp6dZCzTR5MJto5+x02hyxqa+8pD28rZVeA\nYrpPwEaLEPXV6S8Fl7RqES6JiHc2biRLU3YiqK7e+Ntg01vnXdTCWei95gF5LIhC\nK3+dQ9ZvDTguyKZZQcsSQeZrcmj34f1tByLEXeBVRmo41sofHqJ8PuL/xbT4ztH6\nPrsn2p9Y5SOeoq1/fPL3CQmXhmJj8S9WyX30LhGSl+vNvB2JWDCq2jtrMg2tdJYC\nIwnBXyZ1AgMBAAECggEACZhGKdOF4T05w+wFwDUBic85YagD5zHWs2tNkqTcn0Q7\nkps/DsHlKw92mWxo9n4CA65Jng0n8dB+VvRDFG7ILh+mn0hrOtVjSX4DJTjLNq90\nz5FBhaQiXln1OyXto02MQCcQ2kuJGYRzG5sSCnHWS/+jPsGbuiS9iq2NCcKhBcE/\nf8muPNAAPyDLoTJY8qfNMfJp0ObYwYVkH5EB9tshbL2Z0DomgNiZHxKy8DdYl3Iv\nh2wPJd4xTUYHNdAs7PNOBMF1sYNNuHeTKVw9pWQg2v/TZuvMbh16feMIPJBf2ODa\nod/rmbOvrnveTqaTmuW/eBwg/z7JgfAUJgOtdFDDOwKBgQDpcjVxJ4T2WjN3pxBI\nmk6MhA1FWS/f3rNXKqAJQMKoeps5ZVG06LXuU1lBHgyBf2raC3PkpOFx/aI/j88w\nNZHAcdVsTlOzm0cXzFdCahTc87R35RLZHa2QyLlphm20ppk9wL3W4ri8busKjl4f\nsh7PEnBp4hl8YHzFzIsJxdo+MwKBgQDiE0eQBn30UmGzg/4th2JNJXmaQrTKBQ1N\nRJqmrKZPE3SJXpxpleL4X0y+vX2PgGbGI9nymzKyyjvX3OFEZ7vGPacoBnPYn2eA\nW2qVYNbRgYPlQISmxgCD9cEaHuS/XyS0IVnD8ZxiO2xa+OA3GNd11ZqdXqVEyzD2\nWP+vEyCQtwKBgE4sOo0ryLCeQAHfZeqKEaeoSLFiTk/PSYr08SZoE0dL11L/BL9p\n9hJawta1c0aiHmvpzeNQ+1Wqs3xJcf4Y0jf5ZpigGhNY+hOUD9xjnZzn1xUXFpqx\n/38uWDhoFbCa4VH2ixu8TFR9aCPezNIcWYjKCe7LEfG+dcne1uhs4spVAoGBAM1Q\n0xozOyqrsr10719r59PGaAS39jbOlcEJwCYFAFkqgxjKyuR9Uo9dBXbo4uJzq2Lh\nZmuVlVqYnfayTAdy6i7lCS0phwZB5p7E5yxYsV+97wpCKPbJNeiiRUgyrG48uzm4\nXCy+/dacvxBznDWNowgKAQxQy2mJ26KvOy5GAbpLAoGAASBjNgAfqLTlkSmtKekA\nQqUX3xJb5TVtJWyh1tM0wMVMApFgLSxYue591lSxPSLzfp4JBdYE1ZnGi6v6vuKz\nh7RUZ9j+7WlxO/W7uEsBCWm/o8+pkytVWHf2UxYi0W0DIZ6Sd5h57+SPHUSDr8tB\n13G7NBOwTFsUb4m6HarsoGk=\n-----END PRIVATE KEY-----\n", "client_email": "firebase-adminsdk-ghtj5@chatbot-99c63.iam.gserviceaccount.com", "client_id": "105548346970851686298", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-ghtj5%40chatbot-99c63.iam.gserviceaccount.com", "universe_domain": "googleapis.com" }) firebase_admin.initialize_app(cred) db = firestore.client() usa_eastern_timezone = pytz.timezone('America/New_York') current_datetime = datetime.datetime.now(usa_eastern_timezone) # Define a function to update user data by userid def update_user_by_userid(userid, field_updates): try: # Create a reference to the "users" collection users_ref = db.collection('users') # Query for the user with the specified userid query = users_ref.where('userid', '==', userid).limit(1) user_docs = query.stream() # Assuming there's only one matching document (limit=1) for doc in user_docs: user_ref = doc.reference user_ref.update(field_updates) print(f"User with userid {userid} updatedg successfully.") return True print(f"No user found with userid {userid}.") return False except Exception as e: print(f"Error updating user: {e}") return False def get_user_by_userid(userid): # Create a reference to the "users" collection users_ref = db.collection('users') # Query for the user with the specified userid query = users_ref.where('userid', '==', userid).limit(1) user_docs = query.stream() # Assuming there's only one matching document (limit=1) for doc in user_docs: user_data = doc.to_dict() return user_data def user_info(userid,usermail): users_ref = db.collection('users') user_in_db = get_user_by_userid(userid) if user_in_db: print("User found:") if user_in_db['isNewUser']: print('New user found. do any initialization you want.') user_in_db['isNewUser'] =False user_in_db['last_accessed_date'] =current_datetime result = update_user_by_userid(userid=userid,field_updates=user_in_db) if not result: print('error occured while updating the user info') else: print(f"No user found with userid {userid}. creating new user") userinfo = { 'isNewUser':True, 'email': usermail, 'userid':userid, 'membership':'free', 'last_accessed_date':current_datetime, 'chatgpt_tokens':5, 'gemini_tokens':5 } users_ref.add(userinfo) user_in_db = userinfo print(user_in_db) return user_in_db