Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • W wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • HiperBem
  • wiki
  • Wiki
  • banco_dados

banco_dados · Changes

Page history
Update database documentation with exams and storage authored Nov 11, 2019 by Rafael Victor Ruwer Araujo's avatar Rafael Victor Ruwer Araujo
Hide whitespace changes
Inline Side-by-side
banco_dados.md
View page @ b67a82c4
...@@ -102,7 +102,30 @@ class JournalEntry { ...@@ -102,7 +102,30 @@ class JournalEntry {
### Exames ### Exames
Ainda não definido. O app oferece a funcionalidade de persistir imagens de exames realizados pelo usuário: a pessoa pode selecionar várias imagens da galeria do dispositivo (ou tirar fotos com a câmera dentro do app), e atribuir um nome e uma descrição ao conjunto de imagens. A aplicação persiste essas informações no Firebase, para que o usuário possa ter acesso rápido aos seus exames de qualquer lugar.
Um desafio para a implementação dessa funcionalidade se dá pela persistência das imagens: como isso pode ser feito com o React Native e coordenado com o Firebase.
O Firebase permite armazenar arquivos de qualquer tipo usado o [Storage](https://firebase.google.com/docs/storage). As imagens são armazenadas da forma que a pessoa desenvolvedora desejar, sendo necessário apenas atribuir um caminho para a mesma.
As imagens foram organizadas no Storage de acordo com o usuário e o exame aos quais estão relacionadas: o caminho para uma imagem é dado pelo ID do usuário e pela data de criação do exame, conforme exemplo abaixo:
```
/<user-id>/exams/<timestamp>/<image-name>
/user-id-x/exams/1573478824428/img-ajfhskd.jpg
```
#### Esquema físico<sup>1</sup>
O objeto `Exam` armazena as informações de um exame, conforme definido abaixo:
```typescript
class Exam {
name: string // nome
description: string // descrição
images: string[] // nomes das imagens no Storage
}
```
--- ---
...@@ -111,7 +134,7 @@ Ainda não definido. ...@@ -111,7 +134,7 @@ Ainda não definido.
Definiu-se que os dados serão armazenados no Firebase de acordo com a identificação do usuário. A partir do objeto raiz, cada usuário possui um objeto onde seu id é a chave, e suas anamneses, entradas no diário e exames são seu valor, conforme exemplo abaixo: Definiu-se que os dados serão armazenados no Firebase de acordo com a identificação do usuário. A partir do objeto raiz, cada usuário possui um objeto onde seu id é a chave, e suas anamneses, entradas no diário e exames são seu valor, conforme exemplo abaixo:
```typescript ```typescript
{ // raiz do Firebase { // raiz do Realtime Database
[userId: string]: { [userId: string]: {
anamneses: { anamneses: {
[creationDate: number /* timestamp */]: AnamnesisRecord [creationDate: number /* timestamp */]: AnamnesisRecord
...@@ -123,7 +146,27 @@ Definiu-se que os dados serão armazenados no Firebase de acordo com a identific ...@@ -123,7 +146,27 @@ Definiu-se que os dados serão armazenados no Firebase de acordo com a identific
} }
} }
// exames: ainda não definido exams: {
[creationDate: number /* timestamp */]: Exam
}
}
}
```
## Esquema físico do Storage<sup>1</sup>
Seguindo o que foi feito no Realtime Database, os arquivos armazenados no Storage são organizados de acordo com a identificação do usuário. A partir do objeto raiz, cada usuário possui uma "pasta" onde seu id é a chave.
Para permitir extensões futuras, como uma nova funcionalidade que requer a persistência de arquivos, as subpastas diretas são de acordo com a feature. As imagens de exames ficam na pasta `exams`, e uma possível futura feature que necessite usar o Storage pode usar uma outra pasta no mesmo nível.
A partir do objeto raiz, a organização do Storage segue o exemplo abaixo:
```typescript
{ // raiz do Storage
[userId: string]: {
exams: {
[creationDate: number /* timestamp */]: File[] // imagens do exame
}
} }
} }
``` ```
......
Clone repository
  • arquitetura
  • banco_dados
  • configuracao
  • cronograma
  • git workflow
  • gp
  • Home
  • horarios
  • material de estudo
  • mockups
  • padronização
  • requisitos
  • retrospectivas
  • sprints
  • testes