unique server_name

This commit is contained in:
Vladless
2024-12-04 02:46:57 +03:00
parent bb034ba6c6
commit 2f6b85d4a6
2 changed files with 25 additions and 1 deletions
+17
View File
@@ -134,6 +134,23 @@ async def init_db():
await conn.close() await conn.close()
async def check_unique_server_name(server_name: str) -> bool:
"""
Проверяет уникальность имени сервера.
:param server_name: Имя сервера.
:return: True, если имя сервера уникально, False, если уже существует.
"""
conn = await asyncpg.connect(DATABASE_URL)
result = await conn.fetchrow(
"SELECT 1 FROM servers WHERE server_name = $1 LIMIT 1", server_name
)
await conn.close()
return result is None
async def create_coupon(coupon_code: str, amount: float, usage_limit: int, session: Any): async def create_coupon(coupon_code: str, amount: float, usage_limit: int, session: Any):
""" """
+8 -1
View File
@@ -4,9 +4,10 @@ from aiogram.fsm.state import State, StatesGroup
from aiogram.types import InlineKeyboardButton from aiogram.types import InlineKeyboardButton
from aiogram.utils.keyboard import InlineKeyboardBuilder from aiogram.utils.keyboard import InlineKeyboardBuilder
import asyncpg import asyncpg
from typing import Any
from config import DATABASE_URL from config import DATABASE_URL
from database import get_servers_from_db from database import get_servers_from_db, check_unique_server_name
from filters.admin import IsAdminFilter from filters.admin import IsAdminFilter
router = Router() router = Router()
@@ -106,6 +107,11 @@ async def handle_server_name_input(message: types.Message, state: FSMContext):
await message.answer("❌ Имя сервера не может быть пустым. Попробуйте снова.") await message.answer("❌ Имя сервера не может быть пустым. Попробуйте снова.")
return return
server_unique = await check_unique_server_name(server_name)
if not server_unique:
await message.answer("❌ Сервер с таким именем уже существует. Пожалуйста, выберите другое имя.")
return
user_data = await state.get_data() user_data = await state.get_data()
cluster_name = user_data.get('cluster_name') cluster_name = user_data.get('cluster_name')
await state.update_data(server_name=server_name) await state.update_data(server_name=server_name)
@@ -124,6 +130,7 @@ async def handle_server_name_input(message: types.Message, state: FSMContext):
await state.set_state(UserEditorState.waiting_for_api_url) await state.set_state(UserEditorState.waiting_for_api_url)
@router.message(UserEditorState.waiting_for_api_url, IsAdminFilter()) @router.message(UserEditorState.waiting_for_api_url, IsAdminFilter())
async def handle_api_url_input(message: types.Message, state: FSMContext): async def handle_api_url_input(message: types.Message, state: FSMContext):
api_url = message.text.strip() api_url = message.text.strip()