graphql-compose-mongoose
Version:
Plugin for `graphql-compose` which derive a graphql types from a mongoose model.
60 lines • 2.57 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Types = exports.Schema = exports.mongoose = void 0;
exports.getPortFree = getPortFree;
const mongoose_1 = __importDefault(require("mongoose"));
exports.mongoose = mongoose_1.default;
const mongodb_memory_server_core_1 = __importDefault(require("mongodb-memory-server-core"));
const net_1 = __importDefault(require("net"));
const { Schema, Types } = mongoose_1.default;
exports.Schema = Schema;
exports.Types = Types;
mongoose_1.default.Promise = Promise;
function getPortFree() {
return __awaiter(this, void 0, void 0, function* () {
return new Promise((res) => {
const srv = net_1.default.createServer();
srv.listen(0, () => {
const port = srv.address().port;
srv.close(() => res(port));
});
});
});
}
const originalConnect = mongoose_1.default.connect;
mongoose_1.default.createConnection = (() => __awaiter(void 0, void 0, void 0, function* () {
const mongoServer = yield mongodb_memory_server_core_1.default.create({
instance: {
port: yield getPortFree(),
},
});
const mongoUri = mongoServer.getUri();
originalConnect.bind(mongoose_1.default)(mongoUri, {});
mongoose_1.default.connection.on('error', (e) => {
if (e.message.code === 'ETIMEDOUT') {
console.error(e);
}
else {
throw e;
}
});
mongoose_1.default.connection.once('open', () => {
});
mongoose_1.default.connection.once('disconnected', () => {
mongoServer.stop();
});
}));
mongoose_1.default.connect = mongoose_1.default.createConnection;
//# sourceMappingURL=mongooseCommon.js.map