i am capped at 9args per a bug somewhere between pq and postgres but heck if i care

main
Bel LaPointe 2024-04-16 09:06:32 -06:00
parent 5557c0920a
commit c4a7eaf04a
1 changed files with 6 additions and 10 deletions

View File

@ -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 {