@jokio/datastore
    TypeScript icon, indicating that this package has built-in type declarations

    0.5.4 • Public • Published

    Datastore Toolkit

    Build Status

    npm version

    How to use

    Simple:

    import { DbSet, configureTransaction, Entity, Datastore } from '@jokio/datastore';
     
    const datastore = new Datastore({});
     
    const db = {
        transaction: configureTransaction(datastore),
        users: new DbSet<UserEntity>('users', datastore),
        accounts: new DbSet<AccountEntity>('accounts', datastore),
    };
     
     
    interface UserEntity extends Entity {
        firstName: string
        lastName: string
    }
     
    interface AccountEntity extends Entity {
        currency: string
        amount: number
    }

    OOP Style:

    import { Entity, DbSet, DbContext, Datastore } from '@jokio/datastore';
     
     
    export default class extends DbContext {
        Users: DbSet<UserEntity>
        Accounts: DbSet<AccountEntity>
     
        constructor(datastore: Datastore) {
            super(datastore);
     
            this.Users = new DbSet<UserEntity>('Users', datastore)
            this.Accounts = new DbSet<AccountEntity>('Accounts', datastore)
        }
    }
     
     
    interface UserEntity extends Entity {
        firstName: string
        lastName: string
    }
     
    interface AccountEntity extends Entity {
        currency: string
        amount: number
    }
     
    ...
     
    const db = new DbContext(datastore);

    DDD Style:

    import { Entity, Aggregate, AggregateResolver, Datastore } from "@jokio/datastore";
     
     
    // 1. Declare Types
    interface UserState extends Entity {
        firstName: string
        lastName: string
        password: string
    }
     
    interface RegisterProps {
        firstName: string
        lastName: string
        password: string
    }
     
     
    // 2. Declare Aggregate
    class UserAggregate extends Aggregate<UserState>  {
        constructor(datastore) {
            super('users', datastore);
        }
     
        // commands
        register(props: RegisterProps) {
     
            this.state = {
                ...this.state,
                ...props,
                id: Date.now(),
            };
     
            return this.save();
        }
     
        resetPassword() {
            this.state.password = null;
     
            return this.save();
        }
    }
     
     
    // 3. Use Aggregate
    async function run() {
        const datastore = new Datastore({});
        const root = new AggregateResolver(datastore);
        const userAggr = root.get(UserAggregate);
     
        const isSuccess = await userAggr.register({
            firstName: 'Ezeki',
            lastName: 'Zibzibadze',
            password: '123'
        });
     
        console.log(isSuccess);
    }
     
     
    run();

    Gangnam Style:

    console.log('commong soon... :D');

    Keywords

    Install

    npm i @jokio/datastore

    DownloadsWeekly Downloads

    51

    Version

    0.5.4

    License

    MIT

    Last publish

    Collaborators

    • avatar