Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/blazejkustra/dynamode
Dynamode is a modeling tool for Amazon's DynamoDB
https://github.com/blazejkustra/dynamode
amazon aws data database datastore db document dynamo dynamodb model nosql schema
Last synced: 12 days ago
JSON representation
Dynamode is a modeling tool for Amazon's DynamoDB
- Host: GitHub
- URL: https://github.com/blazejkustra/dynamode
- Owner: blazejkustra
- License: mit
- Created: 2022-07-21T07:38:44.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-30T09:45:56.000Z (2 months ago)
- Last Synced: 2024-09-02T16:39:01.382Z (2 months ago)
- Topics: amazon, aws, data, database, datastore, db, document, dynamo, dynamodb, model, nosql, schema
- Language: TypeScript
- Homepage:
- Size: 4.3 MB
- Stars: 61
- Watchers: 4
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-dynamodb - Dynamode - source strongly typed modeling tool for Typescript projects. (Tools)
README
---
Dynamode is a modeling tool for Amazon's DynamoDB. Its goal is to ease the use of DynamoDB without its quirks and emphasize DynamoDB advantages over other databases. Dynamode provides a straightforward, object-oriented class-based solution to model your data. It includes strongly typed classes and methods, query and scan builders, and much more.
Dynamode is highly influenced by other ORMs/ODMs, such as [TypeORM](https://github.com/typeorm/typeorm), [Dynamoose](https://github.com/dynamoose/dynamoose) and [Mongoose](https://github.com/Automattic/mongoose).
## Documentation
Check out our dedicated documentation page [here](https://blazejkustra.github.io/dynamode/docs/getting_started/introduction) for info about the library, guide and more.
## Installation
Check out the [installation](https://blazejkustra.github.io/dynamode/docs/getting_started/installation) section of our docs for the detailed installation instructions.
## License
Dynamode is licensed under [The MIT License](LICENSE).
## Examples
Example table definition:
```ts
type ExampleTableProps = {
propPk: string;
propSk: number;
index: string;
};const TABLE_NAME = 'example-table';
class ExampleTable extends Entity {
@attribute.partitionKey.string()
propPk: string;@attribute.sortKey.number()
propSk: number;@attribute.lsi.sortKey.string({ indexName: 'LSI_NAME' })
index: string;constructor(props: ExampleTableProps) {
super();this.propPk = props.propPk;
this.propSk = props.propSk;
this.index = props.index;
}
}export const ExampleTableManager = new TableManager(ExampleTable, {
tableName: TABLE_NAME,
partitionKey: 'propPk',
sortKey: 'propSk',
indexes: {
LSI_NAME: {
sortKey: 'index',
},
},
});await ExampleTableManager.create();
```Example entity definition:
```ts
type ExampleEntityProps = ExampleTableProps & {
attr: { [k: string]: number };
};export class ExampleEntity extends ExampleTable {
@attribute.object()
attr: { [k: string]: number };constructor(props: ExampleEntityProps) {
super(props);this.attr = props.attr;
}
}export const ExampleEntityManager = ExampleTableManager.entityManager(ExampleEntity);
await ExampleEntityManager.put(new ExampleEntityManager({ ... }));
```Find more examples under the [`examples/`](https://github.com/blazejkustra/dynamode/blob/main/examples/) directory.