├── .gitignore ├── create.sql ├── jest.config.js ├── package.json ├── patterns.txt ├── resources ├── clean_architecture.png ├── code_design_architecture.png ├── diagrama_clean_architecture.png ├── dip1.png ├── dip2.png ├── portsandadapters.png ├── test_first.png └── test_pyramid.png ├── solid.txt ├── src ├── application │ ├── decorator │ │ └── LoggerDecorator.ts │ ├── presenter │ │ └── Presenter.ts │ ├── repository │ │ └── ContractRepository.ts │ └── usecase │ │ ├── GenerateInvoices.ts │ │ ├── SendEmail.ts │ │ └── Usecase.ts ├── domain │ ├── AccrualBasisStrategy.ts │ ├── CashBasisStrategy.ts │ ├── Contract.ts │ ├── Invoice.ts │ ├── InvoiceGenerationFactory.ts │ ├── InvoiceGenerationStrategy.ts │ └── Payment.ts ├── infra │ ├── database │ │ ├── DatabaseConnection.ts │ │ └── PgPromiseAdapter.ts │ ├── http │ │ ├── ExpressAdapter.ts │ │ ├── HttpServer.ts │ │ └── MainController.ts │ ├── mediator │ │ └── Mediator.ts │ ├── presenter │ │ ├── CsvPresenter.ts │ │ └── JsonPresenter.ts │ └── repository │ │ └── ContractDatabaseRepository.ts └── main.ts ├── test ├── Contract.test.ts ├── GenerateInvoices.test.ts └── api.test.ts ├── tsconfig.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /create.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/create.sql -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/jest.config.js -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/package.json -------------------------------------------------------------------------------- /patterns.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/patterns.txt -------------------------------------------------------------------------------- /resources/clean_architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/resources/clean_architecture.png -------------------------------------------------------------------------------- /resources/code_design_architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/resources/code_design_architecture.png -------------------------------------------------------------------------------- /resources/diagrama_clean_architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/resources/diagrama_clean_architecture.png -------------------------------------------------------------------------------- /resources/dip1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/resources/dip1.png -------------------------------------------------------------------------------- /resources/dip2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/resources/dip2.png -------------------------------------------------------------------------------- /resources/portsandadapters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/resources/portsandadapters.png -------------------------------------------------------------------------------- /resources/test_first.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/resources/test_first.png -------------------------------------------------------------------------------- /resources/test_pyramid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/resources/test_pyramid.png -------------------------------------------------------------------------------- /solid.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/solid.txt -------------------------------------------------------------------------------- /src/application/decorator/LoggerDecorator.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/application/decorator/LoggerDecorator.ts -------------------------------------------------------------------------------- /src/application/presenter/Presenter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/application/presenter/Presenter.ts -------------------------------------------------------------------------------- /src/application/repository/ContractRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/application/repository/ContractRepository.ts -------------------------------------------------------------------------------- /src/application/usecase/GenerateInvoices.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/application/usecase/GenerateInvoices.ts -------------------------------------------------------------------------------- /src/application/usecase/SendEmail.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/application/usecase/SendEmail.ts -------------------------------------------------------------------------------- /src/application/usecase/Usecase.ts: -------------------------------------------------------------------------------- 1 | export default interface Usecase { 2 | execute (input: any): Promise; 3 | } 4 | -------------------------------------------------------------------------------- /src/domain/AccrualBasisStrategy.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/domain/AccrualBasisStrategy.ts -------------------------------------------------------------------------------- /src/domain/CashBasisStrategy.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/domain/CashBasisStrategy.ts -------------------------------------------------------------------------------- /src/domain/Contract.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/domain/Contract.ts -------------------------------------------------------------------------------- /src/domain/Invoice.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/domain/Invoice.ts -------------------------------------------------------------------------------- /src/domain/InvoiceGenerationFactory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/domain/InvoiceGenerationFactory.ts -------------------------------------------------------------------------------- /src/domain/InvoiceGenerationStrategy.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/domain/InvoiceGenerationStrategy.ts -------------------------------------------------------------------------------- /src/domain/Payment.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/domain/Payment.ts -------------------------------------------------------------------------------- /src/infra/database/DatabaseConnection.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/infra/database/DatabaseConnection.ts -------------------------------------------------------------------------------- /src/infra/database/PgPromiseAdapter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/infra/database/PgPromiseAdapter.ts -------------------------------------------------------------------------------- /src/infra/http/ExpressAdapter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/infra/http/ExpressAdapter.ts -------------------------------------------------------------------------------- /src/infra/http/HttpServer.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/infra/http/HttpServer.ts -------------------------------------------------------------------------------- /src/infra/http/MainController.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/infra/http/MainController.ts -------------------------------------------------------------------------------- /src/infra/mediator/Mediator.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/infra/mediator/Mediator.ts -------------------------------------------------------------------------------- /src/infra/presenter/CsvPresenter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/infra/presenter/CsvPresenter.ts -------------------------------------------------------------------------------- /src/infra/presenter/JsonPresenter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/infra/presenter/JsonPresenter.ts -------------------------------------------------------------------------------- /src/infra/repository/ContractDatabaseRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/infra/repository/ContractDatabaseRepository.ts -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/src/main.ts -------------------------------------------------------------------------------- /test/Contract.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/test/Contract.test.ts -------------------------------------------------------------------------------- /test/GenerateInvoices.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/test/GenerateInvoices.test.ts -------------------------------------------------------------------------------- /test/api.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/test/api.test.ts -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/tsconfig.json -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devfullcycle/mba_fullcycle_design_patterns/HEAD/yarn.lock --------------------------------------------------------------------------------