1
0
mirror of https://github.com/spacebarchat/server.git synced 2024-09-22 18:51:36 +02:00
server/dist/util/MongoBigInt.js
2021-03-03 21:24:34 +01:00

76 lines
2.6 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const mongoose_1 = __importDefault(require("mongoose"));
class LongSchema extends mongoose_1.default.SchemaType {
constructor() {
super(...arguments);
this.$conditionalHandlers = {
$lt: this.handleSingle,
$lte: this.handleSingle,
$gt: this.handleSingle,
$gte: this.handleSingle,
$ne: this.handleSingle,
$in: this.handleArray,
$nin: this.handleArray,
$mod: this.handleArray,
$all: this.handleArray,
$bitsAnySet: this.handleArray,
$bitsAllSet: this.handleArray,
};
}
handleSingle(val) {
return this.cast(val, null, null, "handle");
}
handleArray(val) {
var self = this;
return val.map(function (m) {
return self.cast(m, null, null, "handle");
});
}
checkRequired(val) {
return null != val;
}
cast(val, scope, init, type) {
if (null === val)
return val;
if ("" === val)
return null;
if (typeof val === "bigint" && type === "query") {
return mongoose_1.default.mongo.Long.fromString(val.toString());
}
if (val instanceof mongoose_1.default.mongo.Long) {
if (type === "handle" || init == false)
return val;
return BigInt(val.toString());
}
if (val instanceof Number || "number" == typeof val)
return BigInt(val);
if (!Array.isArray(val) && val.toString)
return BigInt(val.toString());
// @ts-ignore
throw new SchemaType.CastError("Long", val);
}
castForQuery($conditional, value) {
var handler;
if (2 === arguments.length) {
// @ts-ignore
handler = this.$conditionalHandlers[$conditional];
if (!handler) {
throw new Error("Can't use " + $conditional + " with Long.");
}
return handler.call(this, value);
}
else {
return this.cast($conditional, null, null, "query");
}
}
}
LongSchema.cast = mongoose_1.default.SchemaType.cast;
LongSchema.set = mongoose_1.default.SchemaType.set;
LongSchema.get = mongoose_1.default.SchemaType.get;
mongoose_1.default.Schema.Types.Long = LongSchema;
mongoose_1.default.Types.Long = mongoose_1.default.mongo.Long;
//# sourceMappingURL=MongoBigInt.js.map