An open API service indexing awesome lists of open source software.

https://github.com/ozum/hasura-utils

Utility class for Hasura
https://github.com/ozum/hasura-utils

Last synced: about 2 months ago
JSON representation

Utility class for Hasura

Awesome Lists containing this project

README

        

# hasura-utils

- [Installation](#installation)
- [Synopsis](#synopsis)
- [Details](#details)
- [API](#api)
- [hasura-utils](#hasura-utils)
- [Type aliases](#type-aliases)
- [NameFunction](#namefunction)
- [Operation](#operation)
- [TableFilterFunction](#tablefilterfunction)
- [Variables](#variables)
- [`Const` OPERATIONS](#const-operations)
- [Functions](#functions)
- [_untrackTable](#_untracktable)
- [createDeletePermission](#createdeletepermission)
- [createInsertPermission](#createinsertpermission)
- [createSelectPermission](#createselectpermission)
- [createUpdatePermission](#createupdatepermission)
- [dropPermission](#droppermission)
- [formatAndWriteData](#formatandwritedata)
- [getColumnNames](#getcolumnnames)
- [getHasuraCacheRedirectMapSource](#gethasuracacheredirectmapsource)
- [getMultipleObjectName](#getmultipleobjectname)
- [getSingleObjectName](#getsingleobjectname)
- [getTableName](#gettablename)
- [trackTable](#tracktable)
- [writeMigration](#writemigration)
- [Object literals](#object-literals)
- [`Const` PERMISSION_FUNCTION](#const-permission_function)
- [▪ **PERMISSION_FUNCTION**: *object*](#%E2%96%AA-permission_function-object)
- [delete](#delete)
- [insert](#insert)
- [select](#select)
- [update](#update)
- [Classes](#classes)
- [Class: HasuraUtils](#class-hasurautils)
- [Hierarchy](#hierarchy)
- [Methods](#methods)
- [getMetaData](#getmetadata)
- [getTrackedTables](#gettrackedtables)
- [writeHasureCacheRedirectMap](#writehasurecacheredirectmap)
- [writeMigrationsCreatePermissions](#writemigrationscreatepermissions)
- [writeMigrationsTrackTable](#writemigrationstracktable)
- [`Static` create](#static-create)
- [Interfaces](#interfaces)
- [Interface: HasuraTableName](#interface-hasuratablename)
- [Hierarchy](#hierarchy-1)
- [Properties](#properties)
- [name](#name)
- [schema](#schema)
- [Interface: MetaData](#interface-metadata)
- [Hierarchy](#hierarchy-2)
- [Properties](#properties-1)
- [tables](#tables)
- [version](#version)
- [Interface: Options](#interface-options)
- [Hierarchy](#hierarchy-3)
- [Properties](#properties-2)
- [`Optional` adminSecret](#optional-adminsecret)
- [database](#database)
- [`Optional` includeSchemas](#optional-includeschemas)
- [`Optional` multipleObjectNameFunction](#optional-multipleobjectnamefunction)
- [password](#password)
- [`Optional` singleObjectNameFunction](#optional-singleobjectnamefunction)
- [`Optional` tableNameFunction](#optional-tablenamefunction)
- [`Optional` url](#optional-url)
- [user](#user)

# Installation
# Synopsis

```ts

```

# Details

# API

[hasura-utils](#readmemd)

# hasura-utils

## Type aliases

### NameFunction

Ƭ **NameFunction**: *function*

*Defined in [index.ts:48](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L48)*

#### Type declaration:

▸ (`table`: string, `schema?`: undefined | string): *string*

**Parameters:**

Name | Type |
------ | ------ |
`table` | string |
`schema?` | undefined | string |

___

### Operation

Ƭ **Operation**: *"insert" | "select" | "update" | "delete"*

*Defined in [index.ts:49](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L49)*

___

### TableFilterFunction

Ƭ **TableFilterFunction**: *function*

*Defined in [index.ts:50](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L50)*

#### Type declaration:

▸ (`table`: Table): *boolean*

**Parameters:**

Name | Type |
------ | ------ |
`table` | Table |

## Variables

### `Const` OPERATIONS

• **OPERATIONS**: *[Operation](#operation)[]* = ["insert", "select", "update", "delete"]

*Defined in [index.ts:30](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L30)*

## Functions

### _untrackTable

▸ **_untrackTable**(`table`: string, `schema`: string): *object*

*Defined in [migration-commands/untrack-table.ts:1](https://github.com/ozum/hasura-utils/blob/19849a5/src/migration-commands/untrack-table.ts#L1)*

**Parameters:**

Name | Type | Default |
------ | ------ | ------ |
`table` | string | - |
`schema` | string | "public" |

**Returns:** *object*

* **type**: *string* = "untrack_table"

* ### **args**: *object*

* **table**: *object*

* **name**: *string* = table

* **schema**: *string*

___

### createDeletePermission

▸ **createDeletePermission**(`table`: string, `schema`: string, `__namedParameters`: object): *object*

*Defined in [migration-commands/create-delete-permission.ts:3](https://github.com/ozum/hasura-utils/blob/19849a5/src/migration-commands/create-delete-permission.ts#L3)*

**Parameters:**

▪ **table**: *string*

▪`Default value` **schema**: *string*= "public"

▪ **__namedParameters**: *object*

Name | Type |
------ | ------ |
`role` | string |
`filter` | object |

**Returns:** *object*

___

### createInsertPermission

▸ **createInsertPermission**(`table`: string, `schema`: string, `__namedParameters`: object): *object*

*Defined in [migration-commands/create-insert-permission.ts:3](https://github.com/ozum/hasura-utils/blob/19849a5/src/migration-commands/create-insert-permission.ts#L3)*

**Parameters:**

▪ **table**: *string*

▪`Default value` **schema**: *string*= "public"

▪ **__namedParameters**: *object*

Name | Type | Default |
------ | ------ | ------ |
`columns` | string[] | [] |
`filter` | object | - |
`role` | string | - |
`set` | object | - |

**Returns:** *object*

___

### createSelectPermission

▸ **createSelectPermission**(`table`: string, `schema`: string, `__namedParameters`: object): *object*

*Defined in [migration-commands/create-select-permission.ts:3](https://github.com/ozum/hasura-utils/blob/19849a5/src/migration-commands/create-select-permission.ts#L3)*

**Parameters:**

▪ **table**: *string*

▪`Default value` **schema**: *string*= "public"

▪ **__namedParameters**: *object*

Name | Type | Default |
------ | ------ | ------ |
`allowAggregations` | boolean | false |
`columns` | string[] | [] |
`computedFields` | undefined | string[] | - |
`limit` | number | 10000 |
`role` | string | - |
`filter` | object | - |

**Returns:** *object*

___

### createUpdatePermission

▸ **createUpdatePermission**(`table`: string, `schema`: string, `__namedParameters`: object): *object*

*Defined in [migration-commands/create-update-permission.ts:3](https://github.com/ozum/hasura-utils/blob/19849a5/src/migration-commands/create-update-permission.ts#L3)*

**Parameters:**

▪ **table**: *string*

▪`Default value` **schema**: *string*= "public"

▪ **__namedParameters**: *object*

Name | Type | Default |
------ | ------ | ------ |
`columns` | string[] | [] |
`role` | string | - |
`set` | undefined | object | - |
`filter` | object | - |

**Returns:** *object*

___

### dropPermission

▸ **dropPermission**(`table`: string, `schema`: string, `__namedParameters`: object): *object*

*Defined in [migration-commands/drop-permission.ts:3](https://github.com/ozum/hasura-utils/blob/19849a5/src/migration-commands/drop-permission.ts#L3)*

**Parameters:**

▪ **table**: *string*

▪`Default value` **schema**: *string*= "public"

▪ **__namedParameters**: *object*

Name | Type |
------ | ------ |
`operation` | "insert" | "select" | "update" | "delete" |
`role` | string |

**Returns:** *object*

___

### formatAndWriteData

▸ **formatAndWriteData**<**T**>(`data`: T, `format?`: "json" | "yaml", `file?`: undefined | string): *Promise‹string | T›*

*Defined in [helper.ts:8](https://github.com/ozum/hasura-utils/blob/19849a5/src/helper.ts#L8)*

**Type parameters:**

▪ **T**

**Parameters:**

Name | Type |
------ | ------ |
`data` | T |
`format?` | "json" | "yaml" |
`file?` | undefined | string |

**Returns:** *Promise‹string | T›*

___

### getColumnNames

▸ **getColumnNames**(`table`: Table, `exclude`: string[]): *string[]*

*Defined in [helper.ts:93](https://github.com/ozum/hasura-utils/blob/19849a5/src/helper.ts#L93)*

**Parameters:**

Name | Type |
------ | ------ |
`table` | Table |
`exclude` | string[] |

**Returns:** *string[]*

___

### getHasuraCacheRedirectMapSource

▸ **getHasuraCacheRedirectMapSource**(`map`: Record‹string, string›): *string*

*Defined in [helper.ts:49](https://github.com/ozum/hasura-utils/blob/19849a5/src/helper.ts#L49)*

**Parameters:**

Name | Type |
------ | ------ |
`map` | Record‹string, string› |

**Returns:** *string*

___

### getMultipleObjectName

▸ **getMultipleObjectName**(`table`: string, `schema?`: undefined | string): *string*

*Defined in [helper.ts:45](https://github.com/ozum/hasura-utils/blob/19849a5/src/helper.ts#L45)*

Returns multiple object name used by Hasura for given PostgreSQL table.

**Parameters:**

Name | Type | Description |
------ | ------ | ------ |
`table` | string | is the table name to create single result name. |
`schema?` | undefined | string | - |

**Returns:** *string*

single object name.

___

### getSingleObjectName

▸ **getSingleObjectName**(`table`: string, `schema?`: undefined | string): *string*

*Defined in [helper.ts:35](https://github.com/ozum/hasura-utils/blob/19849a5/src/helper.ts#L35)*

Returns single object name used by Hasura for given PostgreSQL table.

**Parameters:**

Name | Type | Description |
------ | ------ | ------ |
`table` | string | is the table name to create single result name. |
`schema?` | undefined | string | - |

**Returns:** *string*

single object name.

___

### getTableName

▸ **getTableName**(`table`: string, `schema?`: undefined | string): *string*

*Defined in [helper.ts:25](https://github.com/ozum/hasura-utils/blob/19849a5/src/helper.ts#L25)*

**Parameters:**

Name | Type |
------ | ------ |
`table` | string |
`schema?` | undefined | string |

**Returns:** *string*

___

### trackTable

▸ **trackTable**(`table`: string, `schema`: string, `options`: object): *object*

*Defined in [migration-commands/track-table.ts:4](https://github.com/ozum/hasura-utils/blob/19849a5/src/migration-commands/track-table.ts#L4)*

**Parameters:**

▪ **table**: *string*

▪ **schema**: *string*

▪ **options**: *object*

Name | Type |
------ | ------ |
`getMultipleObjectName` | [NameFunction](#namefunction) |
`getSingleObjectName` | [NameFunction](#namefunction) |
`getTableName` | [NameFunction](#namefunction) |

**Returns:** *object*

* **type**: *string* = "track_table"

* **version**: *number* = 2

* ### **args**: *object*

* **configuration**: *object*

* **custom_root_fields**: *object*

* **delete**: *string* = `delete${camelize(options.getMultipleObjectName(table, schema))}`

* **insert**: *string* = `add${camelize(options.getMultipleObjectName(table, schema))}`

* **select**: *string* = options.getMultipleObjectName(table, schema)

* **select_aggregate**: *string* = `${camelize(options.getTableName(table, schema), true)}Aggregate`

* **select_by_pk**: *string* = options.getSingleObjectName(table, schema)

* **update**: *string* = `update${camelize(options.getMultipleObjectName(table, schema))}`

* **table**: *object*

* **name**: *string* = table

* **schema**: *string*

___

### writeMigration

▸ **writeMigration**(`dir`: string, `up`: object, `down`: object): *Promise‹any›*

*Defined in [helper.ts:21](https://github.com/ozum/hasura-utils/blob/19849a5/src/helper.ts#L21)*

**Parameters:**

Name | Type |
------ | ------ |
`dir` | string |
`up` | object |
`down` | object |

**Returns:** *Promise‹any›*

## Object literals

### `Const` PERMISSION_FUNCTION

### ▪ **PERMISSION_FUNCTION**: *object*

*Defined in [index.ts:31](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L31)*

### delete

• **delete**: *[createDeletePermission](#createdeletepermission)* = createDeletePermission

*Defined in [index.ts:35](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L35)*

### insert

• **insert**: *[createInsertPermission](#createinsertpermission)* = createInsertPermission

*Defined in [index.ts:32](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L32)*

### select

• **select**: *[createSelectPermission](#createselectpermission)* = createSelectPermission

*Defined in [index.ts:33](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L33)*

### update

• **update**: *[createUpdatePermission](#createupdatepermission)* = createUpdatePermission

*Defined in [index.ts:34](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L34)*

# Classes

[hasura-utils](#readmemd) › [HasuraUtils](#classeshasurautilsmd)

# Class: HasuraUtils

## Hierarchy

* **HasuraUtils**

## Methods

### getMetaData

▸ **getMetaData**(): *Promise‹[MetaData](#interfacesmetadatamd)›*

*Defined in [index.ts:128](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L128)*

**Returns:** *Promise‹[MetaData](#interfacesmetadatamd)›*

___

### getTrackedTables

▸ **getTrackedTables**(): *Promise‹Table[]›*

*Defined in [index.ts:140](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L140)*

**Returns:** *Promise‹Table[]›*

___

### writeHasureCacheRedirectMap

▸ **writeHasureCacheRedirectMap**(`file`: string, `__namedParameters`: object): *Promise‹string›*

*Defined in [index.ts:206](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L206)*

Creates typescript file for mapping (`single object name` -> `table name`) to be used with cache redirects.

#### Example
```typescript
import { InMemoryCache, CacheResolver } from "apollo-cache-inmemory";

function getHasuraCacheRedirects(redirectMap: Record): Record {
const result: Record = {};
Object.entries(redirectMap).forEach(([singleRecordName, tableName]) => {
result[singleRecordName] = (_, args, { getCacheKey }) => getCacheKey({ __typename: tableName, id: args.id });
});
return result;
}

const cache: InMemoryCache = new InMemoryCache({
cacheRedirects: {
Query: { ...getHasuraCacheRedirects(apolloCacheRedirectMap) }
}
});
```

**`see`** https://www.apollographql.com/docs/react/caching/cache-interaction/#cache-redirects-with-cacheredirects

**`see`** https://www.apollographql.com/docs/react/performance/performance/

**Parameters:**

▪ **file**: *string*

is the file to wirte mapping.

▪`Default value` **__namedParameters**: *object*= {}

Name | Type | Default |
------ | ------ | ------ |
`onlyTracked` | boolean | false |
`filter` | | - |

**Returns:** *Promise‹string›*

___

### writeMigrationsCreatePermissions

▸ **writeMigrationsCreatePermissions**(`__namedParameters`: object): *Promise‹string | object›*

*Defined in [index.ts:145](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L145)*

**Parameters:**

▪ **__namedParameters**: *object*

Name | Type |
------ | ------ |
`dir` | string |
`filter` | undefined | function |
`role` | string |
`set` | undefined | object |
`excludeColumns` | object |

**Returns:** *Promise‹string | object›*

___

### writeMigrationsTrackTable

▸ **writeMigrationsTrackTable**(`__namedParameters`: object): *Promise‹any›*

*Defined in [index.ts:172](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L172)*

**Parameters:**

▪ **__namedParameters**: *object*

Name | Type |
------ | ------ |
`dir` | string |
`filter` | undefined | function |

**Returns:** *Promise‹any›*

___

### `Static` create

▸ **create**(`__namedParameters`: object): *Promise‹[HasuraUtils](#classeshasurautilsmd)›*

*Defined in [index.ts:92](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L92)*

**Parameters:**

▪`Default value` **__namedParameters**: *object*= {} as any

Name | Type | Default |
------ | ------ | ------ |
`adminSecret` | string | process.env["X-HASURA-ADMIN-SECRET"] || "" |
`database` | string | - |
`includeSchemas` | string[] | ["public"] |
`multipleObjectNameFunction` | function | getMultipleObjectName |
`password` | string | - |
`singleObjectNameFunction` | function | getSingleObjectName |
`tableNameFunction` | function | getTableName |
`url` | string | process.env["GRAPHQL-URL"] || "http://localhost:8080/v1/query" |
`user` | string | - |

**Returns:** *Promise‹[HasuraUtils](#classeshasurautilsmd)›*

# Interfaces

[hasura-utils](#readmemd) › [HasuraTableName](#interfaceshasuratablenamemd)

# Interface: HasuraTableName

## Hierarchy

* **HasuraTableName**

## Properties

### name

• **name**: *string*

*Defined in [index.ts:40](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L40)*

___

### schema

• **schema**: *string*

*Defined in [index.ts:39](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L39)*

[hasura-utils](#readmemd) › [MetaData](#interfacesmetadatamd)

# Interface: MetaData

## Hierarchy

* **MetaData**

## Properties

### tables

• **tables**: *Array‹object›*

*Defined in [index.ts:45](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L45)*

___

### version

• **version**: *number*

*Defined in [index.ts:44](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L44)*

[hasura-utils](#readmemd) › [Options](#interfacesoptionsmd)

# Interface: Options

## Hierarchy

* **Options**

## Properties

### `Optional` adminSecret

• **adminSecret**? : *undefined | string*

*Defined in [index.ts:54](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L54)*

___

### database

• **database**: *string*

*Defined in [index.ts:55](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L55)*

___

### `Optional` includeSchemas

• **includeSchemas**? : *string[]*

*Defined in [index.ts:58](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L58)*

___

### `Optional` multipleObjectNameFunction

• **multipleObjectNameFunction**? : *[NameFunction](#namefunction)*

*Defined in [index.ts:60](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L60)*

___

### password

• **password**: *string*

*Defined in [index.ts:57](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L57)*

___

### `Optional` singleObjectNameFunction

• **singleObjectNameFunction**? : *[NameFunction](#namefunction)*

*Defined in [index.ts:59](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L59)*

___

### `Optional` tableNameFunction

• **tableNameFunction**? : *[NameFunction](#namefunction)*

*Defined in [index.ts:61](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L61)*

___

### `Optional` url

• **url**? : *undefined | string*

*Defined in [index.ts:53](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L53)*

___

### user

• **user**: *string*

*Defined in [index.ts:56](https://github.com/ozum/hasura-utils/blob/19849a5/src/index.ts#L56)*