@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');

Readme

Keywords

Package Sidebar

Install

npm i @jokio/datastore

Weekly Downloads

0

Version

0.5.4

License

MIT

Last publish

Collaborators

  • ezeki