UNPKG

base-domain

Version:

simple module to help build Domain-Driven Design

51 lines (35 loc) 1.43 kB
'use strict' AggregateRoot = require './aggregate-root' BaseSyncRepository = require './base-sync-repository' ###* repository of local memory, saved in AggregateRoot @class LocalRepository @extends BaseSyncRepository @module base-domain ### class LocalRepository extends BaseSyncRepository ###* root name ### @aggregateRoot: null constructor: -> super if not @constructor.aggregateRoot? throw @error 'aggregateRootIsRequired', """ #{@constructor.getName()} must define its static property '@aggregateRoot'. """ Root = @facade.getModel @constructor.aggregateRoot if (Root::) not instanceof AggregateRoot throw @error 'invalidAggregateRoot', """ #{@constructor.getName()} has invalid aggregateRoot property. '#{@constructor.aggregateRoot}' is not instance of AggregateRoot. """ if @root not instanceof Root throw @error 'invalidRoot', """ '#{@constructor.getName()}' wasn't created by AggregateRoot '#{@constructor.aggregateRoot}'. Try aggregateRoot.createRepository('#{@constructor.modelName}') where aggregateRoot is an instance of '#{@constructor.aggregateRoot}'. """ @client = @root.useMemoryResource(@constructor.modelName) module.exports = LocalRepository