DmitrMakeev commited on
Commit
3d4d1aa
1 Parent(s): b441424

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -2
app.py CHANGED
@@ -893,15 +893,47 @@ def send_get_request():
893
  messages_user = messages_json.get(user_id, []) # Получение сообщений пользователя
894
  user_data['messages'] = messages_user # Добавление сообщений в данные пользователя
895
 
 
896
  email = user_data.get('email')
897
  if email and email not in processed_emails:
898
- update_or_insert_user(DATABASE_NAME, user_data, mapping_template)
899
- processed_emails.add(email)
900
 
901
  return jsonify({'status': 'User data saved successfully'})
902
  else:
903
  return jsonify({'error': 'Failed to fetch data from the API'}), response.status_code
904
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
905
 
906
 
907
 
 
893
  messages_user = messages_json.get(user_id, []) # Получение сообщений пользователя
894
  user_data['messages'] = messages_user # Добавление сообщений в данные пользователя
895
 
896
+ # Проверка наличия email и его уникальности
897
  email = user_data.get('email')
898
  if email and email not in processed_emails:
899
+ update_or_insert_user(DATABASE_NAME, user_data, mapping_template) # Вставка/обновление пользователя в базе данных
900
+ processed_emails.add(email) # Добавление email в множество обработанных
901
 
902
  return jsonify({'status': 'User data saved successfully'})
903
  else:
904
  return jsonify({'error': 'Failed to fetch data from the API'}), response.status_code
905
 
906
+ def update_or_insert_user(db_name, user_data, mapping_template):
907
+ """ Обновляет или вставляет данные пользователя в базу данных. """
908
+ connection = sqlite3.connect(db_name)
909
+ cursor = connection.cursor()
910
+
911
+ # Преобразование данных пользователя на основе шаблона сопоставления
912
+ transformed_data = {}
913
+ for json_key, db_column in mapping_template.items():
914
+ value = user_data.get(json_key, "")
915
+ if isinstance(value, list):
916
+ value = ",".join(value)
917
+ transformed_data[db_column] = value
918
+
919
+ # Вставка или обновление записи пользователя
920
+ try:
921
+ cursor.execute('''INSERT INTO contacts (email, name, phone, pr1, pr2, pr3, pr4, pr5, messages)
922
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)''',
923
+ (transformed_data.get('email'), transformed_data.get('name'), transformed_data.get('phone'),
924
+ transformed_data.get('pr1'), transformed_data.get('pr2'), transformed_data.get('pr3'),
925
+ transformed_data.get('pr4'), transformed_data.get('pr5'), json.dumps(user_data.get('messages'))))
926
+ connection.commit()
927
+ except sqlite3.IntegrityError:
928
+ cursor.execute('''UPDATE contacts SET name = ?, phone = ?, pr1 = ?, pr2 = ?, pr3 = ?, pr4 = ?, pr5 = ?, messages = ?
929
+ WHERE email = ?''',
930
+ (transformed_data.get('name'), transformed_data.get('phone'), transformed_data.get('pr1'),
931
+ transformed_data.get('pr2'), transformed_data.get('pr3'), transformed_data.get('pr4'),
932
+ transformed_data.get('pr5'), json.dumps(user_data.get('messages')), transformed_data.get('email')))
933
+ connection.commit()
934
+ finally:
935
+ connection.close()
936
+
937
 
938
 
939