Commit 074ebbb9 by Kornkitt Poolsup

Initial commit

parent eda6e9cc
POSTGRESQL_URI=postgres://postgres:dv5399e63b5f37073783a0d4756c86f8@kube-dev.nexpie.io:31633/nexpieio POSTGRESQL_URI=postgres://postgres:jojyOwFJijidI2wmbMLDDWWkxx51uO1ps7L7wOnrLHgQB5VyQjfzUoYKUjosnNHE@n1.node.nexpie.io:31742/nexpieio
POSTGRESQL_SCHEMA=deviceregistry POSTGRESQL_SCHEMA=deviceregistry
const { Database, aql } = require("arangojs");
const fs = require('fs')
// netpie
//const db = new Database('http://root:2f1eba7d5917b7d217eed24b592a262e@127.0.0.1:49529');
// nexpie
const db = new Database('http://root:15388a8e461d9deb07c2b78cfc2d2a01@127.0.0.1:37529');
db.useDatabase('deviceregistry');
function dumpCollection(collectionname,filename) {
if (!filename) {
filename = collectionname;
}
return new Promise(async (resolve, reject) => {
try {
const bares = await db.query(`
FOR rec IN ${collectionname}
RETURN rec
`);
console.log(`Dumping ${collectionname} ...`);
var logger = fs.createWriteStream(`./data/arango-${filename}.json`, {});
let first = true;
for await (let ba of bares) {
let batext = JSON.stringify(ba);
if (first) {
logger.write(`[${batext}\n`) // append string to your file
}
else {
logger.write(`,${batext}\n`) // append string to your file
}
first = false;
}
logger.write(`]`) // append string to your file
logger.end();
resolve();
} catch (err) {
reject(err.message);
}
});
}
async function doit() {
await dumpCollection('device').catch(e=>{
console.log(e);
});
await dumpCollection('flowagent').catch(e=>{
console.log(e);
});
await dumpCollection('flowagentsession').catch(e=>{
console.log(e);
});
await dumpCollection('group').catch(e=>{
console.log(e);
});
await dumpCollection('membership').catch(e=>{
console.log(e);
});
await dumpCollection('project').catch(e=>{
console.log(e);
});
await dumpCollection('trigger','devicetrigger').catch(e=>{
console.log(e);
});
}
doit();
const { Database, aql } = require("arangojs");
const fs = require('fs')
// old arangoA
// netpie
//const db = new Database('http://root:2f1eba7d5917b7d217eed24b592a262e@127.0.0.1:48529');
//nexpie
const db = new Database('http://root:15388a8e461d9deb07c2b78cfc2d2a01@127.0.0.1:39529');
db.useDatabase('shadowdb');
function dumpCollection(collectionname,filename) {
if (!filename) {
filename = collectionname;
}
return new Promise(async (resolve, reject) => {
try {
const bares = await db.query(`
FOR rec IN ${collectionname}
RETURN rec
`);
console.log(`Dumping ${collectionname} ...`);
var logger = fs.createWriteStream(`./data/arango-${filename}.json`, {});
let first = true;
for await (let ba of bares) {
let batext = JSON.stringify(ba);
if (first) {
logger.write(`[${batext}\n`) // append string to your file
}
else {
logger.write(`,${batext}\n`) // append string to your file
}
first = false;
}
logger.write(`]`) // append string to your file
logger.end();
resolve();
} catch (err) {
reject(err.message);
}
});
}
async function doit() {
// await dumpCollection('apitoken').catch(e=>{
// console.log(e);
// });
await dumpCollection('trigger','shadowtrigger').catch(e=>{
console.log(e);
});
// await dumpCollection('usertoken').catch(e=>{
// console.log(e);
// });
}
doit();
const { Database, aql } = require("arangojs");
const fs = require('fs')
// old arangoA
//const db = new Database('http://root:2f1eba7d5917b7d217eed24b592a262e@127.0.0.1:48529');
const db = new Database('http://root:15388a8e461d9deb07c2b78cfc2d2a01@127.0.0.1:39529');
db.useDatabase('tokenregistry');
function dumpCollection(collectionname) {
return new Promise(async (resolve, reject) => {
try {
const bares = await db.query(`
FOR rec IN ${collectionname}
RETURN rec
`);
console.log(`Dumping ${collectionname} ...`);
var logger = fs.createWriteStream(`./data/arango-${collectionname}.json`, {});
let first = true;
for await (let ba of bares) {
let batext = JSON.stringify(ba);
if (first) {
logger.write(`[${batext}\n`) // append string to your file
}
else {
logger.write(`,${batext}\n`) // append string to your file
}
first = false;
}
logger.write(`]`) // append string to your file
logger.end();
resolve();
} catch (err) {
reject(err.message);
}
});
}
async function doit() {
// await dumpCollection('apitoken').catch(e=>{
// console.log(e);
// });
await dumpCollection('devicetoken').catch(e=>{
console.log(e);
});
// await dumpCollection('usertoken').catch(e=>{
// console.log(e);
// });
}
doit();
require('dotenv').config();
//------ ไม่ใช้ --------------------- //------ ไม่ใช้ ---------------------
const PGPool = require('pg').Pool; const PGPool = require('pg').Pool;
...@@ -11,13 +12,15 @@ function readJSON(filename) { ...@@ -11,13 +12,15 @@ function readJSON(filename) {
return jdata; return jdata;
} }
let POSTGRESQL_URI = process.env['POSTGRESQL_URI'];
let arango_device = readJSON('data/arango-device.json'); let arango_device = readJSON('data/arango-device.json');
let arango_flowagent = readJSON('data/arango-flowagent.json'); let arango_flowagent = readJSON('data/arango-flowagent.json');
let arango_flowagentsession = readJSON('data/arango-flowagentsession.json'); let arango_flowagentsession = readJSON('data/arango-flowagentsession.json');
let arango_group = readJSON('data/arango-group.json'); let arango_group = readJSON('data/arango-group.json');
let arango_membership = readJSON('data/arango-membership.json'); let arango_membership = readJSON('data/arango-membership.json');
let arango_project = readJSON('data/arango-project.json'); let arango_project = readJSON('data/arango-project.json');
let arango_trigger = readJSON('data/arango-triggerdevice.json'); let arango_trigger = readJSON('data/arango-devicetrigger.json');
let arango_devicetoken = readJSON('data/arango-devicetoken.json'); //------------- let arango_devicetoken = readJSON('data/arango-devicetoken.json'); //-------------
...@@ -50,7 +53,7 @@ let hashtab_pg_project = convertToHashTable(pg_project, 'projectid'); ...@@ -50,7 +53,7 @@ let hashtab_pg_project = convertToHashTable(pg_project, 'projectid');
let hashtab_pg_trigger = convertToHashTable(pg_trigger, 'deviceid'); let hashtab_pg_trigger = convertToHashTable(pg_trigger, 'deviceid');
let url = require('url'); let url = require('url');
let a = url.parse('postgres://yugabyte:VGh1LCBGZWIgMjQsIDIwMjIgMTI6MTU6MzIgUE0K@localhost:35433/deviceregistry'); let a = url.parse(POSTGRESQL_URI);
let u = a.auth.split(':'); let u = a.auth.split(':');
......
...@@ -20,7 +20,7 @@ let arango_flowagentsession = readJSON('data/arango-flowagentsession.json'); ...@@ -20,7 +20,7 @@ let arango_flowagentsession = readJSON('data/arango-flowagentsession.json');
let arango_group = readJSON('data/arango-group.json'); let arango_group = readJSON('data/arango-group.json');
let arango_membership = readJSON('data/arango-membership.json'); let arango_membership = readJSON('data/arango-membership.json');
let arango_project = readJSON('data/arango-project.json'); let arango_project = readJSON('data/arango-project.json');
let arango_trigger = readJSON('data/arango-triggerdevice.json'); let arango_trigger = readJSON('data/arango-devicetrigger.json');
let arango_devicetoken = readJSON('data/arango-devicetoken.json'); //------------- let arango_devicetoken = readJSON('data/arango-devicetoken.json'); //-------------
...@@ -191,14 +191,17 @@ function manageTags(B,A,type) { ...@@ -191,14 +191,17 @@ function manageTags(B,A,type) {
let out = {}; let out = {};
for (let key in B) { for (let key in B) {
// Append Type to object (DEVICE, PROJECT, GROUP)
B[key]["type"] = type; B[key]["type"] = type;
// Check if obj A has key in B and has tags or not
if (A[key] && A[key].tags) { if (A[key] && A[key].tags) {
for (let k in A[key].tags) { for (let k in A[key].tags) {
if (B[key].tags && !B[key].tags[k]) { if (B[key].tags && !B[key].tags[k]) {
out[key] = B[key]; out[key] = B[key];
} }
} }
} else if (!A[key] && B[key].tags) { } else if (!A[key] || !A[key].tags) {
out[key] = B[key]; out[key] = B[key];
} }
} }
...@@ -258,10 +261,10 @@ for (let k in alldata) { ...@@ -258,10 +261,10 @@ for (let k in alldata) {
} }
for (let key in obj.tags) { for (let key in obj.tags) {
cmd = (cmd == '' ? CMDHEAD : ',') + ` ('${k}','${obj.type}','${key}','${obj.tags[key]}') \n`; cmd = (cmd == '' ? CMDHEAD : (cmd + ',')) + ` ('${k}','${obj.type}','${key}','${obj.tags[key]}')`;
} }
// console.log(cmd); console.log(cmd);
cmd += `ON CONFLICT (objectid, key) DO NOTHING `; cmd += `ON CONFLICT (objectid, key) DO NOTHING `;
cmdlist.push(cmd); cmdlist.push(cmd);
......
...@@ -14,7 +14,7 @@ let arango_flowagentsession = readJSON('data/arango-flowagentsession.json'); ...@@ -14,7 +14,7 @@ let arango_flowagentsession = readJSON('data/arango-flowagentsession.json');
let arango_group = readJSON('data/arango-group.json'); let arango_group = readJSON('data/arango-group.json');
let arango_membership = readJSON('data/arango-membership.json'); let arango_membership = readJSON('data/arango-membership.json');
let arango_project = readJSON('data/arango-project.json'); let arango_project = readJSON('data/arango-project.json');
let arango_trigger = readJSON('data/arango-triggerdevice.json'); let arango_trigger = readJSON('data/arango-devicetrigger.json');
let pg_device = readJSON('data/pg-Device.json'); let pg_device = readJSON('data/pg-Device.json');
let pg_flowchannel = readJSON('data/pg-Flowchannel.json'); let pg_flowchannel = readJSON('data/pg-Flowchannel.json');
...@@ -89,6 +89,7 @@ let diff_flowsession = minus(hashtab_arango_flowagentsession, hashtab_pg_flowses ...@@ -89,6 +89,7 @@ let diff_flowsession = minus(hashtab_arango_flowagentsession, hashtab_pg_flowses
console.log(`มี flowsession ใหม่เพิ่มมา : ${objlen(diff_flowsession)}`); console.log(`มี flowsession ใหม่เพิ่มมา : ${objlen(diff_flowsession)}`);
let diff_group = minus(hashtab_arango_group, hashtab_pg_group); let diff_group = minus(hashtab_arango_group, hashtab_pg_group);
//console.log(diff_group)
console.log(`มี group ใหม่เพิ่มมา : ${objlen(diff_group)}`); console.log(`มี group ใหม่เพิ่มมา : ${objlen(diff_group)}`);
let diff_membership = minus(hashtab_arango_membership, hashtab_pg_membership); // pg billing membership let diff_membership = minus(hashtab_arango_membership, hashtab_pg_membership); // pg billing membership
......
...@@ -19,7 +19,7 @@ let arango_flowagentsession = readJSON('data/arango-flowagentsession.json'); ...@@ -19,7 +19,7 @@ let arango_flowagentsession = readJSON('data/arango-flowagentsession.json');
let arango_group = readJSON('data/arango-group.json'); let arango_group = readJSON('data/arango-group.json');
let arango_membership = readJSON('data/arango-membership.json'); let arango_membership = readJSON('data/arango-membership.json');
let arango_project = readJSON('data/arango-project.json'); let arango_project = readJSON('data/arango-project.json');
let arango_trigger = readJSON('data/arango-triggerdevice.json'); let arango_trigger = readJSON('data/arango-devicetrigger.json');
let pg_device = readJSON('data/pg-Device.json'); let pg_device = readJSON('data/pg-Device.json');
let pg_flowchannel = readJSON('data/pg-Flowchannel.json'); let pg_flowchannel = readJSON('data/pg-Flowchannel.json');
...@@ -159,6 +159,17 @@ function minus(B,A) { ...@@ -159,6 +159,17 @@ function minus(B,A) {
return out; return out;
} }
function cleanData(data) {
// check if existing in any Project or not
let out = {};
for (let key in data) {
if (hashtab_arango_project[data[key].projectid]) {
out[key] = data[key];
}
}
return out;
}
function objlen(obj) { function objlen(obj) {
if (obj) { if (obj) {
return Object.keys(obj).length; return Object.keys(obj).length;
...@@ -200,7 +211,7 @@ for (let k in diff_project) { ...@@ -200,7 +211,7 @@ for (let k in diff_project) {
let projectid = obj._key; let projectid = obj._key;
let name = obj.name.trim().replace(/'/g,"''"); let name = obj.name.trim().replace(/'/g,"''");
let description = obj.description.replace(/'/g,"''"); let description = obj.description? obj.description.replace(/'/g,"''") : obj.description;
let hashtag = hashtag_obj_to_str(obj.tag); let hashtag = hashtag_obj_to_str(obj.tag);
let createdtime = toDateStr(obj.createdtime); let createdtime = toDateStr(obj.createdtime);
let allow_apicall = obj.quota.apicall; let allow_apicall = obj.quota.apicall;
......
...@@ -19,7 +19,7 @@ let arango_flowagentsession = readJSON('data/arango-flowagentsession.json'); ...@@ -19,7 +19,7 @@ let arango_flowagentsession = readJSON('data/arango-flowagentsession.json');
let arango_group = readJSON('data/arango-group.json'); let arango_group = readJSON('data/arango-group.json');
let arango_membership = readJSON('data/arango-membership.json'); let arango_membership = readJSON('data/arango-membership.json');
let arango_project = readJSON('data/arango-project.json'); let arango_project = readJSON('data/arango-project.json');
let arango_trigger = readJSON('data/arango-triggerdevice.json'); let arango_trigger = readJSON('data/arango-devicetrigger.json');
let pg_device = readJSON('data/pg-Device.json'); let pg_device = readJSON('data/pg-Device.json');
let pg_flowchannel = readJSON('data/pg-Flowchannel.json'); let pg_flowchannel = readJSON('data/pg-Flowchannel.json');
...@@ -82,12 +82,10 @@ function toSQLDateStr(dt) { ...@@ -82,12 +82,10 @@ function toSQLDateStr(dt) {
return dt.toISOString().replace(/T/, ' ').replace(/\..+/, '')+'+00'; return dt.toISOString().replace(/T/, ' ').replace(/\..+/, '')+'+00';
} }
else if(typeof(dt)=='number') { else if(typeof(dt)=='number') {
return new Date(dt).toISOString().replace(/T/, ' ').replace(/\..+/, return new Date(dt).toISOString().replace(/T/, ' ').replace(/\..+/, '')+'+00';
'')+'+00';
} }
else if(typeof(dt)=='string' && !isNaN(new Date(dt).getDate()) ) { else if(typeof(dt)=='string' && !isNaN(new Date(dt).getDate()) ) {
return new Date(dt).toISOString().replace(/T/, ' ').replace(/\..+/, return new Date(dt).toISOString().replace(/T/, ' ').replace(/\..+/, '')+'+00';
'')+'+00';
} }
else { else {
return undefined return undefined
...@@ -161,6 +159,18 @@ function minus(B,A) { ...@@ -161,6 +159,18 @@ function minus(B,A) {
return out; return out;
} }
function cleanData(data) {
// check if existing in any Project and Group or not
let out = {};
for (let key in data) {
if (hashtab_arango_project[data[key].projectid]
&& hashtab_arango_group[data[key].groupid]) {
out[key] = data[key];
}
}
return out;
}
function objlen(obj) { function objlen(obj) {
if (obj) { if (obj) {
return Object.keys(obj).length; return Object.keys(obj).length;
...@@ -186,19 +196,29 @@ let fixnow = 1640842624896; ...@@ -186,19 +196,29 @@ let fixnow = 1640842624896;
let cmdlist = []; let cmdlist = [];
let diff_group = minus(hashtab_arango_group, hashtab_pg_group); let clean_group = cleanData(hashtab_arango_group);
let diff_group = minus(clean_group, hashtab_pg_group);
console.log(`มี group ใหม่เพิ่มมา : ${objlen(diff_group)}`); console.log(`มี group ใหม่เพิ่มมา : ${objlen(diff_group)}`);
console.log(diff_group);
let cmd = ''; let cmd = '';
let CMDHEAD = `INSERT INTO ${POSTGRESQL_SCHEMA}."Group" (groupid, name, description,projectid, hashtag,createdtime) VALUES \n`; let CMDHEAD = `INSERT INTO ${POSTGRESQL_SCHEMA}."Group" (groupid, name, description,projectid, hashtag,createdtime) VALUES \n`;
let c = 0; let c = 0;
let summary = ''
for (let k in diff_group) { for (let k in diff_group) {
let obj = diff_group[k]; let obj = diff_group[k];
if (!obj._key || obj._key.length!=13) continue; if (!obj._key || obj._key.length!=13) continue;
// check if projectid does not exist
if (!hashtab_pg_project[obj.projectid]) {
summary += `skip ${obj._key} as projectid ${obj.projectid} is missing \n`;
continue;
}
if (!obj.name) obj.name = ''; if (!obj.name) obj.name = '';
if (!obj.description) obj.description = ''; if (!obj.description) obj.description = '';
if (!obj.createdtime) obj.createdtime = Date.now(); if (!obj.createdtime) obj.createdtime = Date.now();
...@@ -236,3 +256,4 @@ console.log('start syncing database ....') ...@@ -236,3 +256,4 @@ console.log('start syncing database ....')
//console.log(cmdlist) //console.log(cmdlist)
doit(cmdlist); doit(cmdlist);
console.log(summary);
\ No newline at end of file
...@@ -20,7 +20,7 @@ let arango_flowagentsession = readJSON('data/arango-flowagentsession.json'); ...@@ -20,7 +20,7 @@ let arango_flowagentsession = readJSON('data/arango-flowagentsession.json');
let arango_group = readJSON('data/arango-group.json'); let arango_group = readJSON('data/arango-group.json');
let arango_membership = readJSON('data/arango-membership.json'); let arango_membership = readJSON('data/arango-membership.json');
let arango_project = readJSON('data/arango-project.json'); let arango_project = readJSON('data/arango-project.json');
let arango_trigger = readJSON('data/arango-triggerdevice.json'); let arango_trigger = readJSON('data/arango-devicetrigger.json');
let arango_devicetoken = readJSON('data/arango-devicetoken.json'); //------------- let arango_devicetoken = readJSON('data/arango-devicetoken.json'); //-------------
...@@ -170,6 +170,18 @@ function minus(B,A) { ...@@ -170,6 +170,18 @@ function minus(B,A) {
return out; return out;
} }
function cleanData(data) {
// check if existing in any Project and Group or not
let out = {};
for (let key in data) {
if (hashtab_arango_project[data[key].projectid]) {
out[key] = data[key];
}
}
return out;
}
function objlen(obj) { function objlen(obj) {
if (obj) { if (obj) {
return Object.keys(obj).length; return Object.keys(obj).length;
...@@ -195,9 +207,12 @@ let fixnow = 1640842624896; ...@@ -195,9 +207,12 @@ let fixnow = 1640842624896;
let cmdlist = []; let cmdlist = [];
let diff_device = minus(hashtab_arango_device, hashtab_pg_device); let clean_device = cleanData(hashtab_arango_device);
let diff_device = minus(clean_device, hashtab_pg_device);
console.log(`มี device ใหม่เพิ่มมา : ${objlen(diff_device)}`); console.log(`มี device ใหม่เพิ่มมา : ${objlen(diff_device)}`);
console.log(diff_device)
// console.log(diff_device) // console.log(diff_device)
// process.exit(); // process.exit();
......
...@@ -19,7 +19,7 @@ let arango_flowagentsession = readJSON('data/arango-flowagentsession.json'); ...@@ -19,7 +19,7 @@ let arango_flowagentsession = readJSON('data/arango-flowagentsession.json');
let arango_group = readJSON('data/arango-group.json'); let arango_group = readJSON('data/arango-group.json');
let arango_membership = readJSON('data/arango-membership.json'); let arango_membership = readJSON('data/arango-membership.json');
let arango_project = readJSON('data/arango-project.json'); let arango_project = readJSON('data/arango-project.json');
let arango_trigger = readJSON('data/arango-triggerdevice.json'); let arango_trigger = readJSON('data/arango-devicetrigger.json');
let pg_device = readJSON('data/pg-Device.json'); let pg_device = readJSON('data/pg-Device.json');
let pg_flowchannel = readJSON('data/pg-Flowchannel.json'); let pg_flowchannel = readJSON('data/pg-Flowchannel.json');
...@@ -191,6 +191,7 @@ console.log(diff_membership) ...@@ -191,6 +191,7 @@ console.log(diff_membership)
let cmd = ''; let cmd = '';
let CMDHEAD = `INSERT INTO ${POSTGRESQL_SCHEMA}."Membership" (userid, projectid, username, level, createdtime) VALUES \n`; let CMDHEAD = `INSERT INTO ${POSTGRESQL_SCHEMA}."Membership" (userid, projectid, username, level, createdtime) VALUES \n`;
let summary = '';
let c = 0; let c = 0;
for (let k in diff_membership) { for (let k in diff_membership) {
...@@ -199,6 +200,12 @@ for (let k in diff_membership) { ...@@ -199,6 +200,12 @@ for (let k in diff_membership) {
//console.log(obj) //console.log(obj)
//obj.tag='home,bedroom,temp' //obj.tag='home,bedroom,temp'
if (!hashtab_pg_project[obj.projectid]) {
summary += `skip ${obj._key} as projectid ${obj.projectid} is missing \n`;
continue;
}
let userid = obj.userid; let userid = obj.userid;
let projectid = obj.projectid; let projectid = obj.projectid;
let username = obj.username; let username = obj.username;
...@@ -232,4 +239,5 @@ console.log('start syncing database ....') ...@@ -232,4 +239,5 @@ console.log('start syncing database ....')
doit(cmdlist); doit(cmdlist);
//console.log(cmdlist[0]) //console.log(cmdlist[0])
console.log(summary);
...@@ -19,8 +19,8 @@ let arango_flowagentsession = readJSON('data/arango-flowagentsession.json'); ...@@ -19,8 +19,8 @@ let arango_flowagentsession = readJSON('data/arango-flowagentsession.json');
let arango_group = readJSON('data/arango-group.json'); let arango_group = readJSON('data/arango-group.json');
let arango_membership = readJSON('data/arango-membership.json'); let arango_membership = readJSON('data/arango-membership.json');
let arango_project = readJSON('data/arango-project.json'); let arango_project = readJSON('data/arango-project.json');
let arango_trigger = readJSON('data/arango-triggerdevice.json'); let arango_trigger = readJSON('data/arango-devicetrigger.json');
let arango_shadow_trigger = readJSON('data/arango-triggershadow.json'); let arango_shadow_trigger = readJSON('data/arango-shadowtrigger.json');
let pg_device = readJSON('data/pg-Device.json'); let pg_device = readJSON('data/pg-Device.json');
let pg_flowchannel = readJSON('data/pg-Flowchannel.json'); let pg_flowchannel = readJSON('data/pg-Flowchannel.json');
......
...@@ -20,7 +20,7 @@ let arango_flowagentsession = readJSON('data/arango-flowagentsession.json'); ...@@ -20,7 +20,7 @@ let arango_flowagentsession = readJSON('data/arango-flowagentsession.json');
let arango_group = readJSON('data/arango-group.json'); let arango_group = readJSON('data/arango-group.json');
let arango_membership = readJSON('data/arango-membership.json'); let arango_membership = readJSON('data/arango-membership.json');
let arango_project = readJSON('data/arango-project.json'); let arango_project = readJSON('data/arango-project.json');
let arango_trigger = readJSON('data/arango-triggerdevice.json'); let arango_trigger = readJSON('data/arango-devicetrigger.json');
let arango_devicetoken = readJSON('data/arango-devicetoken.json'); //------------- let arango_devicetoken = readJSON('data/arango-devicetoken.json'); //-------------
......
...@@ -20,7 +20,7 @@ let arango_flowagentsession = readJSON('data/arango-flowagentsession.json'); ...@@ -20,7 +20,7 @@ let arango_flowagentsession = readJSON('data/arango-flowagentsession.json');
let arango_group = readJSON('data/arango-group.json'); let arango_group = readJSON('data/arango-group.json');
let arango_membership = readJSON('data/arango-membership.json'); let arango_membership = readJSON('data/arango-membership.json');
let arango_project = readJSON('data/arango-project.json'); let arango_project = readJSON('data/arango-project.json');
let arango_trigger = readJSON('data/arango-triggerdevice.json'); let arango_trigger = readJSON('data/arango-devicetrigger.json');
let arango_devicetoken = readJSON('data/arango-devicetoken.json'); //------------- let arango_devicetoken = readJSON('data/arango-devicetoken.json'); //-------------
......
File added
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
[{"_key":"1637033496564-FWAG50485009","_id":"flowagentsession/1637033496564-FWAG50485009","_rev":"_eXERRBC---","flowagentid":"FWAG50485009","brokername":"devicebroker-1","createdtime":1656004758577} [{"_key":"1651162856564-FWAG69935819","_id":"flowagentsession/1651162856564-FWAG69935819","_rev":"_esapVoq--C","flowagentid":"FWAG69935819","brokername":"devicebroker-2","createdtime":1661735755429}
,{"_key":"1646631351876-FWAG49984926","_id":"flowagentsession/1646631351876-FWAG49984926","_rev":"_eXERWMa---","flowagentid":"FWAG49984926","brokername":"devicebroker-2","createdtime":1656004763876} ,{"_key":"1657624637737-FWAG85568805","_id":"flowagentsession/1657624637737-FWAG85568805","_rev":"_esdeufm--A","flowagentid":"FWAG85568805","brokername":"devicebroker-1","createdtime":1661747642902}
,{"_key":"1642487656530-FWAG29637383","_id":"flowagentsession/1642487656530-FWAG29637383","_rev":"_eYAXq0W---","flowagentid":"FWAG29637383","brokername":"devicebroker-0","createdtime":1656256836454}
,{"_key":"FWAG493400931656286203462","_id":"flowagentsession/FWAG493400931656286203462","_rev":"_eYHXyAi---","flowagentid":"FWAG49340093","brokername":"devicebroker-1","createdtime":1656286203944}
,{"_key":"FWAG493400931656286208381","_id":"flowagentsession/FWAG493400931656286208381","_rev":"_eYHX24m---","flowagentid":"FWAG49340093","brokername":"devicebroker-0","createdtime":1656286208840}
,{"_key":"FWAG493400931656286214035","_id":"flowagentsession/FWAG493400931656286214035","_rev":"_eYHX8Wi---","flowagentid":"FWAG49340093","brokername":"devicebroker-1","createdtime":1656286214537}
] ]
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
[{"flowchannelid":"FWAG83343963","flowchannelsecret":"97PdEwowE!Jed6m~9yu)nx(6Z*4kqq(t","alias":null,"concurrent":3,"projectid":"P000415148283","description":null,"enabled":true,"banned":false,"createdtime":"2022-06-26T15:03:27.755Z","updatedtime":"2022-06-26T15:03:27.755Z"} [{"flowchannelid":"FWAG83714469","flowchannelsecret":"Of4*R2o*Xwi2bzh*Urv3vh7Dh0GxlspD","alias":"","concurrent":1,"projectid":"P743459160165","description":"","enabled":true,"banned":false,"createdtime":"2020-11-26T08:19:14.000Z","updatedtime":"2022-08-29T07:31:20.117Z"}
,{"flowchannelid":"FWAG14589450","flowchannelsecret":"Xw^zk54L2rYo!h2tH9wQT9g-cFx240De","alias":"Deer NODE-RED","concurrent":1,"projectid":"P735288284814","description":"flow.nexpie.com:1888","enabled":true,"banned":false,"createdtime":"2019-08-19T04:52:41.000Z","updatedtime":"2022-08-29T07:31:20.117Z"}
,{"flowchannelid":"FWAG63923231","flowchannelsecret":"N0yZpd7-GXxIzox6ix$-DI5yN_75KVAt","alias":"","concurrent":1,"projectid":"P262869564287","description":"Debug: piebox-demo.nexpie.com","enabled":true,"banned":false,"createdtime":"2020-07-24T06:51:54.000Z","updatedtime":"2022-08-29T07:31:20.117Z"}
,{"flowchannelid":"FWAG32637008","flowchannelsecret":"Psxfy~#jZDrko38Md7co5sCsL~2yK3Vj","alias":"Main Dashboard","concurrent":30,"projectid":"P084122770682","description":"","enabled":true,"banned":false,"createdtime":"2021-03-10T08:15:50.000Z","updatedtime":"2022-08-29T07:31:20.117Z"}
,{"flowchannelid":"FWAG94980536","flowchannelsecret":"***xuPFVnMktx$(xYkVo273JsI1QqadM","alias":"","concurrent":1,"projectid":"P118051779427","description":"","enabled":true,"banned":false,"createdtime":"2021-02-17T07:32:46.000Z","updatedtime":"2022-08-29T07:31:20.117Z"}
,{"flowchannelid":"FWAG09915669","flowchannelsecret":"d#Pkg7bSvQxy9!5S2QMOdpiVEWjZFPfH","alias":"","concurrent":1,"projectid":"P879547678978","description":"","enabled":true,"banned":false,"createdtime":"2020-12-02T07:49:10.000Z","updatedtime":"2022-08-29T07:31:20.117Z"}
,{"flowchannelid":"FWAG03425788","flowchannelsecret":"h#kzHbFs!-N2_VycXnC_vHlxal4m1V-4","alias":"","concurrent":2,"projectid":"P749259663075","description":"","enabled":true,"banned":false,"createdtime":"2021-03-28T01:42:43.000Z","updatedtime":"2022-08-29T07:31:20.117Z"}
,{"flowchannelid":"FWAG85568805","flowchannelsecret":"fUiJ-MQaQ)EWu~rinEtmaYgg+c~QglFW","alias":"","concurrent":1,"projectid":"P357833769455","description":"INETRaspi","enabled":true,"banned":false,"createdtime":"2020-03-19T07:22:51.000Z","updatedtime":"2022-08-29T07:31:20.117Z"}
,{"flowchannelid":"FWAG03119466","flowchannelsecret":"Rz!ak!OXrGT77z1a1_IuSYpplXC0*THH","alias":"","concurrent":1,"projectid":"P262869564287","description":"Debug: piebox @chamac","enabled":true,"banned":false,"createdtime":"2020-05-02T07:00:23.000Z","updatedtime":"2022-08-29T07:31:20.117Z"}
,{"flowchannelid":"FWAG37017657","flowchannelsecret":"JCD#!6DWqq-ncKjty3US(zs7!M(BMR3X","alias":"","concurrent":1,"projectid":"P798183658017","description":"","enabled":true,"banned":false,"createdtime":"2021-03-17T06:39:35.000Z","updatedtime":"2022-08-29T07:31:20.117Z"}
,{"flowchannelid":"FWAG10470823","flowchannelsecret":"^5KnGy@N5mwF.V@QDR$luaHuF4YEOhz-","alias":"","concurrent":1,"projectid":"P357833769455","description":"Box1","enabled":true,"banned":false,"createdtime":"2020-03-28T04:41:50.000Z","updatedtime":"2022-08-29T07:31:20.117Z"}
,{"flowchannelid":"FWAG81626137","flowchannelsecret":"VH9loXn(YybsQsvvZ0Wc-s~AERS!s7XQ","alias":"","concurrent":1,"projectid":"P879547678978","description":"","enabled":true,"banned":false,"createdtime":"2020-12-02T07:55:37.000Z","updatedtime":"2022-08-29T07:31:20.117Z"}
,{"flowchannelid":"FWAG10147460","flowchannelsecret":"j$F~PC_JhsYHIci)R8aKDQKsssgw0XgM","alias":"","concurrent":1,"projectid":"P629452869138","description":"","enabled":true,"banned":false,"createdtime":"2020-10-21T02:21:47.000Z","updatedtime":"2022-08-29T07:31:20.117Z"}
,{"flowchannelid":"FWAG78763425","flowchannelsecret":"XGGiZP#RO$UXemhQcUdU#YfHzewD_(tu","alias":"","concurrent":1,"projectid":"P974762281924","description":"","enabled":true,"banned":false,"createdtime":"2021-02-24T14:59:14.000Z","updatedtime":"2022-08-29T07:31:20.117Z"}
,{"flowchannelid":"FWAG56088694","flowchannelsecret":"Ozp0mZuXFEE$qW9WO0SLs7TpIM2Uxb(a","alias":"","concurrent":10,"projectid":"P798183658017","description":"","enabled":true,"banned":false,"createdtime":"2021-03-10T06:36:54.000Z","updatedtime":"2022-08-29T07:31:20.117Z"}
,{"flowchannelid":"FWAG93345363","flowchannelsecret":"nm1ri3ZbeWp1vIqgmtq!LCIaa9xd_lwD","alias":"","concurrent":1,"projectid":"P907287889503","description":"","enabled":true,"banned":false,"createdtime":"2021-01-19T15:48:15.000Z","updatedtime":"2022-08-29T07:31:20.117Z"}
,{"flowchannelid":"FWAG69083855","flowchannelsecret":"r9s~5U&IBZMjs%)79DMQqjGOVrGVV6%*","alias":"","concurrent":1,"projectid":"P330352770003","description":"avilon vm 203.151.152.59:1880","enabled":true,"banned":false,"createdtime":"2020-04-08T03:00:07.000Z","updatedtime":"2022-08-29T07:31:20.117Z"}
,{"flowchannelid":"FWAG04168594","flowchannelsecret":"cUFgcm2WJtoR-Btx(p9yas-!OHN-vAXK","alias":"","concurrent":1,"projectid":"P769655864390","description":"","enabled":true,"banned":false,"createdtime":"2020-12-02T07:33:24.000Z","updatedtime":"2022-08-29T07:31:20.117Z"}
] ]
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -11,4 +11,9 @@ user บน dev-portal พี่โคลนมาจาภnetpie ทั้งà ...@@ -11,4 +11,9 @@ user บน dev-portal พี่โคลนมาจาภnetpie ทั้งà
ดังนั้น ตองสามารถเอา account portal.netpie.io มาล็อคอิน dev-portal.netpie.io ได้ ดังนั้น ตองสามารถเอา account portal.netpie.io มาล็อคอิน dev-portal.netpie.io ได้
45fcb178-af0e-42e5-a115-aa3531300ba8 45fcb178-af0e-42e5-a115-aa3531300ba8
\ No newline at end of file
//----------------------------
dump group ไม่ครบ
dump device ไม่ครบ
group ที่ไม่มี project
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment