Как узнать есть ли в базе данных конкретное значение?

У меня есть простая БД, которая включает в себя 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, не получилось, подскажите пожалуйста как встроить в код проверку на наличие значения в БД


Ответы (0 шт):