Code Monkey home page Code Monkey logo

02-node-api's Introduction

Iniciando o projeto
npm init -y

Instalando o typescript types:
npm i typescript @types/node -D

Instalando o config do typecript:
npx tsc --init

Criando packages src, domain, entities:
src ---|
        ---domain---|
                     --- entities
        
Entendimento do caso: correção de aplicativos enviados pelos alunos
student
submission
challenge
correction
resultado

criar um package core domain

Regras de negócio ou lógica de negócio
criar package application-usecases

Para verificar se tudo isso está funcionando
Fazer testes (TDD)
Para perceber se está sendo entendido, se o levantamento foi correto
criar create-challenge-submission.spec.ts

Usar o jest para testes. Instalar o Jest
npm i jest @swc/core @swc/jest -D

criar jest config:
npx jest --init

Instalar jest types:
npm i @types/jest -D

Instalar ts-node:
npm i ts-node -D

Inserir em jest.config.ts:
  transform: {
    "^.+\\.(t|j)sx?$": [
      "@swc/jest",
      {
        jsc: {
          parser: {
            syntax: 'typescript',
            tsx: false,
            decorators: true,
          },
          target: 'es2017',
          keepClassNames: true,
          transform: {
            legacyDecorator: true,
            decoratorMetadata: true,
          },
        },
        module: {
          type: 'es6',
          noInterop: false,
        },
      },
    ],
  },

Executar testes:
npm test

Perceba que neste passo conseguimos entender a aplicação por completo sem depender de rotas
ou banco de dados

Neste caso já temos um bom ponto de partida

Aqui vamos melhorar com regras de negócio

Por exemplo: Eu posso criar uma submissão de um desafio que não existe? Ou ainda, de um aluno
que não existe?
R: não posso 

Mas quem tem essa informação?
R: Na maioria das vezes, o banco de dados que é um recurso externo

Aqui entram os repositórios
Criando StudentsRepository.ts

Perceba que nem falamos ainda qual banco de dados a utilizar
Só definimos contratos

Conceito de in-memory-database Martin Fowler para testes.









02-node-api's People

Contributors

valdyrtorres avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.