UNPKG

airship-server

Version:

Airship is a framework for Node.JS & TypeScript that helps you to write big, scalable and maintainable API servers.

78 lines 3.55 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const Event_1 = require("../domain/entity/events/Event"); const NoEventException_1 = require("../domain/entity/exceptions/NoEventException"); const Serialize_1 = require("../../modules/serialize/Serialize"); const EventExtraInfo_1 = require("../domain/entity/events/EventExtraInfo"); const EventDay_1 = require("../domain/entity/events/EventDay"); const EventItem_1 = require("../domain/entity/events/EventItem"); class EventsService { constructor(db) { this._db = db; } saveEvent(groupId, event) { return __awaiter(this, void 0, void 0, function* () { yield this._db.Event.destroy({ where: { groupId: groupId } }); for (let day of event.days) { for (let eventItem of day.items) { let item = yield this._db.EventItem.findOne({ where: { groupId, id: eventItem.id } }); if (item) { item.update({ name: eventItem.name, timeHours: eventItem.timeHours, timeMinutes: eventItem.timeMinutes }); } else { let savedItem = yield this._db.EventItem.create({ name: eventItem.name, timeHours: eventItem.timeHours, timeMinutes: eventItem.timeMinutes, groupId: groupId }); eventItem = new EventItem_1.default(savedItem.id, eventItem.name, eventItem.timeHours, eventItem.timeMinutes); } } } yield this._db.Event.create({ groupId, description: event.description, cover: event.cover, extraInfo: event.extraInfo.map(info => Serialize_1.serialize(info)), days: event.days.map(day => Serialize_1.serialize(day)) }); }); } getEvent(groupId) { return __awaiter(this, void 0, void 0, function* () { let event = yield this._db.Event.findOne({ where: { groupId } }); if (!event) { throw new NoEventException_1.default(); } return new Event_1.default(groupId, event.description, event.extraInfo.map(info => Serialize_1.deserialize(EventExtraInfo_1.default, info)), event.days.map(day => Serialize_1.deserialize(EventDay_1.default, day)), event.cover); }); } } exports.default = EventsService; //# sourceMappingURL=EventsService.js.map