package main import ( "context" "database/sql" "flag" "log" "os" "time" "pg/src/with" _ "github.com/lib/pq" ) func main() { if err := with.Context(run); err != nil { panic(err) } } func run(ctx context.Context) error { fs := flag.NewFlagSet(os.Args[0], flag.ContinueOnError) c := fs.String("c", "sqlite://", "conn string") if err := fs.Parse(os.Args[1:]); err != nil { panic(err) } return with.SQL(ctx, *c, func(pg *sql.DB) error { with.Every(ctx, 5*time.Second, func() { row := pg.QueryRowContext(ctx, `SELECT 1`) var n int if err := row.Err(); err != nil { log.Println("query err:", err) } else if err := row.Scan(&n); err != nil { log.Println("scan err:", err) } else { log.Println("pinged") } }) return ctx.Err() }) }