DmitrMakeev
commited on
Commit
•
3d4d1aa
1
Parent(s):
b441424
Update app.py
Browse files
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 |
|