UNPKG

mongoe

Version:

MongoDB driver with relational functionalities

168 lines (163 loc) 8.8 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 __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; Object.defineProperty(exports, "__esModule", { value: true }); var _1 = require("."); function test() { return __awaiter(this, void 0, void 0, function () { var db, Author, Book, Sale, _a, king, crichton, obertone, lucas, starWars1, _b, prey, next, disclosure, _c, carrie, thinner, _d, s1, s2, s3, s4; return __generator(this, function (_e) { switch (_e.label) { case 0: db = new _1.Database("mongodb://localhost:27017", "mongoe_test"); return [4 /*yield*/, db.dropDatabase()]; case 1: _e.sent(); // First example console.log("-- The Author example --"); console.log("Setting Author, Book and Sale collections and relations..."); Author = new _1.Collection(db, "Author"); Book = new _1.Collection(db, "Book", { foreignKeys: { author: ["Author", _1.Policy.Delete] } }); Sale = new _1.Collection(db, "Sale", { foreignKeys: { book: ["Book", _1.Policy.Delete] } }); console.log("Relations :", JSON.stringify(db.relations, null, 2)); console.log("Inserting many authors..."); return [4 /*yield*/, Author.insertMany([ { name: "Steven King", age: 64 }, { name: "Michael Crichton", age: 54 }, { name: "Laurent Obertone", age: 46 } ])]; case 2: _a = _e.sent(), king = _a[0], crichton = _a[1], obertone = _a[2]; console.log([king, crichton, obertone]); console.log("Inserting one author..."); return [4 /*yield*/, Author.insertOne({ name: "George Lucas", age: 70 })]; case 3: lucas = _e.sent(); console.log(lucas); console.log("Inserting a book from George Lucas..."); return [4 /*yield*/, Book.insertOne({ title: "Star Wars 1", author: lucas._id })]; case 4: starWars1 = _e.sent(); console.log(starWars1); console.log("Inserting three books from Crichton..."); return [4 /*yield*/, Book.insertMany([ { title: "Prey", author: crichton._id }, { title: "Next", author: crichton._id }, { title: "Disclosure", author: crichton._id } ])]; case 5: _b = _e.sent(), prey = _b[0], next = _b[1], disclosure = _b[2]; console.log([prey, next, disclosure]); console.log("Inserting two books from King..."); return [4 /*yield*/, Book.insertMany([ { title: "Carrie", author: king._id }, { title: "Thinner", author: king._id } ])]; case 6: _c = _e.sent(), carrie = _c[0], thinner = _c[1]; console.log([carrie, thinner]); console.log("Inserting some sales..."); return [4 /*yield*/, Sale.insertMany([ { date: new Date().toISOString(), customer: "Pierre Jacques", book: prey._id }, { date: new Date().toISOString(), customer: "Henri Dupond", book: starWars1._id }, { date: new Date().toISOString(), customer: "Guillaume Jean", book: carrie._id }, { date: new Date().toISOString(), customer: "Martin Hubert", book: next._id } ])]; case 7: _d = _e.sent(), s1 = _d[0], s2 = _d[1], s3 = _d[2], s4 = _d[3]; console.log([s1, s2, s3, s4]); console.log("Deleting Crichton from Author..."); return [4 /*yield*/, Author.deleteOne({ _id: crichton._id })]; case 8: _e.sent(); /*console.log("Retrieving all remaining books..."); console.log(await Book.find({}));*/ // Second example /*console.log("-- The Element - Parameter example --"); type Element = { _id: ObjectId; label: string; }; type Parameter = { _id: ObjectId; label: string; element: ObjectId | null; }; const Element = new Collection<Element>(db, "Element"); const Parameter = new Collection<Parameter>(db, "Parameter", { relation: { foreignKeys: { element: [Element, Policy.Nullify] } } });*/ // End console.log("Done."); process.exit(); return [2 /*return*/]; } }); }); } test();