@conclurer/edelog-sync-service
v1.0.0-beta.11
Published
A package used to create a small server for syncing data between Edelog and third-party services
Downloads
15
Keywords
Readme
Edelog Sync Service
This package provides an abstract implementation for syncing customer data between their APIs and our Edelog Software.
Setting up
npm install
# starting dev server with logging enabled
LOGGING=TRUE npm run dev
# start production server
npm start
Environment Variables
Minimal Configuration
Warning: This assumes that you have configured the Enviroment Variables described above.
import provideSyncService from './src/server';
import {NotMatchedRecordsAction, TargetDataFormat} from './src/interfaces/schema.interface'; import {NotFoundAction} from './schema.interface';
provideSyncService({
mapping: (inputFilePaths) => mappingFunction(inputFilePaths),
});
async function mappingFunction(inputFilePaths: string[]): Promise<TargetDataFormat> {
console.log(inputFilePaths)
return {
version: 1,
updateCollections: [
{
databaseName: '',
performOnNotMatchedRecords: NotMatchedRecordsAction.Skip,
tasks: [
{
type: 'update-data',
where: {},
update: {
test: 'd'
},
ifNotFound: NotFoundAction.CreateNewRecord
}
]
}
],
}
}
Full Configuration
import provideSyncService from './src/server';
import {NotMatchedRecordsAction, TargetDataFormat} from './src/interfaces/schema.interface';
import {Configuration} from './src/interfaces/configuration.interface'; import {NotFoundAction} from './schema.interface';
provideSyncService({
accessKey: 'efrgtidhsnfuwe',
allowedIpAddresses:
process.env.ALLOWED_IP_ADDRESSES == null || process.env.ALLOWED_IP_ADDRESSES === ''
? [] : (process.env.ALLOWED_IP_ADDRESSES).split(', '),
mapping: (inputFilePaths) => mappingFunction(inputFilePaths),
errorHandler: (errorMessage, config) => handleError(errorMessage, config),
target: {
syncServiceId: '',
syncServiceSecretKey: ''
},
webserviceConfig: {
logging: process.env.LOGGING === 'true',
},
});
async function mappingFunction(inputFilePaths: string[]): Promise<TargetDataFormat> {
return {
version: 1,
updateCollections: [
{
databaseName: '',
performOnNotMatchedRecords: NotMatchedRecordsAction.Skip,
tasks: [
{
type: 'update-data',
where: {},
update: {
test: 'd'
},
ifNotFound: NotFoundAction.CreateNewRecord
}
]
}
],
}
}
async function handleError(errorMessage: string, config: Configuration) {
// handle errors here
}
Todo
- Send request to Copy Server if something fails
- Send request to Master Server if something fails