Graphql-engine: cli: allow to track all tables/relationships

Created on 20 Jan 2019  Â·  13Comments  Â·  Source: hasura/graphql-engine

When using Hasura with an existing database, it would be super useful to be able to track all tables and all relationship with the cli (instead of having to go in the console in the browser) (eg for scripts or functional tests)

cli enhancement ideas

Most helpful comment

@arvi3411301 Here is the usage:

# track all tables in public schema
hasura metadata track --all-tables [--schema public]

# track all tables and relationships in public schema
hasura metadata track --all-tables --all-relationships

# track only 2 tables and relationships among them
hasura metadata track --table author --table article --all-relationships

# track all tables in schema1 and schema2
hasura metadata track --all-tables --schema schema1 --schema schema2

# track only one table table1 from schema1
hasura metadata track --table table1 --schema schema1

All 13 comments

Similar request on Discord but with a schema as an argument for the command. Maybe have the option to specify a specific schema or all? @shahidhk

@dsandip my existing database has 2 schemas, I like to have track-all table and relationships automatically without any user intervention, Any way for it. atleast waiting that as a CLI command.

@razakpm This should be available in one of the next couple of releases.

@arvi3411301 Here is the usage:

# track all tables in public schema
hasura metadata track --all-tables [--schema public]

# track all tables and relationships in public schema
hasura metadata track --all-tables --all-relationships

# track only 2 tables and relationships among them
hasura metadata track --table author --table article --all-relationships

# track all tables in schema1 and schema2
hasura metadata track --all-tables --schema schema1 --schema schema2

# track only one table table1 from schema1
hasura metadata track --table table1 --schema schema1
# untrack all tables in a schema
hasura metadata untrack --all-tables --schema schema1

# untrack only 1 table
hasura metadata untrack --table table1 --schema schema1

@shahidhk would it make sense to have this is a start-up options, so that it can be turned on from docker-compose? triggering a cli tool is not exactly convenient in a containerized environment.

@yyunak You can track all tables once using the console, export the metadata and load it on the container using the migrations image. This metadata will be applied every time the server starts. See: https://docs.hasura.io/1.0/graphql/manual/migrations/auto-apply-migrations.html

any progress on this?

hasura metadata track --all-tables is still not available on 1.0.0-beta.2

@c19 This is still a work in progress. Some internals were changed in between and the current PR has to be reworked.

We are looking at some architecture changes for code re-use in console and cli. The current PR needs to be re-worked.

I think this feature is really needed/critical for anybody wanting to do
automatic functional testing.

Also, in your rework, it would be fantastic if we can rename relations. The
automatic way to name them fails with some words (eg, Series -> Sery) which
in our case will also impair our ability to do automatic testing if we
can't rename them with a cli.

Keep up the good work!

Thanks
Best
Benoit

On Tue, Sep 10, 2019, 08:13 Shahidh K Muhammed notifications@github.com
wrote:

We are looking at some architecture changes for code re-use in console and
cli. The current PR needs to be re-worked.

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/hasura/graphql-engine/issues/1418?email_source=notifications&email_token=AFSOI3QOL7JKOVJHW3Q4FADQI6FNDA5CNFSM4GRFS4Y2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6K3VAA#issuecomment-529906304,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFSOI3XJKKLWER3DYK6TBUTQI6FNDANCNFSM4GRFS4YQ
.

+1 to this. In my development environment, my workflow is currently:

  1. Make a schema change within my Postgres environment and forget to update the Hasura metadata
  2. Redeploy my full docker stack
  3. Hasura can't apply its migrations due to incorrect metadata. I have to read the log to see the failure.
  4. Delete the metadata.json file
  5. Redeploy my full docker stack
  6. Click 'track all' on tables and relationships in Hasura
  7. Export the metadata.json to my repo
  8. Redeploy my full docker stack

I would really really really love :) a way for Hasura to start by tracking all views and relationships with admin-only default permissions, and then I only need to add to the metadata migrations to create non-admin permissions on specific views.

@arvi3411301 Here is the usage:

# track all tables in public schema
hasura metadata track --all-tables [--schema public]

# track all tables and relationships in public schema
hasura metadata track --all-tables --all-relationships

# track only 2 tables and relationships among them
hasura metadata track --table author --table article --all-relationships

# track all tables in schema1 and schema2
hasura metadata track --all-tables --schema schema1 --schema schema2

# track only one table table1 from schema1
hasura metadata track --table table1 --schema schema1

this doesn't exist anymore

Was this page helpful?
0 / 5 - 0 ratings

Related issues

macalinao picture macalinao  Â·  3Comments

jjangga0214 picture jjangga0214  Â·  3Comments

lishine picture lishine  Â·  3Comments

anisjonischkeit picture anisjonischkeit  Â·  3Comments

stereobooster picture stereobooster  Â·  3Comments