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
  • 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
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Create a new issue
  • Jobs
  • Issue Boards
Collapse sidebar
  • Ludo Pets
  • Wiki
  • Wiki
  • Banco de Dados

Last edited by Erik Vieira Suris Apr 13, 2025
Page history

Banco de Dados

Modelo Conceitual do Banco de Dados

image

Introdução ao Cloud Firestore

Cloud Firestore é um banco de dados NoSQL em tempo real oferecido pelo Firebase. Diferente de bancos relacionais, ele organiza os dados em coleções e documentos, permitindo consultas flexíveis e escalabilidade automática.

Estrutura de Dados

Coleções: Contêm documentos relacionados a um mesmo contexto.

Documentos: Unidades individuais de armazenamento de dados (JSON-like).

Subcoleções: Coleções dentro de documentos para dados hierárquicos.

Campos: Propriedades dentro de um documento.

Estrutura do Banco de Dados do Projeto

User
{
 email (string) PK
 experience (number)
 lastLessonConcluded (number)
 level (number)
 money (number)
 notifications (boolean)
 pet (reference)
}

Pet
{
 id (string) PK
 name (string)
 color (string)
 type (string) *Enum "Gato" ou "Cachorro"
 purchasedItems(array)(map)
   item_id (reference)
   quantity (number)
 activeItems(map)(reference) *IDs dos itens comprados que estão ativos
   bed (string)
   food (string)
   toy (string)
   wc (string)
 wellBeing (map)
   clean (Datetime)
   fun (Datetime)
   hunger (Datetime)
   thirst (Datetime)
   sleep (Datetime)
}

Item 
{
 id (string) PK
 name (string)
 price (number)
 requiredLevel (number)
 category (string)
 image (string) *Link da imagem no bucket
}

Minigame
{
 id (string) PK
 givenMoney (number)
 name (string)
}

Lesson
{
 id (string) PK
 concluded (boolean)
 name (string)
 questions (array)(reference)
 givenExperience (number)
 given_money (number)
}

Question
{
 id (string) PK
 answers (array)(string)
 description (string) *Pergunta
 rightAnswer (number) *Index da resposta correta
 explanation (string)
 image (string)
 rightAnswer (number)
 title (string)
}

Como Utilizar o Firestore no Código

Para acessar e manipular os dados no Firestore, utilizamos a SDK do Firebase para Typescript (no caso do projeto).

Instalação

npm install firebase

Configuração do Cloud Firestore

import { initializeApp } from "firebase/app";
import { getFirestore, doc, setDoc, getDoc, collection, addDoc } from "firebase/firestore";

const firebaseConfig = {
  apiKey: "SUA_API_KEY",
  authDomain: "SEU_DOMINIO.firebaseapp.com",
  projectId: "SEU_PROJECT_ID",
  storageBucket: "SEU_BUCKET.appspot.com",
  messagingSenderId: "SENDER_ID",
  appId: "SUA_APP_ID"
};

const app = initializeApp(firebaseConfig);
const db = getFirestore(app);

Criar um Usuário

const createUser = async (email, money, level, experience, notifications) => {
  await setDoc(doc(db, "User", email), {
    money,
    level,
    experience,
    notifications
  });
};

Obter um Usuário

const getUser = async (email) => {
  const userRef = doc(db, "User", email);
  const userSnap = await getDoc(userRef); 

  if (userSnap.exists()) {
    console.log("Usuário encontrado:", userSnap.data());
  } else {
    console.log("Nenhum usuário encontrado.");
  }
};

Outra maneira

const usersCollection = db.collection("User");
const querySnapshot = await usersCollection
        .where("email", "==", email)
        .limit(1)
        .get();

 if (querySnapshot.exists()) {
    console.log("Usuário encontrado:", querySnapshot.data());
 }else{
    console.log("Nenhum usuário encontrado.");
 }
Clone repository
  • Banco de Dados
  • Configuração
  • Código
  • Processo
  • arquitetura
  • design_mockups
  • escopo e cronograma
  • Home