e0615fa867
📁 Changed TDrive root folder
99 lines
2.5 KiB
JavaScript
99 lines
2.5 KiB
JavaScript
/* eslint-disable */
|
|
var cassandra = require("cassandra-driver");
|
|
|
|
var fromAuthProvider = new cassandra.auth.PlainTextAuthProvider("", "");
|
|
var fromContactPoints = [""];
|
|
|
|
var toAuthProvider = new cassandra.auth.PlainTextAuthProvider("", "");
|
|
var toContactPoints = [""];
|
|
|
|
// -- start process
|
|
|
|
var fromClient = new cassandra.Client({
|
|
localDataCenter: "datacenter1",
|
|
contactPoints: fromContactPoints,
|
|
authProvider: fromAuthProvider,
|
|
keyspace: "tdrive",
|
|
});
|
|
|
|
var toClient = new cassandra.Client({
|
|
localDataCenter: "datacenter1",
|
|
contactPoints: toContactPoints,
|
|
authProvider: toAuthProvider,
|
|
keyspace: "tdrive",
|
|
queryOptions: {
|
|
consistency: cassandra.types.consistencies.quorum,
|
|
},
|
|
});
|
|
|
|
// -- Get all tables and copy schema
|
|
|
|
async function client(origin, query, parameters, options) {
|
|
return await new Promise((resolve, reject) => {
|
|
origin.execute(query, [], {}, function (err, result) {
|
|
if (err) {
|
|
reject({ err, result });
|
|
} else {
|
|
resolve(result);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
// Get all threads and then copy all messages in each threads
|
|
|
|
let copiedMessages = 0;
|
|
let copiedThreads = 0;
|
|
|
|
(async () => {
|
|
await new Promise(r => {
|
|
fromClient.eachRow(
|
|
"SELECT id from tdrive.threads",
|
|
[],
|
|
{ prepare: true, fetchSize: 50 },
|
|
async function (n, row) {
|
|
const threadId = row["id"];
|
|
|
|
console.log("Threads / Messages :", copiedThreads, "/", copiedMessages);
|
|
|
|
copiedThreads++;
|
|
|
|
await new Promise(r2 => {
|
|
fromClient.eachRow(
|
|
"SELECT JSON * from tdrive.messages where thread_id = ? order by id desc",
|
|
[threadId],
|
|
{ prepare: true, fetchSize: 1000 },
|
|
async function (n, row) {
|
|
const message = row["[json]"];
|
|
|
|
copiedMessages++;
|
|
|
|
await toClient.execute(
|
|
"INSERT INTO tdrive.messages JSON '" + message.replace(/'/g, "'$&") + "'",
|
|
[],
|
|
{ prepare: true },
|
|
);
|
|
},
|
|
async function (err, result) {
|
|
if (result && result.nextPage) {
|
|
await new Promise(r => setTimeout(r, 100));
|
|
result.nextPage();
|
|
} else {
|
|
r2();
|
|
}
|
|
},
|
|
);
|
|
});
|
|
},
|
|
async function (err, result) {
|
|
if (result && result.nextPage) {
|
|
await new Promise(r => setTimeout(r, 2000));
|
|
result.nextPage();
|
|
} else {
|
|
r();
|
|
}
|
|
},
|
|
);
|
|
});
|
|
})();
|