Skip to content
This repository has been archived by the owner on Nov 15, 2022. It is now read-only.

Alterar Search para utilizar NamedExec #301

Open
lucassabreu opened this issue Oct 1, 2018 · 3 comments
Open

Alterar Search para utilizar NamedExec #301

lucassabreu opened this issue Oct 1, 2018 · 3 comments

Comments

@lucassabreu
Copy link
Member

Hoje o método Search esta mondando a query e manipulando os parâmetros de forma bastante manual. Para diminuir a complexidade do método pode ser utilizado o sqlx.Named ou NamedQuery para diminuir a complexidade da passagem de parâmtros.

func (r *SearchRepository) Search(text string, categoriesID []int, organizationsID int64, status string, orderBy string, order string, page int) (needs []model.SearchNeed, count int, err error) {

https://godoc.org/github.com/jmoiron/sqlx#Named
https://godoc.org/github.com/jmoiron/sqlx#Tx.NamedQuery

@marcosinger
Copy link
Contributor

@lucassabreu olhando essa função ela tanto monta o SQL quanto executa ele. Olhando a task eu tinha pensando em separar isso em duas, mesmo porque fica mais fácil testar se o SQL gerado ( com NamedExec ou plain está correto ).

Pensei em fazer assim:

  1. Criar uma função (e.g. generateSearchSQL) que só faz a montagem do SQL;
  2. Criar testes para essa função;
  3. Escrever testes para (r *SearchRepository) Search
  4. Migrar a geração do SQL no Search para a generateSearchSQL

Que acha da ideia?

@lucassabreu
Copy link
Member Author

a ideia dessa tarefa é melhorar a legibilidade e facilitar a manutenção, acho que quebrar em duas funções e fazer os testes unitários deve ajudar nesse sentido

pensei de usar as funções Named para ajudar a entender melhor onde estão indo parar os parâmetros

então acho que podemos ir por isso caminho que falou

@marcosinger
Copy link
Contributor

vou começar a dar uma olhada então no final do dia e devo ter algo amanhã para vc dar um primeiro feedback :)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants