mirror of
https://github.com/zkldi/Tachi.git
synced 2026-10-05 13:28:08 +03:00
Add an admin delete score endpoint.
This commit is contained in:
@@ -188,5 +188,5 @@ export async function RevertImport(importDocument: ImportDocument) {
|
||||
scoreID: { $in: importDocument.scoreIDs },
|
||||
});
|
||||
|
||||
await RemoveMultipleScores(scores);
|
||||
await DeleteMultipleScores(scores);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
import db from "external/mongo/db";
|
||||
import { ONE_MINUTE } from "lib/constants/time";
|
||||
import { ChangeRootLogLevel, GetLogLevel } from "lib/logger/logger";
|
||||
import { ServerConfig } from "lib/setup/config";
|
||||
import t from "tap";
|
||||
|
||||
import deepmerge from "deepmerge";
|
||||
import { CreateFakeAuthCookie } from "test-utils/fake-auth";
|
||||
import mockApi from "test-utils/mock-api";
|
||||
import ResetDBState from "test-utils/resets";
|
||||
import { TestingIIDXSPScore } from "test-utils/test-data";
|
||||
import { ScoreDocument } from "tachi-common";
|
||||
|
||||
const LOG_LEVEL = ServerConfig.LOG_LEVEL;
|
||||
|
||||
@@ -58,3 +62,25 @@ t.test("POST /api/v1/admin/change-log-level", async (t) => {
|
||||
|
||||
t.end();
|
||||
});
|
||||
|
||||
t.test("POST /api/v1/admin/delete-score", async (t) => {
|
||||
t.beforeEach(ResetDBState);
|
||||
|
||||
await db.scores.insert(
|
||||
deepmerge<ScoreDocument>(TestingIIDXSPScore, {
|
||||
scoreID: "deleteme",
|
||||
})
|
||||
);
|
||||
|
||||
const res = await mockApi.post("/api/v1/admin/delete-score").send({
|
||||
scoreID: "deleteme",
|
||||
});
|
||||
|
||||
t.equal(res.statusCode, 200);
|
||||
|
||||
const dbScore = await db.scores.findOne({ scoreID: "deleteme" });
|
||||
|
||||
t.equal(dbScore, null, "Should remove teh score from the database.");
|
||||
|
||||
t.end();
|
||||
});
|
||||
|
||||
@@ -10,6 +10,7 @@ import { ServerConfig, ServerTypeInfo } from "lib/setup/config";
|
||||
import { Game, UserAuthLevels } from "tachi-common";
|
||||
|
||||
import db from "external/mongo/db";
|
||||
import { DeleteScore } from "lib/delete-scores/delete-scores";
|
||||
|
||||
const logger = CreateLogCtx(__filename);
|
||||
|
||||
@@ -207,4 +208,30 @@ router.post(
|
||||
}
|
||||
);
|
||||
|
||||
/**
|
||||
* Force Delete anyones score.
|
||||
*
|
||||
* @param scoreID - The scoreID to delete.
|
||||
*
|
||||
* @name POST /api/v1/admin/delete-score
|
||||
*/
|
||||
router.post("/delete-score", prValidate({ scoreID: "string" }), async (req, res) => {
|
||||
const score = await db.scores.findOne({ scoreID: req.body.scoreID });
|
||||
|
||||
if (!score) {
|
||||
return res.status(404).json({
|
||||
success: false,
|
||||
description: `This score does not exist.`,
|
||||
});
|
||||
}
|
||||
|
||||
await DeleteScore(score);
|
||||
|
||||
return res.status(200).json({
|
||||
success: true,
|
||||
description: `Removed score.`,
|
||||
body: {},
|
||||
});
|
||||
});
|
||||
|
||||
export default router;
|
||||
|
||||
Reference in New Issue
Block a user