Skip to content

bkniffler/hasura-camelize

Repository files navigation

Hasura table/column/relations camelizer

Installation

npm i -g hasura-camelize

Usage

# Table names, rootfields, relation names and materialized views
hasura-camelize --host https://some.domain --secret some-secret --relations --pgMaterializedViews

Args/Flags

  • required host=string: Host, e.g. https://some.domain
  • optional secret=string: Admin secret if set
  • optional dry: Only show what would be done, without actually doing it
  • optional exclude=string[]: Exclude tables from being changed
  • optional include=string[]: Only change the tables specified
  • optional new relations: relation names to be renamed
  • optional new pgMaterializedViews: Rename postgresql materialized views/columns also
  • optional new pattern: Renaming pattern, default will result in names e.g. 'usersInsert', 'invert' results in e.g. 'insertUsers'
  • optional new insecure-skip-tls-verify: Allow for insecure https hasura endpoints (eg, self signed certificates). Not recommended for use against production deployments.

From code

Simple

import convert from 'hasura-camelize';

convert(
  // connection settings
  {
    // domain name
    host: 'https://some.domain',
    // or ip
    host: 'http://127.0.0.1:3000',
    // admin secret
    secret: 'some-secret',
    // more flags as seen above
    relations: true,
  }
);

Complex

import convert from 'hasura-camelize';

convert(
  // connection settings
  {
    // domain name
    host: 'https://some.domain',
    // or ip
    host: 'http://127.0.0.1:3000',
    // admin secret
    secret: 'some-secret',
    // optional schema (default 'public')
    schema: 'public',
    // optional source (default 'default')
    source: 'default',
  },
  // optional settings
  {
    // Dry run? (don't apply changes)
    dry: false,
    // Rename relations? (default false)
    relations: true,
    // Transform table names differently
    transformTableNames(
      name,
      defaultTransformer
    ) {
      // if name === some_name then ignore the table
      if (name === 'some_name') return false;
      return defaultTransformer(name);
    };
    // Transform column names differently
    transformColumnNames(
      name,
      tableName,
      defaultTransformer
    ) {
      // if name === some_name then ignore the column
      if (name === 'some_name' && tableName === 'some_name') return false;
      return defaultTransformer(name);
    };
    // Apply different root field names
    getRootFieldNames(
      name,
      defaultTransformer
    ) {
      return defaultTransformer(name);
    };
  }
);

Changes

2.0.2

  • Fix: Parse http(s) prototcol from args and use the appropriate HTTP agent type

2.0.1

  • Add: --insecure-skip-tls-verify argument

2.0.0

  • Add: updateMany and selectStream root fields

1.2.4

  • Add: --pattern argument

1.2.3

  • Fix: Don't post columns that produce the same name (e.g. col1 -> col1)

Credits

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published