# 删除和上传成绩

from loguru import logger
from Config import *
from HelperLogInOut import apiLogin, apiLogout, generateTimestamp
from HelperFullPlay import implFullPlayAction

def implDeleteMusicRecord(userId: int, currentLoginTimestamp:int, currentLoginResult, musicId:int, levelId:int) -> str:
    musicData= ({
    "musicId": musicId,
    "level": levelId,
    "playCount": 1,
    "achievement": 0,
    "comboStatus": 0,
    "syncStatus": 0,
    "deluxscoreMax": 0,
    "scoreRank": 0,
    "extNum1": 0
})
    userAllPatches = {
    "upsertUserAll": {
        "userMusicDetailList": [musicData],
        "isNewMusicDetailList": "0"  # 0为编辑,即可删除掉成绩
    }}
    result = implFullPlayAction(userId, currentLoginTimestamp, currentLoginResult, musicData, userAllPatches)
    return result

def implUploadMusicRecord(userId: int, currentLoginTimestamp:int, currentLoginResult, musicId:int, levelId:int, achievement:int, dxScore:int) -> str:
    """
    VERY EARLY STAGE OF UPLOADING SCORES!!!! DO NOT USE THIS!!!!
    上传成绩的参考实现。
    """

    # 要上传的数据
    musicData= ({
    "musicId": musicId,
    "level": levelId,
    "playCount": 1,
    "achievement": achievement,
    "comboStatus": 0,
    "syncStatus": 0,
    "deluxscoreMax": dxScore,
    "scoreRank": 0,
    "extNum1": 0
})
    userAllPatches = {
    "upsertUserAll": {
        "userMusicDetailList": [musicData],
        "isNewMusicDetailList": "1"  # 0编辑 1插入
    }}
    result = implFullPlayAction(userId, currentLoginTimestamp, currentLoginResult, musicData, userAllPatches)
    return result

if __name__ == "__main__":
    userId = testUid
    currentLoginTimestamp = generateTimestamp()
    loginResult = apiLogin(currentLoginTimestamp, userId)

    musicId = 852 #852 is tiamat
    levelId = 3 #3 is MASTER

    if loginResult['returnCode'] != 1:
        logger.info("登录失败")
        exit()
    try:
        logger.info(implDeleteMusicRecord(userId, currentLoginTimestamp, loginResult, musicId, levelId))
        #logger.info(implUploadMusicRecord(userId, currentLoginTimestamp, loginResult, musicId, levelId, 1000000, 100))
        logger.info(apiLogout(currentLoginTimestamp, userId))
    finally:
        logger.info(apiLogout(currentLoginTimestamp, userId))
        #logger.warning("Error")