Comments (1)
Thanks for the question. We should enable GitHub discussions for these.
OneTable was extracted from a production system where it was developed and evolved for over a year. This repo is very recent and watches take time to build. We are aggressively pushing the code forward and have a suite of enhancements and tools coming like our migration CLI and a GUI to view and manage DynamoDB on a logical / entity level.
Regarding TypeScript: you can absolutely use OneTable with TypeScript. OneTable is written in JavaScript (esnext). We don't provide "typed" objects (yet), but we are investigating generating these from the schema.
The code base is small and very readable. We've focused mostly on the core and the OneTable schema which is much richer in describing attributes that a simple type system can do. Adding TypeScript definitions is high on our todo list. But you can use OneTable immediately and this will be an easy update. Making the Schema the center rather than just the type, allows richer modeling tools to be build. We are just at the start of this evolution in creating these tools.
Differences?
I'm not sure I can give a complete comparison grid, but here are a few interesting items:
- OneTable has a more evolved schema with validations, unique attributes, default values, etc.
- OneTable is fully validating on writes & reads. Attributes have validations and OneTable picks out the real attributes and only reads / writes these. This really helps keep your database clean.
- A more refined API resulting from the year in production before release while evolving and cleaning up the API.
- Templated key management from strings or functions. This uncouples keys from attributes.
- Natural "where" clause for queries that are mapped onto conditional and filter expressions.
- Transform functions on read / write to store data in alternate formats.
- Transparent auto-follow for GSIs that project only keys to retrieve primary items.
- Migrations and migration CLI. These are really helpful when evolving DynamoDB designs.
- Flexible API with Entity and Factory level APIs. i.e you can do: Account.get() or Table.get('Account')
- Cross-cutting contexts for supplying attributes out-of-band. Useful for PK/SK components that come from authentication. A request auth may provide an accountId which can be provided via a context instead of the API params. This really helps security and accidental security holes.
- Integrated logging
- AWS V3 support
- A high level API that allows conditional expressions to be used with get, remove, update.
from dynamodb-onetable.
Related Issues (20)
- params.fields are not respected when using table.getItem() or table.queryItems()
- Metrics.d.ts should not include function interfaces declared as 'async' HOT 7
- Improve: Prohibit the removal of nested object required fields. HOT 1
- Feature: Across entities query HOT 3
- Empty strings are filtered out HOT 2
- Cannot resolve type when ESM HOT 3
- Compound global index not updated if only 1 of 2 properties passed to the update function HOT 1
- Updating unique template field does not remove unique record HOT 2
- "CredentialsProviderError: The SSO session associated with this profile has expired" in "overview" sample... HOT 2
- Create method does not create the sort key if one attribute is undefined HOT 4
- Connecting OneTable to a local dynamodb instance
- Support for Mapped Types HOT 1
- Please Help: Update Problem (referenced attribute) HOT 3
- OneSchema type for getCurrentSchema() not set HOT 2
- Update operation does not remove object from array HOT 1
- Help: retrieving items by GSI1 HOT 1
- nested props are not getting mapped correctly with map attribute
- Getting error while update on object that contains undefined attribute value in it. HOT 2
- Cannot Transparently Pass On JSON String From Previously Unncrypted Field HOT 1
- queryItems requires { hidden:true } to support groupByType for AWS SDK v3 HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dynamodb-onetable.