Ninja Pumpkin Mutants

    dyna-moco
    TypeScript icon, indicating that this package has built-in type declarations

    0.2.1 • Public • Published

    MIT License Issues


    Logo

    DynaMoco + MocoQuery

    Like a Carebear giving DyanmoDB a hug

    Documnetation »

    Codepen Demo

    Report Bug

    Request Feature

    DyanMoCo + MoCoQuery

    Product Name Screen Shot

    DynamoDB is great but the way you interact with it is not really great. DynaMoco is small but mighty, wrapper that is strong enough to get what you want out of DynamoDB and gentle enough to act like bowling with bumpers on.

    Writeen in Typescript it should help you with auto-complete etc - if that is of interest.

    The DynaMoco Problem

    1. The API of Dyanmo has a steep learning curve.
    2. Its flexibiltiy creates too much complexity to comprehend at thge outset.
    3. Dynamoco optimizes for a few use-cases that seem noramtive, making those very easy.
    4. If you need to do the more complicated parts, it attempts to move out of the way.

    The DynaMoco Solution

    Use this package if:

    • You need to just get going with DynamoDB
    • You find the Dynamo API difficult and seemingly optimzed for AWS engineers and not it's users.
    • You enjoy flexible streamlined modules.

    Installation

    npm install dynamoco
    # or
    yarn add dynamoco

    Usage

    There are two independent functions that work nicely together in dynamoco.

    The first is the gentle wrapper - dynamoco

    The second is a nice query builder - mocoquery

    Each of them cover some ground on the API surface area exposed by Dyanmo.

    Get Item (Full Monty)

    import {Dynamo} from 'aws-sdk'
    import {dynamoco} from 'dynamoco'
    import {credentials} from './credentials'
    
    ;(async ()=>{
        const d = new Dyanmo({credentials})
        const moco = dynamoco(d)
        // using a table that is already available
        const resutls = await moco.getItem('MyTable', {MyKey: 'SomeValue'})
        console.log(results._Item) 
            /* {    
                    MyKey: 'SomeValue', 
                    numberValues: 1,
                    stringValues: 'strings are strings'
                } 
            */
    })()

    Using The Query Builder

    import {Dynamo} from 'aws-sdk'
    import {mocoquery} from 'dynamoco'
    import {credentials} from './credentials'
    
    ;(async ()=>{
        const d = new Dyanmo({credentials})
        const queryParams = mocoquery('MyTable')
                            .select('*')
                            .where(['Year','>=',2020])
                            .extract()
        // using the regular Dyanmo Client 
        const regularResults = await d.query(queryParams)
        console.log('regularResults', regularResults.Items)
        
        // using the regular Dyanmo Client 
        const ezResults = await dynamoco(d).query(queryParams)
        console.log('ezResults', ezResults._Items)
    })()

    For more examples, please refer to the Documentation

    Technical

    Single dependency

    By design, this module has a single, external, run-time dependency (aws-sdk). And it uses a few other packages while running tests. It is a stated goal of the project to keep the dependencies as small as reasonable. (different than as small as possible)

    Dependency

    Codebase

    This is a Typescript codebase, and aims to be relatively up to date with the latest version. Adopting new typescript version will likely comence after some hardening period, but hastened if a new language feature has been added that substantially supports this project.

    Roadmap

    See the open issues for a list of proposed features (and known issues).

    Contributing

    Have a question? Ask it in an issue! We'd love to hear from you.

    Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

    1. Fork the Project
    2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
    3. Commit your Changes (git commit -m 'Add some AmazingFeature')
    4. Push to the Branch (git push origin feature/AmazingFeature)
    5. Open a Pull Request

    Community

    See the Community Standards and Code of Conduct

    Contact

    Eric D Moore

    Project Link: https://github.com/federalies/dynamoco

    Acknowledgements & Credits

    License

    Distributed under the MIT License. See LICENSE for more information.

    Install

    npm i dyna-moco

    DownloadsWeekly Downloads

    0

    Version

    0.2.1

    License

    MIT

    Unpacked Size

    40.9 kB

    Total Files

    6

    Last publish

    Collaborators

    • mooreed