Skip to content

Instantly share code, notes, and snippets.

@sorsaffari
sorsaffari / phone_calls_load_data_5.js
Created September 14, 2018 10:50
Phone Calls | Loading Data: template to construct insert query for a person
function personTemplate(person) {
const { first_name, last_name, phone_number, city, age } = person;
// insert person
let graqlInsertQuery = `insert $person isa person has phone-number "${phone_number}"`;
const isNotCustomer = typeof first_name === "undefined";
if (isNotCustomer) {
// person is not a customer
graqlInsertQuery += " has is-customer false";
@sorsaffari
sorsaffari / phone_calls_load_data_6.js
Created September 14, 2018 10:50
Phone Calls | Loading Data: template to construct insert query for a contract
function contractTemplate(contract) {
const { company_name, person_id } = contract;
// match company
let graqlInsertQuery = `match $company isa company has name "${company_name}"; `;
// match person
graqlInsertQuery += `$customer isa person has phone-number "${person_id}"; `;
// insert contract
graqlInsertQuery +=
"insert (provider: $company, customer: $customer) isa contract;";
return graqlInsertQuery;
@sorsaffari
sorsaffari / phone_calls_load_data_7.js
Created September 14, 2018 10:51
Phone Calls | Loading Data: template to construct insert query for a call
function callTemplate(call) {
const { caller_id, callee_id, started_at, duration } = call;
// match caller
let graqlInsertQuery = `match $caller isa person has phone-number "${caller_id}"; `;
// match callee
graqlInsertQuery += `$callee isa person has phone-number "${callee_id}"; `;
// insert call
@sorsaffari
sorsaffari / phone_calls_load_data_9a-2.js
Last active September 14, 2018 11:03
Phone Calls | Loading Data: parsing CSV
function parseDataToObjects(input) {
const items = [];
return new Promise(function(resolve, reject) {
papa.parse(
fs.createReadStream(input.dataPath + ".csv"),
{
header: true, // a Papaparse config option
step: function(result, parser) {
items.push(result.data[0]);
@sorsaffari
sorsaffari / phone_calls_load_data_9b-2.js
Last active September 14, 2018 11:03
Phone Calls | Loading Data: processing JSON
function parseDataToObjects(input) {
const items = [];
return new Promise(function(resolve, reject) {
const pipeline = chain([
fs.createReadStream(input.dataPath + ".json"),
parser(),
streamArray()
]);
pipeline.on("data", function(result) {
@sorsaffari
sorsaffari / phone_calls_load_data_9c-3.js
Last active September 14, 2018 11:06
Phone Calls | Loading Data: parsing XML
function parseDataToObjects(input) {
const items = [];
return new Promise((resolve, reject) => {
const pipeline = new xmlStream(
fs.createReadStream(input.dataPath + ".xml")
);
pipeline.on(`endElement: ${input.selector}`, function(result) {
items.push(result);
});
@sorsaffari
sorsaffari / phone_calls_load_data_8.js
Created September 14, 2018 11:02
Phone Calls | Loading Data: requiring fs
const Grakn = require("grakn");
const fs = require("fs");
...
@sorsaffari
sorsaffari / hone_calls_load_data_9a-1.js
Created September 14, 2018 11:04
Phone Calls | Loading Data: requiring for parsing CSV
const Grakn = require("grakn");
const fs = require("fs");
const papa = require("papaparse");
...
@sorsaffari
sorsaffari / phone_calls_load_data_9b-1.js
Created September 14, 2018 11:05
Phone Calls | Loading Data: requiring for processing JSON
const Grakn = require("grakn");
const fs = require("fs");
const { parser } = require("stream-json");
const { streamArray } = require("stream-json/streamers/StreamArray");
const { chain } = require("stream-chain");
...
@sorsaffari
sorsaffari / phone_calls_load_data_9c-1.js
Created September 14, 2018 11:06
Phone Calls | Loading Data: requiring for parsing XML
const Grakn = require("grakn");
const fs = require("fs");
const xmlStream = require("xml-stream");
...