@janiscommerce/account-process
v3.0.0
Published
Creates or Updates a Process of Janis Commerce Service Account
Downloads
70
Readme
Account Process
Creates or Updates a Process of Janis Commerce Service Account
:arrow_down: Installation
npm install @janiscommerce/account-process
:new: Changes from v3.0.0
Using @janiscommerce/lambda
with version 6.x.y
to use AWS SDK
in V3
.
:new: Changes from v2.0.0
service
field
Env variable JANIS_SERVICE_NAME
is required for saving and AccountProcess.
Using Lambda instead of Api
Now the package uses Commerce Lambda function SaveAccountProcess
instead of old Api.
Response
The response of send()
has changed cause now we are using lambda instead of microservice-call.
Previous response
{
"statusCode": 200,
"body": {
"id": "5dea9fc691240d0008408000",
}
}
Current response
{
"statusCode": 200,
"payload": {
"code": 200,
"accountProcess": {
"id": "5dea9fc691240d0008408000",
"service": "my-service-name",
"process": "import-readme",
"accountId": "5dea9fc691240d00084083f8",
"status": "pending"
}
}
}
Previous response
{
"statusCode": 404,
"body": {
"message": "Account not found",
}
}
Current response
{
"statusCode": 200,
"payload": {
"code": 404,
"errorMessage": "Account not found for ID '5dea9fc691240d0008408000'"
}
}
:wrench: Configuration
:warning: This package need to be instance with API-Session, before use.
JANIS_SERVICE_NAME
(required): The name of the service that will create the AccountProcess.
:x: Wrong:
const { AccountProcess } = require('@janiscommerce/account-process');
const accountProcess = new AccountProcess();
:heavy_check_mark: Good:
const { AccountProcess } = require('@janiscommerce/account-process');
const { ApiSession } = require('@janiscommerce/api-session');
const accountProcess = session.getSessionInstance(AccountProcess);
:calling: API
send(accountId, processName, status, content, options)
- Async
- Description: Update
processName
foraccountId
in Commerce withstatus
. - Parameters:
accountId
: ObjectId Account ID in CommerceprocessName
: String name of the processstatus
: String new Status for that processcontent
: Object, OPTIONAL, Extra Data you want to add for that process, whatever you want to save, for example a message, or an error stack, etc.options
: Object, OPTIONAL, To add the Start Date or an End Date.dateStart
: Booleantrue
or Date ObjectdateEnd
: Booleantrue
or Date Object
- Returns: Object
statusCode
: Status code response from the Commerce LambdaSaveAccountProcess
payload
: Objectcode
: Number. Status code with the process responseaccountProcess
: Object. The AccountProcess saved in Commerce Service
:spades: Statuses
You can get the valid Statuses using:
statuses
- static getter
- Returns: Object
pending
processing
success
error
| Status | Using package | View in Commerce Service |
|------|-----------------|-----------------------|
| pending | AccountProcess.statuses.pending
| |
| processing | AccountProcess.statuses.processing
| |
| success | AccountProcess.statuses.success
| |
| error | AccountProcess.statuses.error
| |
Content
This is used to keep an extra information in Account Process API, like a log.
In the process:
await accountProcess.send(
'5dea9fc691240d00084083f8',
'import-readme',
AccountProcess.statuses.pending,
{ message: 'Start Importing Categories from ' } // CONTENT
);
In Commerce:
:clock1: Options
Now, there are 2 options
startDate
: Booleantrue
or specific DateObject
, to add an Date-Now ISO-String, to indicate the start of the processendDate
: Booleantrue
or specific DateObject
, to add an Date-Now ISO-String, to indicate the end of the process
This is use to set in Account-Process API these properties.
In the process:
const accountProcess = this.session.getSessionInstance(AccountProcess);
// Start the process in current date
await accountProcess.send(
'5dea9fc691240d00084083f8',
'import-readme',
AccountProcess.statuses.pending,
null,
{ startDate: true }
);
// Start the process in a specific date
await accountProcess.send(
'5dea9fc691240d00084083f8',
'import-readme',
AccountProcess.statuses.pending,
null,
{ startDate: myStoredStartDate }
);
// Finish the process in current date
await accountProcess.send(
'5dea9fc691240d00084083f8',
'import-readme',
AccountProcess.statuses.success,
null,
{ endDate: true }
);
// Finish the process in specific date
await accountProcess.send(
'5dea9fc691240d00084083f8',
'import-readme',
AccountProcess.statuses.success,
null,
{ endDate: myStoredEndDate }
);
:arrow_forward: Usage
- Send with minimal data, and pending status, and create a process in Commerce
const accountProcess = this.session.getSessionInstance(AccountProcess);
const response = await accountProcess.send(
'5dea9fc691240d00084083f8',
'import-readme',
AccountProcess.statuses.pending
)
/*
Response: {
statusCode: 200,
payload: {
code: 200,
accountProcess: {
id: '5dea9fc691240d0008408000', // the id of the AccountProcess created or updated
service: 'my-service-name',
process: 'import-readme',
accountId: '5dea9fc691240d00084083f8',
status: 'pending'
}
}
}
*/
- Send with content, and processing status, and Account is not found in Commerce
const accountProcess = this.session.getSessionInstance(AccountProcess);
const response = await accountProcess.send(
'5dea9fc691240d00084083f8',
'import-readme',
AccountProcess.statuses.processing,
{ itemsImported: 10, itemsNotModified: 1 }
);
/*
Response: {
statusCode: 200,
payload: {
code: 404,
errorMessage: 'Account not found for ID \'5dea9fc691240d00084083f8\''
}
}
*/
- Send with a Start Date and error status, and Commerce is failing
const accountProcess = this.session.getSessionInstance(AccountProcess);
const response = await accountProcess.send(
'5dea9fc691240d00084083f8',
'import-readme',
AccountProcess.statuses.error,
null // No Content,
{ startDate: true }
);
/*
Response: {
statusCode: 503
}
*/
- Send with an End Date, and success status, and update an existing process in Commerce
const accountProcess = this.session.getSessionInstance(AccountProcess);
const response = await accountProcess.send(
'5dea9fc691240d00084083f8',
'import-readme',
AccountProcess.statuses.success,
{ importedCount: 56400 },
{ endDate: true }
);
/*
Response: {
statusCode: 200,
payload: {
code: 200,
accountProcess: {
id: '5dea9fc691240d0008408000',
service: 'my-service-name',
process: 'import-readme',
accountId: '5dea9fc691240d00084083f8',
status: 'success'
endDate: '2022-05-13T13:26:25.414Z',
content: { importedCount: 56400 }
}
}
}
*/
:x: Errors
The errors are informed with a AccountProcessError
.
This object has a code that can be useful for a debugging or error handling.
The codes are the following:
| Code | Description | |------|------------------------| | 1 | No Session | | 2 | Invalid Account Id | | 3 | Invalid Process Name | | 4 | Invalid Status | | 5 | Invalid Content | | 6 | Invalid Options |