mirror of
https://github.com/A-Minos/nonebot-plugin-tetris-stats.git
synced 2026-03-05 05:36:54 +08:00
* ✨ 适配 v1 tetrio 的 Trending * 🗃️ 添加 compare_delta 配置项 * 🗃️ 添加 TETRIOLeagueUserMap 索引表 * ✨ 添加对比时间配置项 * ✨ 添加 compare_delta 解析函数 * ✨ 添加 Trending 类的 compare 方法 * 🗃️ 移除不正确的复合索引 * ✨ 定时任务拉取tl数据时同步更新索引 * ✨ 适配 trending * 🐛 修复 find_entry 在无 uid 时的索引返回逻辑 * 📝 修正 compare_delta 迁移父迁移注释 * 🗃️ 为非 PostgreSQL 回填迁移补充外键约束 * 🔒 迁移中使用参数绑定设置 PG 内存参数 * ✨ 修正 Trends 的 vs 为 adpm * 🐛 修正获取玩家 ID 的范围
52 lines
883 B
Python
52 lines
883 B
Python
from abc import ABC, abstractmethod
|
|
from datetime import datetime
|
|
from typing import Literal
|
|
|
|
from pydantic import BaseModel
|
|
from strenum import StrEnum
|
|
|
|
from ...typedefs import Lang, Number
|
|
|
|
|
|
class Base(BaseModel, ABC):
|
|
@property
|
|
@abstractmethod
|
|
def path(self) -> str:
|
|
raise NotImplementedError
|
|
|
|
lang: Lang
|
|
|
|
|
|
class Avatar(BaseModel):
|
|
type: Literal['identicon']
|
|
hash: str
|
|
|
|
|
|
class People(BaseModel):
|
|
avatar: str | Avatar
|
|
name: str
|
|
|
|
|
|
class Ranking(BaseModel):
|
|
rating: Number
|
|
rd: Number
|
|
|
|
|
|
class HistoryData(BaseModel):
|
|
score: Number
|
|
record_at: datetime
|
|
|
|
|
|
class Trending(StrEnum):
|
|
UP = 'up'
|
|
KEEP = 'keep'
|
|
DOWN = 'down'
|
|
|
|
@classmethod
|
|
def compare(cls, old: float, new: float) -> 'Trending':
|
|
if old > new:
|
|
return cls.DOWN
|
|
if old < new:
|
|
return cls.UP
|
|
return cls.KEEP
|