From 079a248eaa10de9a31f193c420988ada49661c30 Mon Sep 17 00:00:00 2001 From: Rhys Bartels-Waller Date: Thu, 17 Sep 2020 15:33:34 +1000 Subject: [PATCH] fix: ensure migration is run before introspection --- packages/api-cardano-db-hasura/src/HasuraClient.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/api-cardano-db-hasura/src/HasuraClient.ts b/packages/api-cardano-db-hasura/src/HasuraClient.ts index a10f3a12..a5fd78e1 100644 --- a/packages/api-cardano-db-hasura/src/HasuraClient.ts +++ b/packages/api-cardano-db-hasura/src/HasuraClient.ts @@ -15,6 +15,7 @@ dayjs.extend(utc) export class HasuraClient { private client: ApolloClient readonly hasuraUri: string + private applyingSchemaAndMetadata: boolean constructor (hasuraUri: string) { this.hasuraUri = hasuraUri @@ -37,7 +38,9 @@ export class HasuraClient { }) } - public async applySchemaAndMetadata () { + public async applySchemaAndMetadata (): Promise { + if (this.applyingSchemaAndMetadata) return + this.applyingSchemaAndMetadata = true await pRetry(async () => { await this.hasuraCli('migrate apply --down all') await this.hasuraCli('migrate apply --up all') @@ -48,9 +51,11 @@ export class HasuraClient { retries: 9, onFailedAttempt: util.onFailedAttemptFor('Applying PostgreSQL schema and Hasura metadata') }) + this.applyingSchemaAndMetadata = false } public async buildHasuraSchema () { + await this.applySchemaAndMetadata() const executor = async ({ document, variables }: { document: DocumentNode, variables?: Object }) => { const query = print(document) try {