configuração de ambiente usando o yarn
yarn init -y yarn add express yarn add @types/express -D
usando o Typescript como dependência de desenvolvimento
yarn add typescript -D
cria o arquivo tsconfig.json
yarn tsc --init
editar tsconfig.json: "strict": false
criar pasta src + arquivo server.ts dentro dela
você pode usar o seguinte código para teste: const express = require('express') const app = express() const port = 3000
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
reinicia o server compilando com tsc
yarn add ts-node-dev -D
editar package.json: "scripts": { "dev": "ts-node-dev src/server.ts" },
para subir o server:
yarn dev
tipos de BD (relacionais ou não), drivers/pacotes
instalar dependências no projeto
yarn add typeorm reflect-metadata sqlite3
criar ormconfig.json na raiz do projeto { "type": "sqlite" }
dentro da pasta src, criar pasta database e arquivo index.ts com o código: import { createConnection} from "typeorm"; createConnection();
adicionar ao server.ts: import "./database";
adicionar script ao package.json: "typeorm": "ts-node-dev node_modules/typeorm/cli.js"
migrations: histórico de modificações no banco dentro da pasta database, criar pasta migrations
adicionar ao ormconfig.json: "database": "./src/database/database.sqlite", "migrations": ["./src/database/migrations/**.ts"], "cli": { "migrationsDir": "./src/database/migrations" }
criar a primeira migration (implementação da MigrationInterface)
yarn typeorm migration:create -n CreateSettings novo arquivo criado em src/database/migrations adicionar código aos métodos up e down yarn typeorm migration:run database.sqlite criado dentro da pasta database usar o beekeeper para visualização
entidades (object relational mapping) na pasta src, criar a pasta entities e dentro dela o arquivo Setting.ts adicionar código para criação do modelo do objeto adicionar caminho das entities ao ormconfig.json editar tsconfig.json descomentando experimentalDecorators e emitDecoratorMetadata (por causa do TS)
geração uuid como responsabilidade do app, não do banco
yarn add uuid yarn add @types/uuid -D adicionar ao Setting.ts o import do uuid e seu uso pelo constructor
repositórios imagino que seja o equivalente ao DAO na pasta src, criar pasta repositories e arquivo SettingsRepository.ts adicionar o código que realizará as ops junto ao banco
criar arquivo routes.ts na pasta src e remover rotas do server.ts
criar src/controllers/SettingsController.ts e mover para lá todo o trabalho com os repositórios as rotas passam a chamar os controllers
os controllers estavam incluindo tb as regras de negócio (no caso, o trabalho com os repositórios do bd), que devem ser responsabilidade dos services os controllers cuidam de requests, disparam os services e devolvem as responses aprendi que métodos de repositórios e services precisam ser chamados com await
finalizando as tabelas do banco
yarn typeorm migration:create -n CreateUsers novo arquivo criado em src/database/migrations adicionar código aos métodos up e down SALVAR yarn typeorm migration:run se precisar desfazer yarn typeorm migration:revert criar arquivo entities/Users.ts, adicionar código criar arquivo database/repositories/UsersRepository.ts, adicionar código criar UsersService criar UsersController adicionar rota /users testar com o insomnia
yarn typeorm migration:create -n CreateMessages novo arquivo criado em src/database/migrations adicionar código aos métodos up e down SALVAR yarn typeorm migration:run criar arquivo entities/Users.ts, adicionar código criar arquivo database/repositories/UsersRepository.ts, adicionar código criar UsersService criar UsersController adicionar rota /users testar com o insomnia adicionar métodos listByUser
protocolo websocket para chats e trocas de mão dupla
yarn add socket.io yarn add @types/socket.io -D
puxar pasta public com os estáticos modificar arquivo server.ts para usar socket.io e arqs estáticos
yarn add ejs subir e acessar com o navegador, fron-end bunitinho veio pronto
yarn add socket.io-client criar pasta src/websocket com arquivos admin.ts e client.ts criar arquivo src/http.ts e modificar o server.ts trabalhar no public/js/chat.js e no client.ts
yarn typeorm migration:create -n CreateConnections novo arquivo criado em src/database/migrations adicionar código aos métodos up e down SALVAR yarn typeorm migration:run criar arquivo entities/Connections.ts, adicionar código criar arquivo database/repositories/ConnectionsRepository.ts, adicionar código criar ConnectionsService criar ConnectionsController adicionar rota put /connections testar com o insomnia
construção do websocket
mostrar mensagens já trocadas pelo email do usuário
pagina do admin