UNPKG

@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

8 lines (7 loc) 4.17 kB
{ "version": 3, "sources": ["../src/index.ts"], "sourcesContent": ["import { IRoomCache, MatchMakerDriver, RoomCache, SortOptions, debugDriver } from '@colyseus/core';\nimport mongoose, { Document, Schema } from 'mongoose';\n\nconst RoomCacheSchema: Schema = new Schema({\n clients: { type: Number, default: 0 },\n locked: { type: Boolean, default: false },\n maxClients: { type: Number, default: Infinity },\n metadata: Schema.Types.Mixed,\n name: String,\n private: { type: Boolean, default: false },\n publicAddress: String,\n processId: String,\n roomId: String,\n unlisted: { type: Boolean, default: false }, // used for default LobbyRoom (prevent from showing up on room listing)\n}, {\n strict: false,\n timestamps: true,\n versionKey: false,\n});\n\nRoomCacheSchema.index({ name: 1, locked: -1 });\nRoomCacheSchema.index({ roomId: 1 });\n\nconst RoomCache = mongoose.model<Document>('RoomCache', RoomCacheSchema);\n\nexport class MongooseDriver implements MatchMakerDriver {\n\n constructor(connectionURI?: string) {\n\n if (mongoose.connection.readyState === mongoose.STATES.disconnected) {\n connectionURI = connectionURI || process.env.MONGO_URI || 'mongodb://127.0.0.1:27017/colyseus';\n\n mongoose.connect(connectionURI, {\n autoIndex: true,\n autoCreate: true,\n });\n\n debugDriver(\"\uD83D\uDDC4\uFE0F Connected to\", connectionURI);\n }\n }\n\n public createInstance(initialValues: any = {}) {\n return (new RoomCache(initialValues) as any);\n }\n\n public async has(roomId: string) {\n return !!(await RoomCache.findOne({ roomId }));\n };\n\n public query(conditions: Partial<IRoomCache>, sortOptions: SortOptions = {}) {\n let query = RoomCache.find(conditions, {\n _id: false,\n clients: true,\n createdAt: true,\n locked: true,\n maxClients: true,\n metadata: true,\n name: true,\n roomId: true,\n });\n\n if (sortOptions) {\n query = query.sort(sortOptions);\n }\n\n return query as any as IRoomCache[];\n }\n\n public findOne(conditions: Partial<IRoomCache>, sortOptions?: SortOptions) {\n let query = RoomCache.findOne(conditions, { _id: 0 });\n\n if (sortOptions) {\n query = query.sort(sortOptions);\n }\n\n return query as any as Promise<RoomCache>;\n }\n\n public async clear() {\n await RoomCache.deleteMany({});\n }\n\n public async cleanup(processId: string) {\n await RoomCache.deleteMany({ processId });\n }\n\n public async shutdown() {\n await mongoose.disconnect();\n }\n}\n"], "mappings": ";AAAA,SAA+D,mBAAmB;AAClF,OAAO,YAAsB,cAAc;AAE3C,IAAM,kBAA0B,IAAI,OAAO;AAAA,EACzC,SAAS,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,EACpC,QAAQ,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,EACxC,YAAY,EAAE,MAAM,QAAQ,SAAS,SAAS;AAAA,EAC9C,UAAU,OAAO,MAAM;AAAA,EACvB,MAAM;AAAA,EACN,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,EACzC,eAAe;AAAA,EACf,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,UAAU,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA;AAC5C,GAAG;AAAA,EACD,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,YAAY;AACd,CAAC;AAED,gBAAgB,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,CAAC;AAC7C,gBAAgB,MAAM,EAAE,QAAQ,EAAE,CAAC;AAEnC,IAAM,YAAY,SAAS,MAAgB,aAAa,eAAe;AAEhE,IAAM,iBAAN,MAAiD;AAAA,EAEtD,YAAY,eAAwB;AAElC,QAAI,SAAS,WAAW,eAAe,SAAS,OAAO,cAAc;AACnE,sBAAgB,iBAAiB,QAAQ,IAAI,aAAa;AAE1D,eAAS,QAAQ,eAAe;AAAA,QAC9B,WAAW;AAAA,QACX,YAAY;AAAA,MACd,CAAC;AAED,kBAAY,gCAAoB,aAAa;AAAA,IAC/C;AAAA,EACF;AAAA,EAEO,eAAe,gBAAqB,CAAC,GAAG;AAC7C,WAAQ,IAAI,UAAU,aAAa;AAAA,EACrC;AAAA,EAEA,MAAa,IAAI,QAAgB;AAC/B,WAAO,CAAC,CAAE,MAAM,UAAU,QAAQ,EAAE,OAAO,CAAC;AAAA,EAC9C;AAAA,EAEO,MAAM,YAAiC,cAA2B,CAAC,GAAG;AAC3E,QAAI,QAAQ,UAAU,KAAK,YAAY;AAAA,MACrC,KAAK;AAAA,MACL,SAAS;AAAA,MACT,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,MAAM;AAAA,MACN,QAAQ;AAAA,IACV,CAAC;AAED,QAAI,aAAa;AACf,cAAQ,MAAM,KAAK,WAAW;AAAA,IAChC;AAEA,WAAO;AAAA,EACT;AAAA,EAEO,QAAQ,YAAiC,aAA2B;AACzE,QAAI,QAAQ,UAAU,QAAQ,YAAY,EAAE,KAAK,EAAE,CAAC;AAEpD,QAAI,aAAa;AACf,cAAQ,MAAM,KAAK,WAAW;AAAA,IAChC;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAa,QAAQ;AACnB,UAAM,UAAU,WAAW,CAAC,CAAC;AAAA,EAC/B;AAAA,EAEA,MAAa,QAAQ,WAAmB;AACtC,UAAM,UAAU,WAAW,EAAE,UAAU,CAAC;AAAA,EAC1C;AAAA,EAEA,MAAa,WAAW;AACtB,UAAM,SAAS,WAAW;AAAA,EAC5B;AACF;", "names": [] }