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 {