1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package main
import (
"fmt"
"context"
"github.com/jackc/pgx/v5/pgxpool"
)
func deliver_local(ctx context.Context, db *pgxpool.Pool, envelope_from string, envelope_recipients []string, data []byte, addresses []string) error {
tx, err := db.Begin(ctx)
if err != nil {
return err
}
defer tx.Rollback(ctx) // BUG: Potential missed error here, but this will always fail if commit succeeded
for _, address := range addresses {
_, err = tx.Exec(ctx, "INSERT INTO mail (mailbox_id, data) SELECT a.mailbox_id, $2::bytea FROM addresses a JOIN mailboxes m ON a.mailbox_id = m.id WHERE a.address = $1;", address, data)
if err != nil {
fmt.Printf("%#v\n", err)
return err
}
}
err = tx.Commit(ctx)
if err != nil {
return err
}
return nil
}
|