You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// EXTERNA -> FRAMEWORK / DRIVER / UI -> Detalles de implementacion// MOCKS -> STUBS// TODO -> crear la interfaz BankAccountinterfaceDBBankAccount{id: string;data: BankAccount;}enumStatusStates{"SUCCESS"="sucess","FAILED"="failed",}interfaceStatus{status: StatusStates;message: string;}// Creamos la interfaz para un banco para abstraer la implementacióninterfaceDBBankInterface{addOne: (bdUser: DBBankAccount)=>Status;getOne: (id: string)=>Status;}classDBBankimplementsDBBankInterface{listOfAccounts=newMap<string,BankAccount>();constructor(){}addOne(bdUser: DBBankAccount){this.listOfAccounts.set(bdUser.id,bdUser.data);return{status: StatusStates.SUCCESS,message: "Se pudo guardar correctamente",};}getOne(id: string){constuser=this.listOfAccounts.get(id);if(!user){return{status: StatusStates.FAILED,message: `couldn't find the bankAccount user`,};}return{status: StatusStates.SUCCESS,message: "bankAccount user found"};}}constbd=newDBBank();// ADAPTERS -> NEXO entre USE CASE y EXTERNA// NUNCA ACCEDER DE MANERA DIRECTA A UNA CAPA EXTERNA// Creamos la interfaz para un el adaptador de la DB para abstraer la implementacióninterfaceDBBankAdapterInterface{addOne(user: User): Status;getOne(id: string): Status;}classDBAdapterimplementsDBBankAdapterInterface{constructor(privatereadonlydb: DBBank){}addOne(user: User){constnewBankAccount=newBankAccount(user);constformattedData={id: user.name,data: newBankAccount,};returnthis.db.addOne(formattedData);}getOne(id: string){returnthis.getOne(id);}}// USE CASES -> Reglas de aplicaciónclassApp{constructor(privatereadonlydbAdapter: DBBankAdapterInterface){}register(user: User){try{this.dbAdapter.addOne(user);return{status: StatusStates.SUCCESS,message: "anduvo papaaaaaa"};}catch(e: any){return{status: StatusStates.FAILED,message: "no anduvo naaaa"};}}}// DOMINIOinterfaceUser{name: string;lastName: string;age: number;}classBankAccount{user: User;minimumAge=18;constructor(user: User){if(this.checkMinimumAge(user)){this.user=user;}}privatecheckMinimumAge(user: User){returnuser.age>=this.minimumAge;}}