0.5.4 • Published 6 years ago

@jokio/datastore v0.5.4

Weekly downloads
-
License
MIT
Repository
-
Last release
6 years ago

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

6 years ago

0.5.3

6 years ago

0.5.2

6 years ago

0.5.1

6 years ago

0.5.0

6 years ago

0.4.6

6 years ago

0.4.5

6 years ago

0.4.4

6 years ago

0.4.3

6 years ago

0.4.2

6 years ago

0.4.1

6 years ago

0.4.0

6 years ago

0.3.1

6 years ago

0.3.0

6 years ago

0.2.6

6 years ago

0.2.5

6 years ago

0.2.4

6 years ago

0.2.3

6 years ago

0.2.2

6 years ago

0.2.1

6 years ago

0.2.0

6 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago