Neuron Powered Motorization

    @luxuryescapes/povoconnect
    TypeScript icon, indicating that this package has built-in type declarations

    0.0.8 • Public • Published

    Povo Connect

    A persistence agnostic replacement for Heroku Connect.

    npm install @luxuryescapes/povoconnect
    

    Before using Povo Connect make some rough API request calculations and check that you will not exceed the Salesforce API limits.

    Credentials

    Create credentials for connection:

    export const credentials = {
      clientId: "ABCDEFG",
      clientSecret: "123456",
      loginUrl: "https://cs6.salesforce.com",
      password: "password",
      username: "foo@bar.com"
    }

    Create Topic

    import { connect, upsertTopic } from "@luxuryescapes/povoconnect";
    import { credentials } from "./config";
    
    async function createTopic() {
      const conn = await connect(credentials);
    
      const topic = await upsertTopic(conn, "OpportunityUpdates")
    }

    Subscribe To Topic

    Subscribe to the topic to sync data in real time.

    Note: store message.data.replayId of the latest processed message for use next time you run a job.

    import { connect, subscribe } from "@luxuryescapes/povoconnect";
    import { credentials } from "./config";
    
    const timeout = Infinity;
    
    async function onReceive(message) {
      // do something here 
    }
    
    async function subscribeToOpportunityUpdates() {
      const conn = await connect(credentials);
    
      const subscription = {
        topic: "OpportunityUpdates",
        replayId: null
      }
    
      await subscribe(
        conn,
        subscription,
        timeout,
        onReceive
      );
    }

    Find

    Retrieves the object to sync.

    import { connect, findOne } from "@luxuryescapes/povoconnect";
    import { credentials } from "./config";
    
    const fields = ["Id", "Name"]
    
    function mapper(sobject) {
      return {
        sfid: sobject.Id,
        name: sobject.Name
      }
    }
    
    async function findOpportunityById(sfid) {
      const conn = await connect(credentials);
      
      const model = await findOne(
        conn,
        "Opportunity",
        sfid,
        mapper,
        onReceive,
        fields
      );
    
      return model
    }

    Find All

    When you make a schema change or you had an outage findAll will fetch all objects of a type so you can update your data. After this is done events should keep your data in sync.

    import { connect, findAll } from "@luxuryescapes/povoconnect";
    import { credentials } from "./config";
    
    const maxFetch = 60000;
    
    function mapper(sobject) {
      return {
        sfid: sobject.Id,
        name: sobject.Name
      }
    }
    
    const query = {
      fields: ["Id", "CreatedDate"],
      where: "foo = 'bar'",
      limit: 100
    }
    
    async function findAllOpportunity() {
      const conn = await connect(credentials);
    
      const models = await findAll(
        conn,
        "Opportunity",
        maxFetch,
        mapper,
        query
      );
    }

    Describe Object

    Describe the SO object for mapping:

    import { connect, describe } from "@luxuryescapes/povoconnect";
    import { credentials } from "./config";
    
    async function describeObject() {
      const conn = await connect(credentials);
    
      const meta = await describe(conn, "Opportunity");
    }

    Keywords

    none

    Install

    npm i @luxuryescapes/povoconnect

    DownloadsWeekly Downloads

    12

    Version

    0.0.8

    License

    MIT

    Unpacked Size

    49.8 kB

    Total Files

    32

    Last publish

    Collaborators

    • aarontoomey-le
    • sergio.costa.luxuryescapes
    • mzilio-lux
    • jeanbiezus
    • francesca-dellanno
    • tiagotraca
    • michael-reid-le
    • matthewdelaneyatluxuryescapes
    • ricardobalbinot
    • luke-chadwick-le
    • maico-dalponte-le
    • callmekev
    • lee-borkman-le
    • semeer-acheerithodi-le
    • roman-yakobnyuk-le
    • krishanii12
    • deepakini
    • sahil-sharma-le
    • andrey-tryapitsin-le
    • quan.tang
    • william-li-le
    • alexander.yakovenko
    • greg-cumming-le
    • anton-fiveiskiy-le
    • jerry.huang-le
    • dan-wanigasekera-le
    • shrabanee.mishra
    • will-cullen-le
    • adriano-luxex
    • stanislav.davydenko
    • viniciusluxury
    • henrique.aron
    • dunedayl
    • arminmon-le
    • roshinlux
    • udarab-le
    • rufus_post_le
    • kanishka-mw
    • mdluxuryescapes
    • mattswansonlux
    • cleberricardi
    • felipefeal.lux
    • mukeshbishnoi
    • tracymu
    • chris.nguyen.lux
    • marhalpert
    • reb2020
    • zediah
    • sonyque
    • joshuacullenlux
    • shawn-cx-li
    • colins44
    • diegogadens
    • felixivanov
    • joshua.paling.le
    • operations.luxgroup
    • sergey.dyachok
    • eddiemcleanlux
    • robert.harris.lux
    • manojlux
    • kostya-luxuryescapes
    • nizhuluxlux
    • eugene.tareev
    • alexb.pi
    • salman971
    • kaustuva
    • guilherme.guimaraes
    • luizcarraro
    • ryan.tian
    • bevhatzl
    • le_tyang
    • richardbiddle
    • henryshen-le
    • sameera.chandrasena.luxuryescapes
    • michael-malarchuk
    • nuwandarshika
    • lasanthalakmal93
    • jamesly
    • mlaiprasert
    • jamesz96