Socket
Socket
Sign inDemoInstall

odl-graphql-client

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

odl-graphql-client - npm Package Compare versions

Comparing version 1.0.0-rc.12 to 1.0.0-rc.13

36

builders/mutationBuilder.ts
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",

@@ -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;

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc