mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-04 23:17:20 +08:00
feat:下载按站点上传排序
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import Column, Integer, String, Sequence, Float, JSON
|
||||
from sqlalchemy import Column, Integer, String, Sequence, Float, JSON, func
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.db import db_query, Base
|
||||
@@ -68,3 +68,25 @@ class SiteUserData(Base):
|
||||
@db_query
|
||||
def get_by_date(db: Session, date: str):
|
||||
return db.query(SiteUserData).filter(SiteUserData.updated_day == date).all()
|
||||
|
||||
@staticmethod
|
||||
@db_query
|
||||
def get_latest(db: Session):
|
||||
"""
|
||||
获取各站点最新一天的数据
|
||||
"""
|
||||
subquery = (
|
||||
db.query(
|
||||
SiteUserData.domain,
|
||||
func.max(SiteUserData.updated_day).label('latest_update_day')
|
||||
)
|
||||
.group_by(SiteUserData.domain)
|
||||
.subquery()
|
||||
)
|
||||
|
||||
# 主查询:按 domain 和 updated_day 获取最新的记录
|
||||
return db.query(SiteUserData).join(
|
||||
subquery,
|
||||
(SiteUserData.domain == subquery.c.domain) &
|
||||
(SiteUserData.updated_day == subquery.c.latest_update_day)
|
||||
).order_by(SiteUserData.updated_time.desc()).all()
|
||||
|
||||
+9
-4
@@ -116,15 +116,14 @@ class SiteOper(DbOper):
|
||||
"updated_day": current_day,
|
||||
"updated_time": current_time
|
||||
})
|
||||
siteuserdata = SiteUserData.get_by_domain(self._db, domain=domain,
|
||||
workdate=current_day, worktime=current_time)
|
||||
# 按站点+天判断是否存在数据
|
||||
siteuserdata = SiteUserData.get_by_domain(self._db, domain=domain, workdate=current_day)
|
||||
if siteuserdata:
|
||||
# 存在则更新
|
||||
SiteUserData.update(self._db, payload)
|
||||
else:
|
||||
# 不存在则插入
|
||||
for key, value in payload.items():
|
||||
SiteUserData(**payload).create(self._db)
|
||||
SiteUserData(**payload).create(self._db)
|
||||
return True, "更新站点用户数据成功"
|
||||
|
||||
def get_userdata(self) -> List[SiteUserData]:
|
||||
@@ -145,6 +144,12 @@ class SiteOper(DbOper):
|
||||
"""
|
||||
return SiteUserData.get_by_date(self._db, date)
|
||||
|
||||
def get_userdata_latest(self) -> List[SiteUserData]:
|
||||
"""
|
||||
获取站点最新数据
|
||||
"""
|
||||
return SiteUserData.get_latest(self._db)
|
||||
|
||||
def get_icon_by_domain(self, domain: str) -> SiteIcon:
|
||||
"""
|
||||
按域名获取站点图标
|
||||
|
||||
Reference in New Issue
Block a user