|
1 year ago | |
---|---|---|
environment | 1 year ago | |
public | 2 years ago | |
scratch | 2 years ago | |
src | 1 year ago | |
test | 3 years ago | |
views | 1 year ago | |
.env | 1 year ago | |
.eslintrc.js | 3 years ago | |
.gitignore | 3 years ago | |
.gitmodules | 1 year ago | |
.prettierrc | 3 years ago | |
README.md | 1 year ago | |
codegen.yml | 2 years ago | |
nest-cli.json | 3 years ago | |
package-lock.json | 1 year ago | |
package.json | 1 year ago | |
schema.gql | 2 years ago | |
tsconfig.build.json | 3 years ago | |
tsconfig.json | 2 years ago |
The role for microservice - CQRS is responsible to handle the request and response in between client and graphQL server. It's also manipulate the standard fisApp request/response.
FisApp API is the main way to request and response the data. The data can be consist of Account Profile, Invoice,
NOTE: PAYLOAD will be graphQL QUERY
Request without fisApp header(simplified request)
HTTP API POST Request
POST http://swopt.com:3011/api/request
POST Request DATA - RAW JSON(application/json)
Header
{
"header": {
"messageType": "Query",
"messageID": "942ecfe2-8734-4cff-998e-6a2a5a39c464",
"messageName": "Query",
"dateCreated": "2022-03-11T02:19:50.923Z",
"isAggregate": false,
"messageProducerInformation": {
"origin": {
"userApplication": {
"userAppId": "getQueryMessage",
"userAppName": "Client"
}
},
"components": "Presentation"
},
"security": {
"ucpId": "ABC"
},
"messageDataLocation": {
"isEmbaded": true
},
"messageDataFormat": {
"dataFormat": "Json"
},
"requestExecutionMode": 0,
"resquestTimeOut": 0,
"query": "General"
}
}
Payload
query demo{
APAccountProfileQuery{
SummaryResponse{
__typename
returnFormatType
}
StatusResponse{
__typename
status
}
APAccountProfileMessage{
__typename
data{
acct_id
acct_no
}
}
}
}
SAMPLE - Header with Payload
{
header: '{ "header": { "messageType": "Query", "messageID": "942ecfe2-8734-4cff-998e-6a2a5a39c464", "messageName": "Query", "dateCreated": "2022-03-11T02:19:50.923Z", "isAggregate": false, "messageProducerInformation": { "origin": { "userApplication": {
"userAppId": "getQueryMessage", "userAppName": "Client" } }, "components": "Presentation" }, "security": {
"ucpId": "ABC" }, "messageDataLocation": { "isEmbaded": true }, "messageDataFormat": { "dataFormat": "Json" }, "requestExecutionMode": 0, "resquestTimeOut": 0, "query": "General" }}',
payload: 'query APAccountProfile { APAccountProfile { className filter returnFormatType
returnSequenceTotal returnSequenceNumber data { acct_id acct_no acct_name acct_type } } }'
}
Request without login
POST http://swopt.com:3011/api/default
Request with login
POST http://swopt.com:3011/request
Request with fisApp header
{
"header": {
"messageType": "Query",
"messageID": "942ecfe2-8734-4cff-998e-6a2a5a39c464",
"messageName": "Query",
"dateCreated": "2022-03-11T02:19:50.923Z",
"isAggregate": false,
"messageProducerInformation": {
"origin": {
"userApplication": {
"userAppId": "getQueryMessage",
"userAppName": "Client"
}
},
"components": "Presentation"
},
"security": {
"ucpId": "ABC"
},
"messageDataLocation": {
"isEmbaded": true
},
"messageDataFormat": {
"dataFormat": "Json"
},
"requestExecutionMode": 0,
"resquestTimeOut": 0,
"query": "General"
},
"data":{
"payload": "query demo { APAccountProfileQuery { SummaryResponse{ __typename returnFormatType } StatusResponse { __typename status } APAccountProfileMessage{ data { acct_id acct_no acct_name acct_type } } } } "
}
}
Access to below url is to play around the request and response. left textarea is to paste in the fisApp with header(example as below), the response will be shown in the right textarea column.
GET http://swopt.com:3011/graphqlapi
Default dataservice REQUEST:
{
"header": {
"messageType": "Query",
"messageID": "942ecfe2-8734-4cff-998e-6a2a5a39c464",
"messageName": "Query",
"dateCreated": "2022-03-11T02:19:50.923Z",
"isAggregate": false,
"messageProducerInformation": {
"origin": {
"userApplication": {
"userAppId": "getQueryMessage",
"userAppName": "Client"
}
},
"components": "Presentation"
},
"security": {
"ucpId": "ABC"
},
"messageDataLocation": {
"isEmbaded": true
},
"messageDataFormat": {
"dataFormat": "Json"
},
"requestExecutionMode": 0,
"resquestTimeOut": 0,
"query": "General"
},
"data":{
"payload": "query demo { APAccountProfileQuery { SummaryResponse{ __typename returnFormatType } StatusResponse { __typename status } APAccountProfileMessage{ data { acct_id acct_no acct_name acct_type } } } } "
}
}
Property | Type | Description |
---|---|---|
className | String | REQUIRED: define which dataservice data want to retrieve |
filter | String | OPTIONAL : The filter for the getData function will be in key=value; key=value; pair format where key refers to column name. |
returnFormatType | String | OPTIONAL: byRow , byBatchOf5, byBatchOf10 or full |
query
dataservice($className: String!,
$filter: String!,
$returnFormatType: String!)
{
dataservice(className: $className,
filter: $filter,
returnFormatType: $returnFormatType)
{
filter,
className,
returnFormatType,
returnSequenceTotal,
returnSequenceNumber,
data
}
}
"data": {
"type": "dataservice",
"className": "APAccountProfileDataService",
"returnFormatType": "byRow"
}
========================================================
type DataService {
className: String!
data: String!
filter: String!
returnFormatType: String!
returnSequenceNumber: Float!
returnSequenceTotal: Float!
}
Property | Description |
---|---|
classname | same as request className |
data | responsed data |
filter | same as request |
returnFormatType | same as requested returnFormatType |
returnSequenceTotal | refer to the total number of responses |
returnSequenceNumber | refer to the response number start from 1 to total number of response. |
GraphQL codegen is to generate the code from Graphql schema to typescript code.
# to run the graphql codegen
npm run generate
# typescript code will be generated/updated at:
.../src/generated/graphql.ts
========================================================
$ npm install
# development
$ npm run start
# watch mode
$ npm run start:dev
# production mode
$ npm run start:prod
Fix : Filename too long
git config --system core.longpaths true
git submodule sync --recursive
git submodule deinit --all -f
git submodule update --init --recursive