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) { func (s Storage) GetEvent(ctx context.Context, ID string) (model.Event, error) {
v := model.Event{} v := model.Event{}
err := s.selectOne(ctx, "events", &v, "ID = ?", ID) err := s.selectOne(ctx, "events", &v, "ID = $1", ID)
return v, err 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) { func (s Storage) GetMessage(ctx context.Context, ID string) (model.Message, error) {
v := model.Message{} v := model.Message{}
err := s.selectOne(ctx, "messages", &v, "ID = ?", ID) err := s.selectOne(ctx, "messages", &v, "ID = $1", ID)
return v, err 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) { func (s Storage) GetThread(ctx context.Context, ID string) (model.Thread, error) {
v := model.Thread{} v := model.Thread{}
err := s.selectOne(ctx, "threads", &v, "ID = ?", ID) err := s.selectOne(ctx, "threads", &v, "ID = $1", ID)
return v, err 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 { 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)) 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 return err
} }
for i := range keys {
values = append(values, values[i])
}
q := fmt.Sprintf(` q := fmt.Sprintf(`
INSERT INTO %s (%s) VALUES (%s) INSERT INTO %s (%s) VALUES (%s)
ON CONFLICT (ID) DO UPDATE SET %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)) args := make([]string, len(keys))
for i := range args { for i := range args {
args[i] = "?" args[i] = fmt.Sprintf("$%d", i+1)
} }
keyArgs := make([]string, len(keys)) keyArgs := make([]string, len(keys))
for i := range keyArgs { 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)) values := make([]any, len(keys))
for i := range values { for i := range values {