From 2f9a9cf4fb8b3623e53eb2e2ccbc3e22ce456b34 Mon Sep 17 00:00:00 2001 From: Deluan Date: Thu, 26 Jun 2025 11:34:53 -0400 Subject: [PATCH] fix(repository): add table name handling in filter functions for SQL queries Signed-off-by: Deluan --- persistence/sql_base_repository.go | 9 +++++++++ persistence/user_repository.go | 1 + 2 files changed, 10 insertions(+) diff --git a/persistence/sql_base_repository.go b/persistence/sql_base_repository.go index 461609042..63120d4c7 100644 --- a/persistence/sql_base_repository.go +++ b/persistence/sql_base_repository.go @@ -199,6 +199,15 @@ func (r sqlRepository) applyFilters(sq SelectBuilder, options ...model.QueryOpti return sq } +func (r *sqlRepository) withTableName(filter filterFunc) filterFunc { + return func(field string, value any) Sqlizer { + if r.tableName != "" { + field = r.tableName + "." + field + } + return filter(field, value) + } +} + // libraryIdFilter is a filter function to be added to resources that have a library_id column. func libraryIdFilter(_ string, value interface{}) Sqlizer { return Eq{"library_id": value} diff --git a/persistence/user_repository.go b/persistence/user_repository.go index a378f75e6..078aef672 100644 --- a/persistence/user_repository.go +++ b/persistence/user_repository.go @@ -58,6 +58,7 @@ func NewUserRepository(ctx context.Context, db dbx.Builder) model.UserRepository r.tableName = "user" r.registerModel(&model.User{}, map[string]filterFunc{ "password": invalidFilter(ctx), + "name": r.withTableName(startsWithFilter), }) once.Do(func() { _ = r.initPasswordEncryptionKey()