|
|
|
// const MongoClient = require('mongodb').MongoClient
|
|
|
|
const assert = require("assert");
|
|
|
|
const fs = require("fs");
|
|
|
|
const path = require("path");
|
|
|
|
const crypto = require('crypto');
|
|
|
|
|
|
|
|
// const DATABASE_NAME = 'bookmarksdb'
|
|
|
|
// const DATABASE_SERVER = '192.168.31.201'
|
|
|
|
// const DATABASE_PORT = 27017
|
|
|
|
// const USER = encodeURIComponent('root');
|
|
|
|
// const PASSWORD = encodeURIComponent('root123');
|
|
|
|
// const AUTHMECHANISM = 'SCRAM-SHA-1';
|
|
|
|
// const DATABASE_URL = `mongodb://${USER}:${PASSWORD}@${DATABASE_SERVER}:${DATABASE_PORT}/?authMechanism=${AUTHMECHANISM}&authSource=${DATABASE_NAME}`
|
|
|
|
// const DATABASE_URL = `mongodb://${DATABASE_SERVER}:${DATABASE_PORT}/${DATABASE_NAME}`
|
|
|
|
// const COLLECTION = 'bookmarks'
|
|
|
|
|
|
|
|
// const inertData = (db, callback) => {
|
|
|
|
// const collection = db.collection('bookmarks')
|
|
|
|
// let data = [{
|
|
|
|
// id: '0',
|
|
|
|
// title: "根书签"
|
|
|
|
// }]
|
|
|
|
// collection.insertMany(data, (error, result) => {
|
|
|
|
// assert.equal(null, error)
|
|
|
|
// assert(1, result.result.n)
|
|
|
|
// assert(1, result.ops.length)
|
|
|
|
// callback(result)
|
|
|
|
// })
|
|
|
|
// }
|
|
|
|
|
|
|
|
exports.connect = () => {
|
|
|
|
// const client = new MongoClient(DATABASE_URL)
|
|
|
|
// client.connect((error) => {
|
|
|
|
// assert.equal(null, error)
|
|
|
|
// const db = client.db(DATABASE_NAME)
|
|
|
|
// console.log('connect ' + DATABASE_URL + ' successfully')
|
|
|
|
// inertData(db, result => {
|
|
|
|
// client.close()
|
|
|
|
// })
|
|
|
|
// })
|
|
|
|
};
|
|
|
|
|
|
|
|
exports.save = (bookmarkArray, callback) => {
|
|
|
|
const bookmarkStr = JSON.stringify(bookmarkArray);
|
|
|
|
// 计算hash
|
|
|
|
const hash = crypto
|
|
|
|
.createHash("sha256")
|
|
|
|
.update(JSON.stringify(bookmarkArray))
|
|
|
|
.digest("base64");
|
|
|
|
console.log(hash);
|
|
|
|
fs.writeFile(
|
|
|
|
path.join("database", Date.now() + ".json"),
|
|
|
|
bookmarkStr,
|
|
|
|
err => {
|
|
|
|
callback(err);
|
|
|
|
}
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
exports.get = callback => {
|
|
|
|
fs.readdir(path.join("database"), (err, files) => {
|
|
|
|
if (err) throw err;
|
|
|
|
let latestFile = 0;
|
|
|
|
for (let i = 0; i < files.length; i++) {
|
|
|
|
let filename = files[i];
|
|
|
|
const time = filename.substr(0, filename.length - 5);
|
|
|
|
if (time > latestFile) {
|
|
|
|
latestFile = time;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
fs.readFile(
|
|
|
|
path.join("database", latestFile + ".json"),
|
|
|
|
"utf8",
|
|
|
|
(error, data) => {
|
|
|
|
callback(error, JSON.parse(data));
|
|
|
|
}
|
|
|
|
);
|
|
|
|
});
|
|
|
|
};
|