wpbcpaz commited on
Commit
0c9301a
·
verified ·
1 Parent(s): 745ce22

Update app.py

Browse files

Atualização da persistência do firebase

Files changed (1) hide show
  1. app.py +32 -15
app.py CHANGED
@@ -136,23 +136,17 @@ CACHE_DIR.mkdir(exist_ok=True)
136
  # FUNÇÕES DE PERSISTÊNCIA (FIREBASE)
137
  # ============================================
138
 
 
139
  def _inicializar_firestore():
140
- """
141
  Inicializa o Firebase Admin SDK usando as credenciais
142
- armazenadas nos Secrets do Hugging Face Spaces ou Colab.
143
  """
144
  global db, analytics
 
145
 
146
- # # Preferir userdata no Colab
147
- # secret_name = "FIREBASE_SERVICE_ACCOUNT_JSON"
148
- # secret_json_string = userdata.get(secret_name)
149
-
150
- if not secret_json_string:
151
- # Fallback para ambiente Hugging Face Spaces
152
- secret_json_string = os.environ.get(secret_name)
153
-
154
 
155
- if not secret_json_string:
156
  print(f"❌ Erro de Configuração do Firebase: Secret '{secret_name}' não encontrado.")
157
  print("Usando apenas histórico de sessão (temporário).")
158
  db = None
@@ -161,8 +155,12 @@ def _inicializar_firestore():
161
 
162
  if not firebase_admin._apps:
163
  try:
 
164
  service_account_info = json.loads(secret_json_string)
 
 
165
  cred = credentials.Certificate(service_account_info)
 
166
  firebase_admin.initialize_app(cred)
167
  db = firestore.client()
168
  print("✅ Firestore inicializado com sucesso.")
@@ -174,32 +172,43 @@ def _inicializar_firestore():
174
  analytics = {"status": f"Erro de conexão: {e}"}
175
 
176
  def _adicionar_post_firestore(entry):
 
 
 
177
  if db:
178
  try:
 
179
  db.collection('posts').add(entry)
180
  return True
181
  except Exception as e:
182
- print(f"❌ Erro ao adicionar post ao Firestore: {e}")
183
- return False
184
  return False
185
 
186
  def _obter_historico_firestore():
 
 
 
 
187
  if db:
188
  try:
189
  posts_query = db.collection('posts').order_by('Data/Hora', direction=firestore.Query.DESCENDING).limit(100) # Aumentado limite para busca
 
190
  posts_stream = posts_query.stream()
 
191
  history = [post.to_dict() for post in posts_stream]
192
  return history
193
  except Exception as e:
194
- print(f"❌ Erro ao obter histórico do Firestore: {e}")
195
- return []
196
  return []
197
 
198
  def atualizar_historico(entry):
199
  """Salva no Firestore e atualiza o cache de sessão local."""
 
 
200
  global post_history
 
 
201
  _adicionar_post_firestore(entry)
202
  # Adiciona no início da lista local
 
203
  post_history.insert(0, entry)
204
  # Garante que a lista local não cresça indefinidamente
205
  if len(post_history) > 100:
@@ -208,10 +217,18 @@ def atualizar_historico(entry):
208
 
209
  def carregar_historico_inicial():
210
  """Carrega o histórico do Firestore ao iniciar o app."""
 
 
 
211
  global post_history
 
 
212
  historico_db = _obter_historico_firestore()
 
213
  if historico_db:
214
  post_history = historico_db
 
 
215
  return post_history
216
 
217
  # ============================================
 
136
  # FUNÇÕES DE PERSISTÊNCIA (FIREBASE)
137
  # ============================================
138
 
139
+ # Versão para o hugging face (PARA VERSÃO COLAB O MÉTODO É DIFERENTE)
140
  def _inicializar_firestore():
 
141
  Inicializa o Firebase Admin SDK usando as credenciais
142
+ armazenadas nos Secrets do Hugging Face Spaces.
143
  """
144
  global db, analytics
145
+
146
 
147
+ secret_name = "FIREBASE_SERVICE_ACCOUNT_JSON"
148
+ secret_json_string = os.environ.get(secret_name)
 
 
 
 
 
 
149
 
 
150
  print(f"❌ Erro de Configuração do Firebase: Secret '{secret_name}' não encontrado.")
151
  print("Usando apenas histórico de sessão (temporário).")
152
  db = None
 
155
 
156
  if not firebase_admin._apps:
157
  try:
158
+
159
  service_account_info = json.loads(secret_json_string)
160
+
161
+
162
  cred = credentials.Certificate(service_account_info)
163
+
164
  firebase_admin.initialize_app(cred)
165
  db = firestore.client()
166
  print("✅ Firestore inicializado com sucesso.")
 
172
  analytics = {"status": f"Erro de conexão: {e}"}
173
 
174
  def _adicionar_post_firestore(entry):
175
+
176
+
177
+
178
  if db:
179
  try:
180
+
181
  db.collection('posts').add(entry)
182
  return True
183
  except Exception as e:
 
 
184
  return False
185
 
186
  def _obter_historico_firestore():
187
+
188
+
189
+
190
+
191
  if db:
192
  try:
193
  posts_query = db.collection('posts').order_by('Data/Hora', direction=firestore.Query.DESCENDING).limit(100) # Aumentado limite para busca
194
+
195
  posts_stream = posts_query.stream()
196
+
197
  history = [post.to_dict() for post in posts_stream]
198
  return history
199
  except Exception as e:
 
 
200
  return []
201
 
202
  def atualizar_historico(entry):
203
  """Salva no Firestore e atualiza o cache de sessão local."""
204
+
205
+
206
  global post_history
207
+
208
+
209
  _adicionar_post_firestore(entry)
210
  # Adiciona no início da lista local
211
+
212
  post_history.insert(0, entry)
213
  # Garante que a lista local não cresça indefinidamente
214
  if len(post_history) > 100:
 
217
 
218
  def carregar_historico_inicial():
219
  """Carrega o histórico do Firestore ao iniciar o app."""
220
+
221
+
222
+
223
  global post_history
224
+
225
+
226
  historico_db = _obter_historico_firestore()
227
+
228
  if historico_db:
229
  post_history = historico_db
230
+
231
+
232
  return post_history
233
 
234
  # ============================================