unique server_name
This commit is contained in:
+17
@@ -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):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user