UNPKG

airship-server

Version:

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

121 lines 5.15 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 } }); yield this._db.EventDay.destroy({ where: { groupId: groupId } }); for (let day of event.days) { let i = 0; 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, isDone: false }); } else { let savedItem = yield this._db.EventItem.create({ name: eventItem.name, timeHours: eventItem.timeHours, timeMinutes: eventItem.timeMinutes, groupId: groupId }); day.items[i] = new EventItem_1.default(savedItem.id, eventItem.name, eventItem.timeHours, eventItem.timeMinutes); } i++; } } for (let day of event.days) { yield this._db.EventDay.create({ groupId, date: new Date(day.date), items: day.items.map(i => i.id) }); } 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(day)) days: [], name: event.name, city: event.city, timeZone: event.timeZone }); }); } 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(); } let daysOut = []; let days = yield this._db.EventDay.findAll({ where: { groupId } }); for (let day of days) { let itemsIds = day.items; let items = []; for (let itemId of itemsIds) { let item = yield this._db.EventItem.findOne({ where: { groupId, id: itemId } }); if (item) items.push(Serialize_1.deserialize(EventItem_1.default, item)); } daysOut.push(new EventDay_1.default(day.date.getTime(), items)); } return new Event_1.default(groupId, event.name, event.city, event.description, event.extraInfo.map(info => Serialize_1.deserialize(EventExtraInfo_1.default, info)), //event.days.map(day => deserialize(EventDay, day)), daysOut, event.cover, event.timeZone !== undefined && event.timeZone !== null ? event.timeZone : +3); }); } } exports.default = EventsService; //select * min "EventDays" where "date"::date = current_date; //# sourceMappingURL=EventsService.js.map