Skip to content

danieljse/graphql-filter-to-dynamodb-expression

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

graphql-filter-to-dynamodb-expression


List of features

  • Simplified graphql filter data modeling to DynamoDB filter expression
  • Nested expression Example "user.name"
  • Supported operations: 'eq', 'ne', 'ge', 'gt', 'le', 'lt', 'attributeExists', 'attributeType', 'beginsWith', 'contains', 'notContains', 'and', 'or'

Download & Installation

$ npm i graphql-filter-to-dynamodb-expression

Example

const { graphqlToDynamoDBConditionExpression } = require('graphql-filter-to-dynamodb-expression')

Code Demo

graphqlToDynamoDBConditionExpression(input.filter)

Input

filter: {
    status: {
      ne: 'ACTIVE'
    },
    user: {
      age: {
        le: '5'
      }
    },
    or: [
      {
        exampleId: {
          eq: '123455'
        },
        and: [
          {
            email: {
              contains: '@'
            }
          }
        ]
      }
    ]
  }

Output

{
  FilterExpression: ' (#status <> :status_ne) AND (#user.#age <= :user_age_le) OR ( (#exampleId = :or__1_0_exampleId_eq) ) AND ( (contains(#email, :and__2_0_email_contains)) )',
  ExpressionAttributeNames: {
    '#status': 'status',
    '#user': 'user',
    '#age': 'age',
    '#exampleId': 'exampleId',
    '#email': 'email'
  },
  ExpressionAttributeValues: {
    ':status_ne': 'ACTIVE',
    ':user_age_le': '5',
    ':or__1_0_exampleId_eq': '123455',
    ':and__2_0_email_contains': '@'
  }
}

Authors or Acknowledgments

  • Daniel Davila

License

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published