✅ O backend está pronto e testado
Algumas mudanças estruturais foram feitas no código, a lógica de interação com o banco de dados agora adere ao paradigma de "Programação Orientada a Objetos" em vez do paradigma "Funcional". Além disso, também podemos processar os dados direto na engine do banco de dados, o que nos dá um ganho muito relevante de desempenho.
Isto conclui a primeira tarefa de: "Melhorar a qualidade da interação com o banco de dados, evitando carregar muitos dados desnecessariamente".
sqlalchemy
O projeto original do Cashd
, usava um cashd.db.FormObj
para fazer a validação e
formatação dos inputs com código totalmente próprio, mas agora usamos o
TypeDecorator
para sinalizar as regras de formatação dos dados ao sqlalchemy
.
cashd.data._DataSource
Uma nova classe chamada _DataSource
traz as funcionalidades para:
_DataSource
;As operações de CRUD, que antes eram realizadas por funções especializadas, agora são
funções genéricas que usam as classes herdeiras da
base declarativa,
agora podemos preencher um cashd.data.tbl_clientes
com dados e gerenciá-lo no banco de
dados com os novos métodos:
from cashd import data customer = data.get_default_customer() """`tbl_clientes` preenchido com os valores padrão.""" customer.PrimeiroNome = "José" customer.Sobrenome = "Da Silva" """Preenche os campos obrigatórios que não são preenchidos por padrão.""" customer.write() """Cria uma nova linha na tabela 'clientes' do banco de dados contendo os dados de `customer`. """ customer.read(row_id=1) """Preenche `customer` com os dados da primeira linha da tabela 'clientes'.""" customer.Bairro = "Novo Bairro" customer.update() """Atualiza a linha correspondente no banco de dados.""" customer.delete() """Remove a linha correspondente do banco de dados."""
Foram adicionados testes unitários adicionais para o novo código que interage com o banco de dados, com cobertura do código presente em data.py
de 92%.