Skip to content

Commit

Permalink
Merge pull request #1 from gustapp/GNMD-1
Browse files Browse the repository at this point in the history
GNMD-1 Architecture Design
  • Loading branch information
gustapp committed Jan 24, 2019
2 parents 1ea523e + f29f916 commit 96d1fd4
Show file tree
Hide file tree
Showing 56 changed files with 880 additions and 291 deletions.
11 changes: 10 additions & 1 deletion .vscode/launch.json
Expand Up @@ -2,10 +2,19 @@
"version": "0.2.0",
"configurations": [
{
"name": "Node.JS (local)",
"name": "Cloud functions debug",
"type": "node",
"request": "attach",
"port": 9229
},
{
"type": "node",
"request": "launch",
"name": "Run script",
"program": "${workspaceFolder}/scripts/firestore.manual_fill.js",
"outFiles": [
"${workspaceFolder}/**/*.js"
]
}
]
}
39 changes: 39 additions & 0 deletions functions/src/dao/data-access-base.ts
@@ -0,0 +1,39 @@
export abstract class DataAccessBase<T> {

protected abstract collectionId;

constructor(private db: FirebaseFirestore.Firestore){}

public get(id?: string) {
// Get only one entity
if(id){
return this.db.collection(this.collectionId).doc(id).get().then(doc => {
if (doc.exists) {
// returns orm data
return this.map(doc.data());
} else {
// no document found
return undefined;
}
}).catch(error => {
return error;
});
}
// Get collection of documents
else {
return this.db.collection(this.collectionId).get().then(querySnapshot => {
// Collection of retrieved documents
let result = [];
querySnapshot.forEach(doc => {
result.push(this.map(doc.data()));
});
return result;

}).catch(error => {
return error;
});
}
}

protected abstract map(data: FirebaseFirestore.DocumentData) : T;
}
11 changes: 11 additions & 0 deletions functions/src/dao/data-access-classes.ts
@@ -0,0 +1,11 @@
import { DataAccessBase } from "./data-access-base";
import { ClassProxy } from "../model/business-class";

export class DataAccessClasses extends DataAccessBase<ClassProxy> {

protected collectionId = 'cursos';

protected map(data: FirebaseFirestore.DocumentData) : ClassProxy {
return new ClassProxy(data.codigo_turma, data.tipo_turma);
}
}
11 changes: 11 additions & 0 deletions functions/src/dao/data-access-courses.ts
@@ -0,0 +1,11 @@
import { DataAccessBase } from "./data-access-base";
import { CourseProxy } from "../model/business-course";

export class DataAccessCourse extends DataAccessBase<CourseProxy> {

protected collectionId = 'cursos';

protected map(data: FirebaseFirestore.DocumentData) : CourseProxy {
return new CourseProxy(data.sigla, data.name, data.objetivos, data.docentes, data.programa_resumido, data.programa, data.avaliacao, data.bibliografia, data.carga_horaria, data.creditos, data.requisitos);
}
}
11 changes: 11 additions & 0 deletions functions/src/dao/data-access-schedules.ts
@@ -0,0 +1,11 @@
import { DataAccessBase } from "./data-access-base";
import { Schedule } from "../model/business-class";

export class DataAccessSchedules extends DataAccessBase<Schedule> {

protected collectionId = 'cursos';

protected map(data: FirebaseFirestore.DocumentData) : Schedule {
return new Schedule(data.dia, data.horario_inicio, data.horario_fim, data.professor);
}
}
5 changes: 0 additions & 5 deletions functions/src/handlers/jupiter/info/fallbackGetCourseId2.ts

This file was deleted.

5 changes: 0 additions & 5 deletions functions/src/handlers/jupiter/info/getCourse.ts

This file was deleted.

5 changes: 0 additions & 5 deletions functions/src/handlers/jupiter/info/getCourseCredit.ts

This file was deleted.

This file was deleted.

This file was deleted.

5 changes: 0 additions & 5 deletions functions/src/handlers/jupiter/info/getCourseInfo.ts

This file was deleted.

5 changes: 0 additions & 5 deletions functions/src/handlers/jupiter/info/getCourseRequirements.ts

This file was deleted.

5 changes: 0 additions & 5 deletions functions/src/handlers/jupiter/info/getCourseSchedule.ts

This file was deleted.

5 changes: 0 additions & 5 deletions functions/src/handlers/jupiter/info/getCourseTeacher.ts

This file was deleted.

5 changes: 0 additions & 5 deletions functions/src/handlers/jupiter/info/getCourseWorkload.ts

This file was deleted.

10 changes: 0 additions & 10 deletions functions/src/handlers/jupiter/info/index.ts

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

5 changes: 0 additions & 5 deletions functions/src/handlers/jupiter/suggestion/index.ts

This file was deleted.

6 changes: 0 additions & 6 deletions functions/src/handlers/silly/fallback.handler.ts

This file was deleted.

3 changes: 0 additions & 3 deletions functions/src/handlers/silly/index.ts

This file was deleted.

16 changes: 0 additions & 16 deletions functions/src/handlers/silly/test.handler.ts

This file was deleted.

5 changes: 0 additions & 5 deletions functions/src/handlers/silly/welcome.handler.ts

This file was deleted.

10 changes: 3 additions & 7 deletions functions/src/index.ts
Expand Up @@ -49,13 +49,9 @@ export const dialogflowFirebaseFulfillment = functions.https.onRequest((request,
intentMap.set('GetCourseTeacher', (client) => facade.getCourseTeacher(client)); //ok
intentMap.set('GetCourseSchedule', (client) => facade.getCourseSchedule(client)); //ok
intentMap.set('GetCourseCredit', (client) => facade.getCourseCredit(client)); //ok
intentMap.set('getCourseFromScheduleDay', facade.getCourseFromScheduleDay);
intentMap.set('getCourseFromScheduleDayHour', facade.getCourseFromScheduleDayHour);
intentMap.set('getCourseSuggestion', facade.getCourseSuggestion);
intentMap.set('getCourseSuggestionBefore', facade.getCourseSuggestionBefore);
intentMap.set('getCourseSuggestionAfter', facade.getCourseSuggestionAfter);
intentMap.set('getCourseSuggestionBetween', facade.getCourseSuggestionBetween);
intentMap.set('getCourseSuggestionDays', facade.getCourseSuggestionDays);
intentMap.set('getCourseFromScheduleDay', facade.getCourseFromScheduleDay); //not implemented
intentMap.set('getCourseFromScheduleDayHour', facade.getCourseFromScheduleDayHour); //not implemented
intentMap.set('GetCourseSuggestion', facade.getCourseSuggestion);

agent.handleRequest(intentMap);
});
20 changes: 0 additions & 20 deletions functions/src/interfaces/curso.ts

This file was deleted.

10 changes: 10 additions & 0 deletions functions/src/model/business-base.ts
@@ -0,0 +1,10 @@
import { DataAccessBase } from "../dao/data-access-base";

export abstract class BusinessBase {

private dataAccessObject: DataAccessBase<BusinessBase>;

constructor(db: FirebaseFirestore.Firestore){
// TODO
}
}
34 changes: 34 additions & 0 deletions functions/src/model/business-class.ts
@@ -0,0 +1,34 @@
interface IClass {
code: String;
type: String;
getSchedules(): Schedule[];
}

export class Class implements IClass {

constructor(private readonly schedules: Schedule[], readonly code: string, readonly type: string){}

public getSchedules(): Schedule[]{
return this.schedules;
}
}

export class ClassProxy implements IClass {
private class: IClass;

constructor(readonly code: string, readonly type: string){}

public getSchedules(): Schedule[] {
if(!this.class){
// let daSchedules = new DataAccessSchedules()
// this.class =
}

return this.class.getSchedules();
}
}

export class Schedule {
constructor(readonly weekday: string, readonly start: string, readonly end: string, readonly teacher: string){}
}

0 comments on commit 96d1fd4

Please sign in to comment.