@conclurer/edelog-sync-service
TypeScript icon, indicating that this package has built-in type declarations

1.0.0-beta.11 • Public • Published

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

Variable Values
LOGGING true or false
SYNC_SERVICE_API_DOMAIN https://app.edelog.com
ACCESS_KEY String; The key needed to authorize to this api
SYNC_SERVICE_ID String; The Edelog sync service ID
SYNC_SERVICE_SECRET_KEY String; The Edelog secret key
ALLOWED_IP_ADDRESSES ::1, 127.0.0.1, 10.0.0.1 (separated with , `)

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

Dependents (0)

Package Sidebar

Install

npm i @conclurer/edelog-sync-service

Weekly Downloads

0

Version

1.0.0-beta.11

License

MIT

Unpacked Size

38.6 kB

Total Files

29

Last publish

Collaborators

  • chrisconclurer
  • maxzeger
  • julian_bm
  • lemonlime
  • can557
  • mc17uulm
  • maehldom
  • marvinscharle