-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
GNMD-1 Architecture Design
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); | ||
} | ||
} |
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
import { DataAccessBase } from "../dao/data-access-base"; | ||
|
||
export abstract class BusinessBase { | ||
|
||
private dataAccessObject: DataAccessBase<BusinessBase>; | ||
|
||
constructor(db: FirebaseFirestore.Firestore){ | ||
// TODO | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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){} | ||
} | ||
|