npm i -g hasura-camelize
# Table names, rootfields, relation names and materialized views
hasura-camelize --host https://some.domain --secret some-secret --relations --pgMaterializedViews
- 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.
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,
}
);
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);
};
}
);
- Fix: Parse http(s) prototcol from args and use the appropriate HTTP agent type
- Add: --insecure-skip-tls-verify argument
- Add: updateMany and selectStream root fields
- Add: --pattern argument
- Fix: Don't post columns that produce the same name (e.g.
col1
->col1
)
- Original github issue in hasura repository: hasura/graphql-engine#3320
- User @svarlamov for https://github.com/exlinc/hasura-enforce-camel-case
- User @m-rgba for https://github.com/m-rgba/hasura-snake-to-camel