base-domain
Version:
simple module to help build Domain-Driven Design
99 lines (67 loc) • 1.89 kB
text/coffeescript
BaseRepository = require './base-repository'
###*
load master data
MasterRepository
base-domain
###
class MasterRepository extends BaseRepository
###*
a flag to load and store all models with method
if set to true, master table is generated after method,
and used in BaseFactory#createFromObject()
storeMasterTable
Boolean
###
: on
###*
loaded map of id => models
modelsById
###
: null
###*
check loaded or not
loaded
###
: -> ?
###*
get model by id
getByIdSync
{String} id
{Model} model
###
getByIdSync: (id) ->
return null if not .modelsById? # return null if not loaded
# TODO determine whether this function returns new instance or reference
# (now returns reference)
#return .createFromObject .modelsById[id]
return .modelsById[id] ? null
###*
get model by id
getAllSync
{Array(Model)} model
###
getAllSync: ->
return [] if not .loaded()
return (model for id, model of .modelsById)
###*
load whole master data of the model
when is off, load will fail.
load
{Promise(Boolean)} is load succeed or not.
###
: ->
return Promise.resolve(false) if not
= {}
instance = new @()
instance.query({}).then (models) =>
[model.id] = model for model in models
return true
module.exports = MasterRepository