-
Notifications
You must be signed in to change notification settings - Fork 76
Open
Description
Tarde pessoal,
na aula Enable e Disable Handlers e considerações finais do modulo, após a criação handler de disable e enable product, eu percebi que ele duplicava o registro no banco para arrumar isso e preciso arrumar no seguinte local:
PATH: /adapters/db/product.go
func (p *ProductDb) Save(product application.ProductInterface) (application.ProductInterface, error) {
var rows int
p.db.QueryRow(`select id from products where id=?`, product.GetID()).Scan(&rows)
if rows == 0 {
_, err := p.create(product)
if err != nil {
return nil, err
}
} else {
_, err := p.update(product)
if err != nil {
return nil, err
}
}
return product, nil
}
Desta forma vocês estão retornando o ID e na verdade querem um count(*) um quantidade de registros existente com aquele determinado ID, como esse select não faz um retorno do tipo int e sim um []string ele não consegue jogar o retorno na variável rows e o valor por padrão de um objeto declarado do tipo int e 0. Para arrumar esse comportamento sugiro essa alteração abaixo.
func (p *ProductDb) Save(product application.ProductInterface) (application.ProductInterface, error) {
var rows int
p.db.QueryRow(`select count(*) from products where id=?`, product.GetID()).Scan(&rows)
if rows == 0 {
_, err := p.create(product)
if err != nil {
return nil, err
}
} else {
_, err := p.update(product)
if err != nil {
return nil, err
}
}
return product, nil
}
Obrigado e até mais.
renokolbe, MarcoBuarque and bernardinorafaelDaniel-Vinicius, thyagoluciano, ArianNexux, MarcoBuarque and bernardinorafael
Metadata
Metadata
Assignees
Labels
No labels