9.0.10 • Published 10 months ago

single-table-dynamo v9.0.10

Weekly downloads
52
License
MIT
Repository
-
Last release
10 months ago

single-table-dynamo

A dynamodb client that stores all items in a single table

Getting started

yarn add single-table-dynamo zod

Example

import { DynamoDBDocumentClient as DocumentClient } from "@aws-sdk/lib-dynamodb";
import { z } from "zod";
import { Repository, InferObjectType, InferIdType } from "single-table-dynamo";

const repo = new Repository({
  // a unique type name to distinguish this entity type from other types
  typeName: "Note",

  // create a schema for the entity
  schema: z.object({
    id: z.string().default(() => uuid()),
    owner: z.string(),
    text: z.string().min(0).max(1000).default(""),
  }),

  // primary index fields are required to get this object
  primaryIndex: {
    fields: ["id"],
  },

  // can be used query by other ids
  secondaryIndexes: {
    byOwner: {
      fields: ["owner"],
      indexName: "gsi1",
    },
  },

  tableConfig: TableConfig,

  documentClient: new DocumentClient(),
});

// write
const note = await repo.put({ owner: "harold" });
// { id: "123", owner: "harold", text: "" }

// read
const note = await repo.get({ id: "123" });
// { id: "123", owner: "harold", text: "" }

// update
const note = await repo.mutate({ id: "123", text: "this is my note" });
// { id: "123", owner: "harold", text: "this is my note" }

// query
const { Items } = await repo.query("byOwner").where({ owner: "harold" }).exec();
// [{ id: "123", owner: "harold", text: "this is my note" }]

// delete
await repo.delete({ id: "123" });

// infer object type from repo
type NoteObject = InferObjectType<typeof repo>;
// { id: string, owner: string, text: string }

type NoteId = InferIdType<typeof repo>;
// {id: string}

var TableConfig = {
  tableName: "GenericTable",
  primaryIndex: {
    pk: "pk1",
    sk: "sk0",
  },
  secondaryIndexes: [
    {
      indexName: "gsi1",
      pk: "pk1",
      sk: "sk1",
    },
    {
      indexName: "gsi2",
      pk: "pk2",
      sk: "sk2",
    },
  ],
};
9.0.9

11 months ago

9.0.8

11 months ago

9.0.10

10 months ago

9.0.7

2 years ago

9.0.6

2 years ago

9.0.5

2 years ago

9.0.4

2 years ago

9.0.3

2 years ago

9.0.2

2 years ago

9.0.1

2 years ago

8.4.3

2 years ago

8.4.2

2 years ago

8.3.6

2 years ago

8.3.5

2 years ago

8.3.8

2 years ago

8.3.7

2 years ago

8.3.4

2 years ago

8.3.3

2 years ago

8.3.9

2 years ago

8.3.10

2 years ago

8.3.11

2 years ago

8.3.12

2 years ago

8.3.13

2 years ago

8.3.14

2 years ago

8.3.15

2 years ago

8.3.16

2 years ago

8.2.1

2 years ago

8.4.1

2 years ago

8.4.0

2 years ago

8.1.13

3 years ago

8.1.12

3 years ago

8.1.15

3 years ago

8.1.14

3 years ago

8.1.17

3 years ago

8.1.16

3 years ago

8.1.19

3 years ago

8.1.18

3 years ago

8.1.8

3 years ago

8.1.9

3 years ago

8.1.6

3 years ago

8.1.0

4 years ago

8.1.2

4 years ago

8.1.1

4 years ago

8.1.3

4 years ago

8.0.1

4 years ago

8.0.2

4 years ago

7.1.3

4 years ago

7.1.2

4 years ago

7.1.1

4 years ago

7.1.0

4 years ago

7.1.4

4 years ago

8.0.0

4 years ago

7.0.14

4 years ago

7.0.15

4 years ago

7.0.12

4 years ago

7.0.10

4 years ago

7.0.11

4 years ago

7.0.9

4 years ago

7.0.8

4 years ago

7.0.7

4 years ago

7.0.6

4 years ago

7.0.5

4 years ago

7.0.4

4 years ago

7.0.3

4 years ago

7.0.0

4 years ago

7.0.2

4 years ago

7.0.1

4 years ago

6.3.4

5 years ago

6.3.3

5 years ago

6.3.2

5 years ago

6.3.1

5 years ago

6.3.0

5 years ago

6.2.19

5 years ago

6.2.18

5 years ago

6.2.17

5 years ago

6.2.16

5 years ago

6.2.15

5 years ago

6.2.14

5 years ago

6.2.13

5 years ago

6.2.10

5 years ago

6.2.11

5 years ago

6.2.12

5 years ago

6.2.7

5 years ago

6.2.9

5 years ago

6.2.8

5 years ago

6.2.6

5 years ago

6.2.5

5 years ago

6.1.5

5 years ago

6.1.4

5 years ago

6.1.3

5 years ago

6.1.2

5 years ago

6.1.1

5 years ago

5.1.0

5 years ago

6.1.0

5 years ago

4.1.0

5 years ago

4.0.2

6 years ago

4.0.1

6 years ago

4.0.0

6 years ago

2.0.6

6 years ago

2.0.5

6 years ago

2.0.3

6 years ago

2.0.4

6 years ago

2.0.2

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.2

6 years ago

1.0.3

6 years ago

1.0.1

6 years ago