Modelo Conceitual do Banco de Dados
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)
last_lesson_concluded (number)
level (number)
money (number)
notifications (boolean)
pet (reference)
}
Pet
{
id (string) PK
name (string)
color (string)
type (string) *Enum "Gato" ou "Cachorro"
items(array)(map)
is_active (boolean)
item_id (reference)
quantity (number)
well-being (map)
clean (number)
fun (number)
hunger (number)
thirst (number)
}
Item
{
id (string) PK
name (string)
price (number)
required_level (number)
category (string)
image (string) *Link da imagem no bucket
}
Minigame
{
id (string) PK
given_money (number)
name (string)
}
Lesson
{
id (string) PK
concluded (boolean)
name (string)
questions (array)(reference)
given_experience (number)
given_money (number)
}
Question
{
id (string) PK
answers (array)(string)
description (string) *Pergunta
right_answer (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.");
}
};