76 lines
2.9 KiB
Python
76 lines
2.9 KiB
Python
import mysql.connector
|
|
from database.connection import get_db_connection
|
|
import logging
|
|
|
|
# 모든 설정 조회
|
|
def get_all_settings():
|
|
settings = []
|
|
try:
|
|
with get_db_connection() as conn:
|
|
with conn.cursor(dictionary=True) as cursor:
|
|
cursor.execute("SELECT `id`, `setting_group`, `setting_key`, `setting_value`, `setting_type`, `description` FROM settings")
|
|
results = cursor.fetchall()
|
|
for row in results:
|
|
settings.append({
|
|
"id": row['id'],
|
|
"setting_group": row['setting_group'],
|
|
"setting_key": row['setting_key'],
|
|
"setting_value": row['setting_value'],
|
|
"setting_type": row['setting_type'],
|
|
"description": row['description']
|
|
})
|
|
return settings
|
|
except mysql.connector.Error as err:
|
|
logging.error(f"Error getting all settings: {err}")
|
|
return []
|
|
|
|
# 특정 설정 조회
|
|
def get_setting(key):
|
|
try:
|
|
with get_db_connection() as conn:
|
|
with conn.cursor(dictionary=True) as cursor:
|
|
cursor.execute("SELECT `setting_value`, `setting_type` FROM settings WHERE `setting_key` = %s", (key,))
|
|
result = cursor.fetchone()
|
|
if result:
|
|
value = result['setting_value']
|
|
value_type = result['setting_type']
|
|
if value_type == 'integer':
|
|
return int(value)
|
|
elif value_type == 'decimal':
|
|
return float(value)
|
|
elif value_type == 'boolean':
|
|
return value.lower() in ('true', '1', 't')
|
|
else:
|
|
return value
|
|
return None
|
|
except mysql.connector.Error as err:
|
|
logging.error(f"Error getting setting for key {key}: {err}")
|
|
return None
|
|
|
|
# 설정 업데이트
|
|
def update_settings(settings_data):
|
|
try:
|
|
with get_db_connection() as conn:
|
|
with conn.cursor() as cursor:
|
|
sql = """
|
|
UPDATE settings
|
|
SET `setting_value` = %s
|
|
WHERE `setting_key` = %s
|
|
"""
|
|
|
|
values_to_update = []
|
|
for setting in settings_data:
|
|
key = setting.get('setting_key')
|
|
value = setting.get('setting_value')
|
|
|
|
if key is not None and value is not None:
|
|
values_to_update.append((str(value), key))
|
|
|
|
if values_to_update:
|
|
cursor.executemany(sql, values_to_update)
|
|
conn.commit()
|
|
return True
|
|
except mysql.connector.Error as err:
|
|
logging.error(f"Error updating settings: {err}")
|
|
return False
|