Olá Maria, tudo bem ?
A opção do sqlite
foi apenas por ser uma solução em memória, e que dificilmente causa problema, e tem pouca configuração a ser feita, de forma que possa focar nos conceitos do desenvolvimento mvc
, nos outros cursos, principalmente de API Rest, voltam a ser falado dos bancos mais tradicionais como o Mysql
Em relação ao arquivo database.js
ele é apenas um arquivo de configuração dos dados do banco, praticamente um código sql
puro, se dermos uma olhada:
const USUARIOS_SCHEMA = `
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nome_completo VARCHAR(40) NOT NULL UNIQUE,
email VARCHAR(255) NOT NULL,
senha VARCHAR(255) NOT NULL
)
`;
Temos a definição da tabela de usuários e de livros
INSERT INTO usuarios (
nome_completo,
email,
senha
) SELECT 'Gabriel Leite', 'gabriel@alura.com.br', '123' WHERE NOT EXISTS (SELECT * FROM usuarios WHERE email = 'gabriel@alura.com.br')
`;
E depois há a inserção de um usuário e 2 livros apenas para popular de forma inicial o banco, tudo isso utilizando a função run
:
bd.serialize(() => {
bd.run("PRAGMA foreign_keys=ON");
bd.run(USUARIOS_SCHEMA);
bd.run(INSERIR_USUARIO_1);
bd.run(LIVROS_SCHEMA);
bd.run(INSERIR_LIVRO_1);
bd.run(INSERIR_LIVRO_2);
bd.each("SELECT * FROM usuarios", (err, usuario) => {
console.log('Usuario: ');
console.log(usuario);
});
});
Esse bd.serialize
é apenas uma função para que a execução dos códigos dentro do banco seja sequencial e não paralela, e o bd.run
faz a execução da query, então criamos as tabelas e fazemos a inserção, além disso tem aquele select
que você observa quando da o npm start
:)
Para finalizar temos uma definição do próprio node
process.on('SIGINT', () =>
bd.close(() => {
console.log('BD encerrado!');
process.exit(0);
})
);
Então quando você da CTRL + C
na aplicação, é disparado um evento de SIGINT
dessa forma estamos pedindo que para que quando haja esse evento, execute essa função que irá apenas fechar o banco de dados, para evitar que tenha algum problema
E é exportado também o bd
para que as classes DAO
consigam utilizar essa funções para se comunicar com o banco de dados
Conseguiu Compreender?
Abraços e Bons Estudos!