@colyseus/mongoose-driver
Version:
<div align="center"> <a href="https://github.com/colyseus/colyseus"> <img src="media/logo.svg?raw=true" width="60%" height="300" /> </a> <br> <br> <a href="https://npmjs.com/package/colyseus"> <img src="https://img.shields.io/npm/dm/coly
109 lines (108 loc) • 3.82 kB
JavaScript
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var index_exports = {};
__export(index_exports, {
MongooseDriver: () => MongooseDriver
});
module.exports = __toCommonJS(index_exports);
var import_core = require("@colyseus/core");
var import_mongoose = __toESM(require("mongoose"));
const RoomCacheSchema = new import_mongoose.Schema({
clients: { type: Number, default: 0 },
locked: { type: Boolean, default: false },
maxClients: { type: Number, default: Infinity },
metadata: import_mongoose.Schema.Types.Mixed,
name: String,
private: { type: Boolean, default: false },
publicAddress: String,
processId: String,
roomId: String,
unlisted: { type: Boolean, default: false }
// used for default LobbyRoom (prevent from showing up on room listing)
}, {
strict: false,
timestamps: true,
versionKey: false
});
RoomCacheSchema.index({ name: 1, locked: -1 });
RoomCacheSchema.index({ roomId: 1 });
const RoomCache = import_mongoose.default.model("RoomCache", RoomCacheSchema);
class MongooseDriver {
constructor(connectionURI) {
if (import_mongoose.default.connection.readyState === import_mongoose.default.STATES.disconnected) {
connectionURI = connectionURI || process.env.MONGO_URI || "mongodb://127.0.0.1:27017/colyseus";
import_mongoose.default.connect(connectionURI, {
autoIndex: true,
autoCreate: true
});
(0, import_core.debugDriver)("\u{1F5C4}\uFE0F Connected to", connectionURI);
}
}
createInstance(initialValues = {}) {
return new RoomCache(initialValues);
}
async has(roomId) {
return !!await RoomCache.findOne({ roomId });
}
query(conditions, sortOptions = {}) {
let query = RoomCache.find(conditions, {
_id: false,
clients: true,
createdAt: true,
locked: true,
maxClients: true,
metadata: true,
name: true,
roomId: true
});
if (sortOptions) {
query = query.sort(sortOptions);
}
return query;
}
findOne(conditions, sortOptions) {
let query = RoomCache.findOne(conditions, { _id: 0 });
if (sortOptions) {
query = query.sort(sortOptions);
}
return query;
}
async clear() {
await RoomCache.deleteMany({});
}
async cleanup(processId) {
await RoomCache.deleteMany({ processId });
}
async shutdown() {
await import_mongoose.default.disconnect();
}
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
MongooseDriver
});