UNPKG

lh-sdk

Version:

LassondeHacks REST API SDK in Typescript

129 lines (107 loc) 3.72 kB
import { Model, SDK, Response } from './common'; module Event { export interface EventInterface { id: number; begin_time: Date; end_time: Date; name: string; image: string; } interface CreateEventResponse extends Response { event: EventInterface; } interface GetEventByIdResponse extends Response { event: EventInterface; } interface GetAllEventResponse extends Response { events: EventInterface[]; } interface GetActivitiesResponse extends Response { activities: any[]; } export async function create(event: EventInterface): Promise<Instance> { try { let res = <CreateEventResponse>await SDK.getInstance().POST("event", event); return new Instance(res.event); } catch (err) { return null; } } export async function getById(id: number): Promise<Instance> { try { let res = <GetEventByIdResponse>await SDK.getInstance().GET("event/" + String(id)); if (res.success && res.event) { return new Instance(res.event); } else { return null; } } catch (err) { return null; } } export async function getAll(id: number): Promise<Instance[]> { try { let res = <GetAllEventResponse>await SDK.getInstance().GET("event"); if (res.success && res.events) { let events: Instance[] = []; for (let event of res.events) { events.push(new Instance(event)); } return events; } else { return null; } } catch (err) { return null; } } export class Instance implements EventInterface, Model { public id: number; public begin_time: Date; public end_time: Date; public name: string; public image: string; constructor(event: EventInterface) { this.id = event.id; this.begin_time = new Date(event.begin_time); this.end_time = new Date(event.end_time); this.name = event.name; this.image = event.image; } public async save(): Promise<boolean> { return new Promise<boolean>(async (resolve, reject) => { let result = <Response>await SDK.getInstance().PUT("event/" + String(this.id), { begin_date: this.begin_time, end_date: this.end_time, name: this.name, image: this.image }); if (result.success) { resolve(true); } else { reject(result.err); } }); } public async delete(): Promise<boolean> { return new Promise<boolean>(async (resolve, reject) => { let result = <Response>await SDK.getInstance().DELETE("event/" + String(this.id), {}); if (result.success) { resolve(true); } else { reject(result.err); } }); } public async getActivities() { return new Promise<any>(async (resolve, reject) => { let result = <GetActivitiesResponse>await SDK.getInstance(). GET("event/" + String(this.id) + "/activity"); if (result.success && result.activities) { resolve(result.activities); } }); } } } export = Event;