fix(upload): 处理重复 ID,出现 DuplicateKey 时替换现有文档并启用

This commit is contained in:
2025-11-22 22:29:50 +08:00
parent 3d611a9c46
commit 4da81d16dc

9
app.py
View File

@@ -33,6 +33,7 @@ from flask_session import Session
from flask_wtf.csrf import CSRFProtect, generate_csrf, CSRFError from flask_wtf.csrf import CSRFProtect, generate_csrf, CSRFError
from ffmpy import FFmpeg from ffmpy import FFmpeg
from pymongo import MongoClient from pymongo import MongoClient
from pymongo.errors import DuplicateKeyError
from redis import Redis from redis import Redis
def take_config(name, required=False): def take_config(name, required=False):
@@ -852,8 +853,12 @@ def upload_file():
db_entry['enabled'] = True db_entry['enabled'] = True
pprint.pprint(db_entry) pprint.pprint(db_entry)
# mongoDBにデータをぶち込む # mongoDBにデータをぶち込む重複IDは上書き
client['taiko']["songs"].insert_one(db_entry) coll = client['taiko']["songs"]
try:
coll.insert_one(db_entry)
except DuplicateKeyError:
coll.replace_one({"id": db_entry["id"]}, db_entry, upsert=True)
# キャッシュ削除(/api/songs # キャッシュ削除(/api/songs
try: try:
app.cache.delete_memoized(route_api_songs) app.cache.delete_memoized(route_api_songs)