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
This is an old version of this page. You can view the most recent version or browse the 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
}

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