From c4a7eaf04a094d17d3c16c586d6b967704a3fe3c Mon Sep 17 00:00:00 2001 From: Bel LaPointe <153096461+breel-render@users.noreply.github.com> Date: Tue, 16 Apr 2024 09:06:32 -0600 Subject: [PATCH] i am capped at 9args per a bug somewhere between pq and postgres but heck if i care --- storage.go | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/storage.go b/storage.go index 1eb0cb5..fe166f8 100644 --- a/storage.go +++ b/storage.go @@ -43,7 +43,7 @@ func NewStorage(ctx context.Context, driver Driver) (Storage, error) { func (s Storage) GetEvent(ctx context.Context, ID string) (model.Event, error) { v := model.Event{} - err := s.selectOne(ctx, "events", &v, "ID = ?", ID) + err := s.selectOne(ctx, "events", &v, "ID = $1", ID) return v, err } @@ -53,7 +53,7 @@ func (s Storage) UpsertEvent(ctx context.Context, event model.Event) error { func (s Storage) GetMessage(ctx context.Context, ID string) (model.Message, error) { v := model.Message{} - err := s.selectOne(ctx, "messages", &v, "ID = ?", ID) + err := s.selectOne(ctx, "messages", &v, "ID = $1", ID) return v, err } @@ -63,7 +63,7 @@ func (s Storage) UpsertMessage(ctx context.Context, message model.Message) error func (s Storage) GetThread(ctx context.Context, ID string) (model.Thread, error) { v := model.Thread{} - err := s.selectOne(ctx, "threads", &v, "ID = ?", ID) + err := s.selectOne(ctx, "threads", &v, "ID = $1", ID) return v, err } @@ -72,7 +72,7 @@ func (s Storage) UpsertThread(ctx context.Context, thread model.Thread) error { } func (s Storage) selectOne(ctx context.Context, table string, v any, clause string, args ...any) error { - if questions := strings.Count(clause, "?"); questions != len(args) { + if questions := strings.Count(clause, "$"); questions != len(args) { return fmt.Errorf("expected %v args for clause but found %v", questions, len(args)) } @@ -115,10 +115,6 @@ func (s Storage) upsert(ctx context.Context, table string, v any) error { return err } - for i := range keys { - values = append(values, values[i]) - } - q := fmt.Sprintf(` INSERT INTO %s (%s) VALUES (%s) ON CONFLICT (ID) DO UPDATE SET %s @@ -144,11 +140,11 @@ func keysArgsKeyargsValues(v any) ([]string, []string, []string, []any, error) { } args := make([]string, len(keys)) for i := range args { - args[i] = "?" + args[i] = fmt.Sprintf("$%d", i+1) } keyArgs := make([]string, len(keys)) for i := range keyArgs { - keyArgs[i] = fmt.Sprintf("%s=?", keys[i]) + keyArgs[i] = fmt.Sprintf("%s=$%d", keys[i], i+1) } values := make([]any, len(keys)) for i := range values {