From c8092da370ab9e7fb0c66cd9750e964d9e082530 Mon Sep 17 00:00:00 2001 From: Mikhail Chusavitin Date: Tue, 16 Jun 2026 17:52:58 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=20=D0=BF?= =?UTF-8?q?=D0=BE=20LOT=20=D0=B2=20=D0=BA=D0=BD=D0=B8=D0=B3=D0=B0=D1=85=20?= =?UTF-8?q?=D0=BF=D0=B0=D1=80=D1=82=D0=BD=D0=BE=D0=BC=D0=B5=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=20=E2=80=94=20CAST(lots=5Fjson=20AS=20TEXT)=20LIKE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit modernc.org/sqlite (glebarez/sqlite) не приводит BLOB к TEXT при LIKE, в отличие от нативного sqlite3. lots_json хранится как BLOB (json.Marshal возвращает []byte), поэтому `lots_json LIKE ?` всегда возвращал 0. Исправлено на CAST(lots_json AS TEXT) LIKE — теперь поиск по LOT имени работает корректно. Заодно обновлён плейсхолдер поля поиска: «PN, LOT или описание». Co-Authored-By: Claude Sonnet 4.6 --- internal/repository/partnumber_book.go | 2 +- web/templates/partnumber_books.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/repository/partnumber_book.go b/internal/repository/partnumber_book.go index 23b6f1d..a76509b 100644 --- a/internal/repository/partnumber_book.go +++ b/internal/repository/partnumber_book.go @@ -157,7 +157,7 @@ func (r *PartnumberBookRepository) listCatalogItems(partnumbers localdb.LocalStr query := r.db.Model(&localdb.LocalPartnumberBookItem{}).Where("partnumber IN ?", []string(partnumbers)) if search != "" { trimmedSearch := "%" + search + "%" - query = query.Where("partnumber LIKE ? OR lots_json LIKE ? OR description LIKE ?", trimmedSearch, trimmedSearch, trimmedSearch) + query = query.Where("partnumber LIKE ? OR CAST(lots_json AS TEXT) LIKE ? OR description LIKE ?", trimmedSearch, trimmedSearch, trimmedSearch) } var total int64 diff --git a/web/templates/partnumber_books.html b/web/templates/partnumber_books.html index 0ebc2c8..08d2179 100644 --- a/web/templates/partnumber_books.html +++ b/web/templates/partnumber_books.html @@ -66,7 +66,7 @@