Skip to content

serverless-seoul/dynamorm

Folders and files

NameName
Last commit message
Last commit date
Dec 31, 2023
Oct 16, 2020
Dec 31, 2023
Mar 26, 2024
Dec 31, 2023
Sep 25, 2020
Dec 31, 2023
Dec 31, 2023
Sep 25, 2020
Sep 25, 2020
Nov 5, 2020
Dec 31, 2023
Dec 31, 2023
Sep 26, 2020
Sep 27, 2019
Sep 25, 2020
Sep 25, 2020

Repository files navigation

GitHub version npm version Semantic Release enabled

What Is Dynamorm?

Dynamorm is a native Typescript ORM for AWS DynamoDB
Written in Typescript from scratch, Fully support typing through template / decorator syntax
This is hard fork of dynamo-types, for active maintenance reason

Install

  npm install @serverless-seoul/dynamorm

How does it looks like?

import {
  Config,
  Decorator,
  Query,
  Table,
} from "@serverless-seoul/dynamorm";

@Decorator.Table({ name: `your_table_name_on_aws_dynamodb` })
export class BlogPost extends Table {
  @Decorator.HashPrimaryKey("id")
  public static readonly primaryKey: Query.HashPrimaryKey<BlogPost, number>; 

  @Decorator.Attribute({ name: "id" })
  public id: string!;

  @Decorator.Attribute({ name: "title" })
  public title: string!;

  @Decorator.Attribute({ name: "body" })
  public body: Array<
    | { type: "text", text: string }
    | { type: "image", url: string, width: number, height: number }
  > = [];

  @Decorator.Attribute()
  public viewCount: number = 0;

  @Decorator.Attribute()
  public author: {
    name: string;
    profileImageURL: string;
  }
}

Dynamorm supports all dynamodb query / scan / update / delete interface, and...

  • TimeToLive attribute
  • DAX (DynamoDB Accelerator)
  • Optimized aws-sdk usage (HTTP Connection reusing)
  • AWS X-Ray
  • Testing (Local DynamoDB) support

... and more!

Testing

you need to run dynamodb locally in order to run unit tests

brew cask install docker
docker pull amazon/dynamodb-local
docker run --rm --name catch-dynamo -p 8000:8000 -d amazon/dynamodb-local

running test

DYNAMO_TYPES_ENDPOINT=http://127.0.0.1:8000 npm run test