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 |
|