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()
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):
"""
+8 -1
View File
@@ -4,9 +4,10 @@ from aiogram.fsm.state import State, StatesGroup
from aiogram.types import InlineKeyboardButton
from aiogram.utils.keyboard import InlineKeyboardBuilder
import asyncpg
from typing import Any
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
router = Router()
@@ -106,6 +107,11 @@ async def handle_server_name_input(message: types.Message, state: FSMContext):
await message.answer("❌ Имя сервера не может быть пустым. Попробуйте снова.")
return
server_unique = await check_unique_server_name(server_name)
if not server_unique:
await message.answer("❌ Сервер с таким именем уже существует. Пожалуйста, выберите другое имя.")
return
user_data = await state.get_data()
cluster_name = user_data.get('cluster_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)
@router.message(UserEditorState.waiting_for_api_url, IsAdminFilter())
async def handle_api_url_input(message: types.Message, state: FSMContext):
api_url = message.text.strip()