peers syncing for a single user
This commit is contained in:
45
db.js
45
db.js
@@ -3,6 +3,7 @@
|
||||
// name: string;
|
||||
// email: string;
|
||||
// }
|
||||
// Efficiently storing data in indexdb: https://stackoverflow.com/a/62975917
|
||||
const postStoreName = "posts";
|
||||
let keyBase = "dandelion_posts_v1_";
|
||||
let key = "";
|
||||
@@ -117,6 +118,50 @@ export async function addDataArray(userID, array) {
|
||||
console.error('Error in opening database:', error);
|
||||
}
|
||||
}
|
||||
export async function mergeDataArray(userID, array) {
|
||||
try {
|
||||
const db = await openDatabase(userID);
|
||||
const transaction = db.transaction(postStoreName, "readwrite");
|
||||
const store = transaction.objectStore(postStoreName);
|
||||
const index = store.index("postIDIndex");
|
||||
transaction.oncomplete = () => {
|
||||
console.log("Transaction completed successfully");
|
||||
db.close();
|
||||
};
|
||||
transaction.onerror = (event) => {
|
||||
console.error("Transaction error:", event.target.error);
|
||||
db.close();
|
||||
};
|
||||
let postsToWrite = [];
|
||||
for (let post of array) {
|
||||
try {
|
||||
let havePost = await new Promise((resolve, reject) => {
|
||||
const getRequest = index.getKey(post.post_id);
|
||||
getRequest.onerror = (e) => {
|
||||
console.log(e.target.error);
|
||||
reject(e);
|
||||
};
|
||||
getRequest.onsuccess = async (e) => {
|
||||
const key = e.target.result;
|
||||
resolve(key !== undefined);
|
||||
};
|
||||
});
|
||||
// console.log(post.post_id, havePost);
|
||||
if (!havePost) {
|
||||
postsToWrite.push(post);
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
console.error("Error processing post:", error);
|
||||
}
|
||||
}
|
||||
console.log(`Writing ${postsToWrite.length} posts`);
|
||||
await addDataArray(userID, postsToWrite);
|
||||
}
|
||||
catch (error) {
|
||||
console.error("Error in opening database:", error);
|
||||
}
|
||||
}
|
||||
export async function getData(userID, lowerID, upperID) {
|
||||
const db = await openDatabase(userID);
|
||||
const transaction = db.transaction(postStoreName, "readonly");
|
||||
|
||||
Reference in New Issue
Block a user