Files
John bd7635986a Initial commit: WordLoop 单词学习应用
Vue 前端 + FastAPI 后端,含部署脚本与词典数据。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-04 14:30:53 -07:00

56 lines
1.7 KiB
Python

import random
from typing import Optional
from sqlalchemy.orm import Session
from models import DictionaryEntry
class DictionaryService:
def lookup_en(self, db: Session, text: str) -> Optional[DictionaryEntry]:
key = text.lower().strip()
if not key:
return None
return db.query(DictionaryEntry).filter(DictionaryEntry.lemma_en == key).first()
def lookup_zh(self, db: Session, text: str) -> Optional[DictionaryEntry]:
text = text.strip()
if not text:
return None
entry = db.query(DictionaryEntry).filter(DictionaryEntry.zh == text).first()
if entry:
return entry
return (
db.query(DictionaryEntry)
.filter(DictionaryEntry.zh.contains(text))
.first()
)
def random_zh_values(self, db: Session, exclude: str, limit: int) -> list[str]:
rows = (
db.query(DictionaryEntry.zh)
.filter(DictionaryEntry.zh != exclude)
.order_by(DictionaryEntry.id)
.all()
)
values = [r[0] for r in rows]
random.shuffle(values)
return values[:limit]
def random_en_lemmas(self, db: Session, exclude: str, limit: int) -> list[str]:
rows = (
db.query(DictionaryEntry.lemma_en)
.filter(DictionaryEntry.lemma_en != exclude.lower())
.order_by(DictionaryEntry.id)
.all()
)
values = [r[0] for r in rows]
random.shuffle(values)
return values[:limit]
def count(self, db: Session) -> int:
return db.query(DictionaryEntry).count()
dictionary_service = DictionaryService()