- Add customizable background color - Add wheel animations and sound effects - Add reward description field and winner modal - Change font to Dana - Add configurable reward probabilities - Support reward types (Empty, Discount Code, LiveCoin) - Replace reward title with reward type selector - Allow wheel page title customization from admin panel
45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
import random
|
|
from sqlalchemy.orm import Session
|
|
from app.db.models import Item
|
|
|
|
def get_items(db: Session):
|
|
return db.query(Item).all()
|
|
|
|
def create_item(db: Session, title: str, prize: str, description: str = "", prize_type: str = "پوچ", probability: float = 1.0):
|
|
item = Item(
|
|
title=title,
|
|
prize=prize,
|
|
description=description,
|
|
prize_type=prize_type,
|
|
probability=probability
|
|
)
|
|
db.add(item)
|
|
db.commit()
|
|
db.refresh(item)
|
|
return item
|
|
|
|
def update_item(db: Session, item_id: int, title: str, prize: str, description: str = "", prize_type: str = "پوچ", probability: float = 1.0):
|
|
item = db.query(Item).filter(Item.id == item_id).first()
|
|
if item:
|
|
item.title = title
|
|
item.prize = prize
|
|
item.description = description
|
|
item.prize_type = prize_type
|
|
item.probability = probability
|
|
db.commit()
|
|
db.refresh(item)
|
|
return item
|
|
|
|
def delete_item(db: Session, item_id: int):
|
|
item = db.query(Item).filter(Item.id == item_id).first()
|
|
if item:
|
|
db.delete(item)
|
|
db.commit()
|
|
return item
|
|
|
|
def spin_wheel(db: Session):
|
|
items = db.query(Item).all()
|
|
if not items:
|
|
return None
|
|
weights = [item.probability for item in items]
|
|
return random.choices(items, weights=weights, k=1)[0] |