UNPKG

gamoraa-mongostore

Version:

Plugin provides firestore kind of functionality but based on mongodb.

123 lines 4.38 kB
"use strict"; 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 }); const { ReplSet } = require('mongodb-topology-manager'); const { Schema, Types } = require('mongoose'); const mongoose_1 = __importDefault(require("mongoose")); const gamoraa_1 = __importDefault(require("gamoraa")); const mongo_store_service_1 = __importDefault(require("../src/mongo-store-service")); const authorSchema = new Schema({ name: { type: String, required: true }, age: { type: Number, required: false }, stories: [{ type: Schema.ObjectId, ref: 'storeis' }], }); const storySchema = new Schema({ title: { type: String, required: true }, description: { type: String, required: false }, rating: { type: Number, required: true }, creator: { type: Types.ObjectId, ref: 'authors' }, }); /** * */ function startServer() { return __awaiter(this, void 0, void 0, function* () { console.log(new Date(), `mongoose version: ${mongoose_1.default.version}`); yield setupReplicaSet(); const uri = 'mongodb://localhost:31000,localhost:31001,localhost:31002/test_db?replicaSet=rs0'; const conn = yield createDatabaseConnection(uri); const authorModel = conn.model('authors', authorSchema); const storyModel = conn.model('storeis', storySchema); const server = new gamoraa_1.default({ address: '0.0.0.0', port: 50051, }); server.register(mongo_store_service_1.default, { connection: conn, modelsOptions: [ { model: authorModel, }, { model: storyModel, }, ], }); server.startInsecure(); }); } /** * * @param uri */ function createDatabaseConnection(uri) { return __awaiter(this, void 0, void 0, function* () { try { const conn = yield mongoose_1.default.createConnection(uri, { useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true, poolSize: 7, useFindAndModify: false, }); return conn; } catch (error) { console.log(error); throw error; } }); } /** * */ function setupReplicaSet() { return __awaiter(this, void 0, void 0, function* () { const bind_ip = 'localhost'; // Starts a 3-node replica set on ports 31000, 31001, 31002, replica set // name is "rs0". const replSet = new ReplSet('mongod', [ { options: { port: 31000, dbpath: `${__dirname}/../../data/db/31000`, bind_ip, }, }, { options: { port: 31001, dbpath: `${__dirname}/../../data/db/31001`, bind_ip, }, }, { options: { port: 31002, dbpath: `${__dirname}/../../data/db/31002`, bind_ip, }, }, ], { replSet: 'rs0' }); // Initialize the replica set yield replSet.purge(); yield replSet.stop(); yield replSet.start(); console.log(new Date(), 'Replica set started...'); }); } startServer() .then(_ => console.log('started')) .catch(err => console.log(err)); //# sourceMappingURL=example.js.map