center: use different field for version downgrade

This commit is contained in:
undefined committed 2023-04-06 23:08:12 +08:00
1 parent 4de95dc8d5
commit be2e2e32af
2 files changed
+24 -5

No files matched your search

+21 -3
View File
@@ -1,5 +1,6 @@
import assert from 'assert'; import assert from 'assert';
import crypto from 'crypto-js'; import crypto from 'crypto-js';
import { lt } from 'semver';
import { import {
db, definePlugin, ForbiddenError, Handler, post, Types, yaml, db, definePlugin, ForbiddenError, Handler, post, Types, yaml,
} from 'hydrooj'; } from 'hydrooj';
@@ -43,8 +44,7 @@ class DataReportHandler extends Handler {
throw new ForbiddenError(); throw new ForbiddenError();
} }
const old = await coll.findOne({ _id: installId }); const old = await coll.findOne({ _id: installId });
await coll.updateOne({ _id: installId }, { const setPayload = {
$set: {
version: payload.version, version: payload.version,
name: payload.name, name: payload.name,
url: payload.url, url: payload.url,
@@ -62,11 +62,29 @@ class DataReportHandler extends Handler {
recordCount: payload.recordCount, recordCount: payload.recordCount,
sandbox: payload.sandbox, sandbox: payload.sandbox,
dbVersion: payload.dbVersion, dbVersion: payload.dbVersion,
};
if (old && lt(payload.version, old.version)) {
await coll.updateOne(
{ _id: installId },
{
$push: {
ips: this.request.ip,
}, },
$set: { downgrade: setPayload },
},
);
} else {
await coll.updateOne({ _id: installId }, {
$push: {
ips: this.request.ip,
},
$set: setPayload,
$setOnInsert: { init: new Date() }, $setOnInsert: { init: new Date() },
}, { upsert: true }); }, { upsert: true });
}
this.ctx.emit('center/report', this, installId, old, payload); this.ctx.emit('center/report', this, installId, old, payload);
this.response.body = { code: 0 }; // TODO deliver messages
this.response.body = { code: 0, u: lt(payload.version, old.version) };
} }
} }
+3 -2
View File
@@ -1,6 +1,6 @@
{ {
"name": "@hydrooj/center", "name": "@hydrooj/center",
"version": "0.2.3", "version": "0.2.4",
"main": "index.ts", "main": "index.ts",
"repository": "https://github.com/hydro-dev/Hydro.git", "repository": "https://github.com/hydro-dev/Hydro.git",
"author": "undefined <i@undefined.moe>", "author": "undefined <i@undefined.moe>",
@@ -10,6 +10,7 @@
"hydrooj": "*" "hydrooj": "*"
}, },
"dependencies": { "dependencies": {
"crypto-js": "^4.1.1" "crypto-js": "^4.1.1",
"semver": "^7.3.8"
} }
} }