odl-graphql-client
Advanced tools
Comparing version 1.0.0-rc.12 to 1.0.0-rc.13
import upperFirst from "lodash/fp/upperFirst"; | ||
import toString from "lodash/fp/toString"; | ||
import camelCase from "lodash/fp/camelCase"; | ||
import { | ||
@@ -6,15 +8,12 @@ parseBodyQueryVariable, | ||
} from "../util"; | ||
import { MutationOperation, MutationVariables } from "../types"; | ||
import { | ||
MutationOperation, | ||
MutationVariables, | ||
MutationBatchOperation, | ||
} from "../types"; | ||
export default class MutationBuilder { | ||
getOperationName = (operation: MutationOperation): string => { | ||
switch (operation) { | ||
case MutationOperation.Add: | ||
return "add"; | ||
case MutationOperation.Update: | ||
return "update"; | ||
case MutationOperation.Delete: | ||
return "delete"; | ||
} | ||
}; | ||
getOperationName = ( | ||
operation: MutationOperation | MutationBatchOperation | ||
): string => camelCase(toString(operation)); | ||
@@ -50,2 +49,17 @@ build = ( | ||
buildBatch = (entityName: string, operation: MutationBatchOperation) => { | ||
const formattedEntityName = upperFirst(entityName); | ||
const operationName = this.getOperationName(operation); | ||
const fields = convertSelectFieldsArrayToString(["id", "code"]); | ||
return `mutation($inputs: [${formattedEntityName}Input!]) { | ||
${entityName} { | ||
${operationName}(inputs: $inputs) { | ||
${fields} | ||
} | ||
} | ||
}`; | ||
}; | ||
buildCustomMutationOperation = ( | ||
@@ -52,0 +66,0 @@ entityName: string, |
@@ -80,2 +80,6 @@ import ODLGraphqlClient from "./odlGraphQLClient"; | ||
); | ||
addBatchAsync<T>(models: T[]) { | ||
return this.graphqlClient.addBatchAsync<T>(this.entityName, models); | ||
} | ||
} |
import { GraphQLClient } from "graphql-request"; | ||
import omit from "lodash/fp/omit"; | ||
import set from "lodash/fp/set"; | ||
import map from "lodash/fp/map"; | ||
import { QueryRequestBuilder, MutationRequestBuilder } from "./builders"; | ||
@@ -9,2 +10,3 @@ import { | ||
MutationOperation, | ||
MutationBatchOperation, | ||
ODLGraphQLClientOptions, | ||
@@ -92,2 +94,25 @@ } from "./types"; | ||
private _executeMutationBatchAsync = ( | ||
entityName: string, | ||
query: string, | ||
operation: MutationBatchOperation | string, | ||
payloadModels: any[] | ||
) => { | ||
const operationName = | ||
this.mutationBuilder.getOperationName( | ||
operation as MutationBatchOperation | ||
) || (operation as string); | ||
return this.graphQLClient | ||
.request(query, { inputs: payloadModels }) | ||
.then((response) => { | ||
return this.queryBuilder.compactResponse( | ||
entityName, | ||
response, | ||
operationName, | ||
{} | ||
); | ||
}); | ||
}; | ||
queryManyAsync = ( | ||
@@ -168,4 +193,4 @@ entityName: string, | ||
addAsync = (entityName: string, model: any, selectFields?: string[]) => { | ||
const formattedModel = omit(["id"])(model); | ||
addAsync<T>(entityName: string, model: T, selectFields?: string[]) { | ||
const formattedModel = omit(["id"])(model as any); | ||
const mutation = this.mutationBuilder.build( | ||
@@ -185,3 +210,3 @@ entityName, | ||
); | ||
}; | ||
} | ||
@@ -222,2 +247,18 @@ updateAsync = ( | ||
addBatchAsync<T>(entityName: string, models: T[]) { | ||
const formattedBatch = map((model: any) => omit("id")(model))(models); | ||
const mutation = this.mutationBuilder.buildBatch( | ||
entityName, | ||
MutationBatchOperation.AddBatch | ||
); | ||
return this._executeMutationBatchAsync( | ||
entityName, | ||
mutation, | ||
MutationBatchOperation.AddBatch, | ||
formattedBatch | ||
); | ||
} | ||
executeCustomMutationAsync = ( | ||
@@ -224,0 +265,0 @@ entityName: string, |
@@ -7,3 +7,3 @@ { | ||
}, | ||
"version": "1.0.0-rc.12", | ||
"version": "1.0.0-rc.13", | ||
"dependencies": { | ||
@@ -10,0 +10,0 @@ "graphql-request": "^1.8.2", |
12
types.ts
@@ -31,7 +31,13 @@ export type QueryParams = { | ||
export enum MutationOperation { | ||
Add = 0, | ||
Update, | ||
Delete, | ||
Add = "add", | ||
Update = "update", | ||
Delete = "delete", | ||
} | ||
export enum MutationBatchOperation { | ||
AddBatch = "addBatch", | ||
UpdateBatch = "updateBatch", | ||
DeleteBatch = "deleteBatch", | ||
} | ||
export type GraphQLVariable = { | ||
@@ -38,0 +44,0 @@ declareVariables: string; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
20720
622