V5 - bug(postgraphile watcher): Creating/deleting table nulls out schema
<!-- Before opening an issue: if you use `npm` try running `yarn` instead; if
      you run `yarn`, please try running `npx yarn-deduplicate && yarn`. -->

### Summary

<!-- A brief summary of the problem. -->
When adding or deleting a table, postgraphile schema becomes "empty" (until reloading postgraphile.)

### Steps to reproduce

<!-- All bug reports should include detailed steps to reproduce. -->
1) Run `docker compose up -d` (see compose file below)
2) Run `docker compose exec node sh`
3) Run command: `npx postgraphile -P postgraphile/presets/amber -e -c postgresql://postgres@postgres/postgres -S postgresql://postgres@postgres/postgres -p 9000 --host 0.0.0.0 -s public -w`
4) Visit pgAdmin at `http://localhost:7000` in browser
5) Login to pgAdmin (`postgres@example.com` / `1337`)
6) Register server (`postgres` server, `postgres` username, no password)
7) Add table "example", under public schema, with: "id" field, INTEGER, primary key, not null
8) Quit postgraphile
9) Restart postgraphile (step 3)
10) Visit ruru at `http://localhost:9000/graphql` in browser, check schema ("examples" graphql calls should be there)
11) Repeat step 7, with new table name "test"
12) Repeat step 10, notice schema is now empty

The same results occur when deleting tables as well.

However, if only changing columns, the watcher works as expected.

This is confirmed to be a postgraphile watcher issue (not specific to ruru.)

### Expected results

<!-- Outline what you expected to see -->
GraphQL generated calls for "examples" and "tests" should show in ruru

### Actual results
Schema becomes "empty" (see image)

![image](https://github.com/graphile/crystal/assets/392387/3e996e27-a7a6-4558-90b8-85c2a40b3b3e)


<!-- Outline the actual results -->

### Additional context

<!-- Please provide additional context such as environment versions (including
      operating system, Node, PostgreSQL, Redis, etc. as relevant), software
      versions (from `yarn.lock`) or similar, plugins in use, database schema
      if relevant, bundler (if any). -->
```
# docker-compose.yml

version: '3.7'


services:

  node:
    image: node:18-alpine
    command: tail -f /dev/null
    stdin_open: true
    tty: true
    ports:
      - "9000:9000"
    environment:
      DATABASE_URL: postgresql://postgres@postgres/postgres

  postgres:
    image: postgis/postgis:15-3.4
    command: ["postgres", "-c", "work_mem=64MB", "-c", "max_connections=15", "-c", "shared_buffers=500MB"]
    environment:
      POSTGRES_HOST_AUTH_METHOD: trust
    volumes:
      - /var/lib/postgresql/data

  pgadmin:
    depends_on:
      - pg
    image: dpage/pgadmin4
    ports:
      - "7000:80"
    environment:
      PGADMIN_CONFIG_MAX_LOGIN_ATTEMPTS: 0
      PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-postgres@example.com}
      PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-1337}
    volumes:
      - pgadmin:/var/lib/pgadmin

volumes:
  pgadmin:
```

### Possible Solution

<!--- Optionally suggest a fix or reason for the bug. -->
🤷‍♂️ 😢 