Как узнать есть ли в базе данных конкретное значение?
У меня есть простая БД, которая включает в себя 3 столбца (id, автор, название книги) У меня есть функция, которая принимает либо id либо автора либо название книги и возвращает строку с имеющимся значением. Выглядит все это дело следующим образом
booksid := []BookRequest{}
booksath := []BookRequest{}
booksnm := []BookRequest{}
if br.Author == "" && br.Name == "" {
rows1, err := db.Query("select * from books where id = $1", br.Id)
if err != nil {
fmt.Fprint(w, "unexpected error")
} else if err == sql.ErrNoRows {
fmt.Fprint(w, "id does not exist")
}
defer rows1.Close()
for rows1.Next() {
err := rows1.Scan(&br.Id, &br.Author, &br.Name)
if err != nil {
fmt.Fprint(w, "smth happens")
continue
}
booksid = append(booksid, br)
}
for _, br := range booksid {
sntnc, _ := fmt.Printf("%v %s : %s \n", br.Id, br.Author, br.Name)
fmt.Fprint(w, sntnc)
}
}
// по author
if br.Id == 0 && br.Name == "" {
rows2, err := db.Query("select * from books where author = $1", br.Author)
if err != nil {
panic(err)
}
defer rows2.Close()
for rows2.Next() {
err := rows2.Scan(&br.Id, &br.Author, &br.Name)
if err != nil {
fmt.Println(err)
continue
}
booksath = append(booksath, br)
}
for _, br := range booksath {
sntnc, _ := fmt.Printf("%v %s : %s \n", br.Id, br.Author, br.Name)
fmt.Fprint(w, sntnc)
}
}
//по name
if br.Id == 0 && br.Author == "" {
rows3, err := db.Query("select * from books where name = $1", br.Name)
if err != nil {
panic(err)
}
defer rows3.Close()
for rows3.Next() {
err := rows3.Scan(&br.Id, &br.Author, &br.Name)
if err != nil {
fmt.Println(err)
continue
}
booksnm = append(booksnm, br)
}
for _, br := range booksnm {
sntnc, _ := fmt.Printf("%v %s : %s \n", br.Id, br.Author, br.Name)
fmt.Fprint(w, sntnc)
}
}
когда я ввожу id которого нет в таблице мне возвращается Статус 200 и пустое поле, по сути он не находит этого ID в бд и ничего не пишет, программа не крашится Пробовал через exists, не получилось, подскажите пожалуйста как встроить в код проверку на наличие значения в БД