feat: auto delete server if it is inactive for more than 5 minutes, minor fix
This commit is contained in:
@ -131,10 +131,23 @@ class StoreCapeService:
|
||||
except Exception as e:
|
||||
print(f"Ошибка при удалении файла: {e}")
|
||||
|
||||
# Удаляем из БД
|
||||
# Удаляем из БД плащей магазина
|
||||
result = await store_capes_collection.delete_one({"id": cape_id})
|
||||
if result.deleted_count == 0:
|
||||
raise HTTPException(status_code=500, detail="Ошибка при удалении из БД")
|
||||
|
||||
# Удаляем из БД купленных плащей
|
||||
purchases_collection = db.purchases
|
||||
purchases = await purchases_collection.find_one({"cape_id": cape_id})
|
||||
if purchases:
|
||||
await purchases_collection.delete_one({"cape_id": cape_id})
|
||||
|
||||
# Удаляем плащ из массива purchased_capes всех пользователей
|
||||
users_collection = db.users
|
||||
await users_collection.update_many(
|
||||
{"purchased_capes.cape_id": cape_id},
|
||||
{"$pull": {"purchased_capes": {"cape_id": cape_id}}}
|
||||
)
|
||||
|
||||
return {"status": "success"}
|
||||
|
||||
@ -189,6 +202,7 @@ class StoreCapeService:
|
||||
"purchased_capes": {
|
||||
"cape_id": cape_id,
|
||||
"cape_name": cape["name"],
|
||||
"cape_description": cape["description"],
|
||||
"file_name": cape_filename,
|
||||
"purchased_at": datetime.utcnow()
|
||||
}
|
||||
@ -233,6 +247,7 @@ class StoreCapeService:
|
||||
result.append({
|
||||
"cape_id": cape.get("cape_id"),
|
||||
"cape_name": cape.get("cape_name"),
|
||||
"cape_description": cape.get("cape_description"),
|
||||
"image_url": f"{FILES_URL}/capes/{cape.get('file_name')}",
|
||||
"purchased_at": cape.get("purchased_at"),
|
||||
"is_active": user.get("cloak_url") == f"{FILES_URL}/capes/{cape.get('file_name')}"
|
||||
@ -267,4 +282,33 @@ class StoreCapeService:
|
||||
return {
|
||||
"status": "success",
|
||||
"message": f"Плащ '{selected_cape.get('cape_name')}' активирован"
|
||||
}
|
||||
}
|
||||
|
||||
async def deactivate_purchased_cape(self, username: str, cape_id: str):
|
||||
"""Деактивация приобретенного плаща"""
|
||||
user = await users_collection.find_one({"username": username})
|
||||
if not user:
|
||||
raise HTTPException(status_code=404, detail="Пользователь не найден")
|
||||
|
||||
# Проверяем, что плащ был приобретен
|
||||
purchased_capes = user.get("purchased_capes", [])
|
||||
selected_cape = None
|
||||
|
||||
for cape in purchased_capes:
|
||||
if cape.get("cape_id") == cape_id:
|
||||
selected_cape = cape
|
||||
break
|
||||
|
||||
if not selected_cape:
|
||||
raise HTTPException(status_code=404, detail="Плащ не найден среди приобретенных")
|
||||
|
||||
# Устанавливаем выбранный плащ
|
||||
await users_collection.update_one(
|
||||
{"username": username},
|
||||
{"$set": {"cloak_url": None}}
|
||||
)
|
||||
|
||||
return {
|
||||
"status": "success",
|
||||
"message": f"Плащ '{selected_cape.get('cape_name')}' деактивирован"
|
||||
}
|
||||
|
Reference in New Issue
Block a user