Service Class
Every service layer implemented using this framework must inherit this class
This class acts as a proxy to every store engine supported by this framework.
When calling a Built In
CRUD
method, it will be automatically be mapped to the specified underlying Data Framework method.
Implemented Data Frameworks are:
- Mongoose
- Sequelize
Type: class
Back to Documentation main page
Implemented Properties
service.storageEngine
String - memory, mongo or sequelize
Default: mongo
service.primaryKeyName
String - primary key name
Default: ‘_id’
service.application
Object - holds application object
service.isJobDone
Boolean - holds a falg that indicates the job execution status
Default: false
service.isCached
Boolean - holds a falg that indicates if entity should be cached on Redis
Default: false
service.isCachedBasedOnUser
Boolean - Specify this entity collection data should be cached based on user id, entity name and filter. If false, caches will be created based on entity name and filter only.
Default: false
service.cacheExpiresIn
Number - Specify in how long time the cache will expires in seconds.
Default: 3600 seconds
Implemented Methods
service.setStorageEngine( 'engine name' )
Set service storage engine. Values are memory, mongo and sequelize
service.sendNotification ( job, data, isJobDone, err)
Send notifications to the Ochestrator worker’s queue
Parameters:
Job
- Object - is the incoming Job Resource Object
. Mandatory.
data
- Object - is the final handled server resource object
isJobDone
- Boolean - indicates Job status
err
- Object or String - error information
service.sendErrorNotification( job, errorMessage )
Send error notifications to the Ochestrator worker’s queue
Parameters:
Job
- Object - is the incoming Job Resource Object
. Mandatory.
err
- Object or String - error information
service.sendClientNotification ( c )
Send client notifications via Mediator
Parameters:
c
Object - holds notification resource
c.job
Object - is the incoming Job Resource Object
. Mandatory.
c.data
Object - is the final handled server resource object. Not Mandatory.
If provided, will automatically set Job status as done
.
If not provided, will automatically set Job status as not done
.
c.error
Object or String - error information
service.isValidJob( job, msg )
Validate a Job.
Parameters:
Job
- Object - is the incoming Job Resource Object
. Mandatory.
msg
- Buffer - a buffer representing the rabbitmq message
service.jobDone( job, data, msg )
Set job as done and and execute notification / logging actions
Parameters:
Job
- Object - is the incoming Job Resource Object
. Mandatory.
data
- Object - is the final handled server resource object
msg
- Buffer - a buffer representing the rabbitmq message
service.jobNotDone( job, msg, errMessage )
Set job as done and and execute notification / logging actions
Parameters:
Job
- Object - is the incoming Job Resource Object
. Mandatory.
msg
- Buffer - a buffer representing the rabbitmq message
errMessage
- String - Error message
service.add_file( job, msg )
add an file to a Entity
Parameters:
Job
- Object - is the incoming Job Resource Object
. Mandatory.
msg
- Buffer - a buffer representing the rabbitmq message
service.delete_file( job, msg )
delete a file from an Entity
Parameters:
Job
- Object - is the incoming Job Resource Object
. Mandatory.
msg
- Buffer - a buffer representing the rabbitmq message
service.create( job, msg )
create an Entity record into database
Parameters:
Job
- Object - is the incoming Job Resource Object
. Mandatory.
{
"from": {
"userId" : 444,
"companyId" : 243,
"user_email" : "eduardo.almeida@cairsolutions.com",
"name": "Jose Eduardo",
"id": 'dskfjhldsfh879879dsaf'
},
"entity" : "DemoUser",
"action" : "create",
"payload" :
{
"first_name" : "Eduardo",
"last_name" : "Almeida",
"email" : "web2solucoes@gmail.com"
}
}
msg
- Buffer - a buffer representing the rabbitmq message
service.update( job, msg )
update an Entity on Database
Parameters:
Job
- Object - is the incoming Job Resource Object
. Mandatory.
{
"from": {
"userId" : 444,
"companyId" : 243,
"user_email" : "eduardo.almeida@cairsolutions.com",
"name": "Jose Eduardo",
"id": 'dskfjhldsfh879879dsaf'
},
"entity" : "DemoUser",
"action" : "update",
"payload" :
{
"_id": "5c585ab5bfbfa98b7b966bd1",
"last_name" : "Almeidaaaaa"
}
}
msg
- Buffer - a buffer representing the rabbitmq message
service.delete( job, msg )
Soft delete an entity from Database. (virtual delete - set record as deleted)
Parameters:
Job
- Object - is the incoming Job Resource Object
. Mandatory.
{
"from": {
"userId" : 444,
"companyId" : 243,
"user_email" : "eduardo.almeida@cairsolutions.com",
"name": "Jose Eduardo",
"id": 'dskfjhldsfh879879dsaf'
},
"entity" : "DemoUser",
"action" : "delete",
"payload" :
{
"_id": "5c585ab5bfbfa98b7b966bd1"
}
}
msg
- Buffer - a buffer representing the rabbitmq message
service.delete_hard( job, msg )
Hard delete an entity from Database. (physical delete)
Parameters:
Job
- Object - is the incoming Job Resource Object
. Mandatory.
msg
- Buffer - a buffer representing the rabbitmq message
service.restore( job, msg )
Restore a soft deleted Entity
Parameters:
Job
- Object - is the incoming Job Resource Object
. Mandatory.
msg
- Buffer - a buffer representing the rabbitmq message
service.getAll( job, msg )
Get list of the entity records from database
Parameters:
Job
- Object - is the incoming Job Resource Object
. Mandatory.
{
"from": {
"userId" : 444,
"companyId" : 243,
"user_email" : "eduardo.almeida@cairsolutions.com",
"name": "Jose Eduardo",
"id": 'dskfjhldsfh879879dsaf'
},
"entity" : "DemoUser",
"action" : "getAll",
"payload" :
{
"where": {
"active": true
},
"populate": 'objectname'
}
}
msg
- Buffer - a buffer representing the rabbitmq message
service.getById( job, msg )
Get an entity record from database by ID
Parameters:
Job
- Object - is the incoming Job Resource Object
. Mandatory.
{
"from": {
"userId" : 444,
"companyId" : 243,
"user_email" : "eduardo.almeida@cairsolutions.com",
"name": "Jose Eduardo",
"id": 'dskfjhldsfh879879dsaf'
},
"entity" : "DemoUser",
"action" : "getById",
"payload" :
{
"_id": "5c585ab5bfbfa98b7b966bd1",
"populate": 'objectname'
}
}
msg
- Buffer - a buffer representing the rabbitmq message
service.getOne( job, msg )
Get an entity record from database based on filtering
Parameters:
Job
- Object - is the incoming Job Resource Object
. Mandatory.
{
"from": {
"userId" : 444,
"companyId" : 243,
"user_email" : "eduardo.almeida@cairsolutions.com",
"name": "Jose Eduardo",
"id": 'dskfjhldsfh879879dsaf'
},
"entity" : "DemoUser",
"action" : "getOne",
"payload" :
{
"where": {
"first_name": "Eduardo",
},
"populate": 'objectname'
}
}
msg
- Buffer - a buffer representing the rabbitmq message
Inherited CRUD methods
Please check the CRUD documentation to see all methods inherited from CRUD class
that are available into Service Class
Job Resource
object - full example
The Job Resource
object is a well known structure used as communication stardard to describe a server job.
Workers and Rest APIs using this framework will use this pattern to consume a service class
"from": {
"userId" : 444,
"companyId" : 243,
"user_email" : "eduardo.almeida@cairsolutions.com",
"name": "Jose Eduardo",
"id": 'dskfjhldsfh879879dsaf'
},
"entity" : "DemoUser",
"action" : "delete",
"payload" :
{
"_id": "5c585ab5bfbfa98b7b966bd1"
}