day #102 – 04/04/2023

Hoje eu criei o modelo no banco dos usuários:

como dar pra ver, o modelo é bem simples. Não vou me estender muito nele pra não deixar de lançar o projeto por causa dessa mudança.

Por conta disso, eu tive de repensar como todos os modelos do meu banco se relacionavam, principalmente porque parti do princípio de que tudo se resume aos dados gerados.

Então por conta disso, eu tive de adicionar o id do usuário nos modelos de Review, Reviews Pendentes, Sugestões de lugares, a tabela de logs (sim, eu tenho uma tabela de logs e não um tópico no kafka, me perdoem kkk).

Também perdi um tempo refazendo o processo de aplicar as modificações e criar as structs para o modelo user porque a lib diesel é um pouco confusa e ela não tem o comando “destruir tudo”, então tive que deletar todos os dados que tinha pra teste e recriar o banco. (não quero ter vários arquivos de migrations quando lançar o produto, após ter o banco rodando em prod, ai sim vou começar a utilizar as migrations).

O rust (actix-web na verdade) permite trabalhar bem com os tipos, então ao invés de eu ter um único modelo e ele realizar mágica por trás, uma boa prática é você ter um modelo para realizar queries no banco e outro para inserir dados no banco. Assim, validações de inserção e recuperação dos dados no banco podem ser colocados em lugares diferentes, facilitando o entendimento.

Abaixo, tá o exemplo da minha struct NewUser:

Como dá pra perceber, ela não tem todos os campos da tabela Users, mas não precisa, pois estes campos são preenchidos pelo banco. Então não preciso que o usuário do sistema me forneça eles para criar a conta.

Também criei a interface da camada de repositório para usuário no meu projeto:

Eu ainda to aprendendo o porquê é necessário uma lib async_trait, tem uma discussão no reddit que eu sempre tento ler para entender mais https://www.reddit.com/r/rust/comments/11pxtql/to_async_trait_or_just_to_trait/ mas ainda é bem complicado pra mim.

E pra finalizar, segue como o projeto tá estruturado até então:

Se alguém tiver um feedback e acha que a organização do código pode melhorar, agradeceria demais.

Se tiverem dúvidas também e quiserem falar, pode mandar bala.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s