working on replies
This commit is contained in:
45
static/db.js
45
static/db.js
@@ -10,12 +10,21 @@ const followingStoreName = "following";
|
||||
const profileStoreName = "profiles";
|
||||
let keyBase = "dandelion_posts_v1_";
|
||||
let key = "";
|
||||
let version = 1;
|
||||
async function upgrade_0to1(db) {
|
||||
let version = 3;
|
||||
async function upgrade_0to1(db, _transaction) {
|
||||
let postsStore = db.createObjectStore(postStoreName, { keyPath: "id", autoIncrement: true });
|
||||
postsStore.createIndex("datetimeIndex", "post_timestamp", { unique: false });
|
||||
postsStore.createIndex("postIDIndex", "data.post_id", { unique: true });
|
||||
}
|
||||
async function upgrade_1to2(_db, _transaction) {
|
||||
// Was broken for some clients — index creation moved to upgrade_2to3
|
||||
}
|
||||
async function upgrade_2to3(_db, transaction) {
|
||||
const postsStore = transaction.objectStore(postStoreName);
|
||||
if (!postsStore.indexNames.contains("postReplyIndex")) {
|
||||
postsStore.createIndex("postReplyIndex", "data.reply_to_id", { unique: false });
|
||||
}
|
||||
}
|
||||
// let following = ['b38b623c-c3fa-4351-9cab-50233c99fa4e'];
|
||||
// let profiles = [
|
||||
// {
|
||||
@@ -27,12 +36,12 @@ async function upgrade_0to1(db) {
|
||||
// description: "A very nice person who never does anything wrong.",
|
||||
// }];
|
||||
// let tombstones = ['b38b623c-c3fa-4351-9cab-50233c99fa4e'];
|
||||
async function upgrade_1to2(db) {
|
||||
let followingStore = db.createObjectStore(followingStoreName, { keyPath: "id", autoIncrement: true });
|
||||
let profileStore = db.createObjectStore(profileStoreName, { keyPath: "id", autoIncrement: true });
|
||||
let tombstoneStore = db.createObjectStore(tombstoneStoreName, { keyPath: "id", autoIncrement: true });
|
||||
tombstoneStore.createIndex("postIDIndex", "data.post_id", { unique: true });
|
||||
}
|
||||
// async function upgrade_1to2(db: IDBDatabase) {
|
||||
// let followingStore = db.createObjectStore(followingStoreName, { keyPath: "id", autoIncrement: true });
|
||||
// let profileStore = db.createObjectStore(profileStoreName, { keyPath: "id", autoIncrement: true });
|
||||
// let tombstoneStore = db.createObjectStore(tombstoneStoreName, { keyPath: "id", autoIncrement: true });
|
||||
// tombstoneStore.createIndex("postIDIndex", "data.post_id", { unique: true });
|
||||
// }
|
||||
// async function upgrade_1to2(db: IDBDatabase) {
|
||||
// console.log("Upgrading database from 1 to 2");
|
||||
// console.log("Converting all image arraybuffers to Blobs")
|
||||
@@ -55,13 +64,13 @@ async function upgrade_1to2(db) {
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
async function upgrade_2to3(db) {
|
||||
let followingStore = db.createObjectStore(followingStoreName, { keyPath: "id", autoIncrement: true });
|
||||
}
|
||||
// async function upgrade_2to3(db: IDBDatabase) {
|
||||
// let followingStore = db.createObjectStore(followingStoreName, { keyPath: "id", autoIncrement: true });
|
||||
// }
|
||||
let upgrades = new Map([
|
||||
[0, upgrade_0to1],
|
||||
[1, upgrade_1to2],
|
||||
[2, upgrade_2to3]
|
||||
[2, upgrade_2to3],
|
||||
]);
|
||||
export function openDatabase(userID) {
|
||||
const dbName = `user_${userID}`;
|
||||
@@ -73,12 +82,14 @@ export function openDatabase(userID) {
|
||||
};
|
||||
request.onupgradeneeded = async (event) => {
|
||||
const db = event.target.result;
|
||||
let upgradeFunction = upgrades.get(event.oldVersion);
|
||||
if (!upgradeFunction) {
|
||||
throw new Error(`db: Don't have an upgrade function to go from version ${event.oldVersion} to version ${event.newVersion}`);
|
||||
const transaction = event.target.transaction;
|
||||
for (let v = event.oldVersion; v < (event.newVersion ?? version); v++) {
|
||||
const upgradeFunction = upgrades.get(v);
|
||||
if (!upgradeFunction) {
|
||||
throw new Error(`db: Don't have an upgrade function to go from version ${v} to version ${v + 1}`);
|
||||
}
|
||||
await upgradeFunction(db, transaction);
|
||||
}
|
||||
// debugger;
|
||||
await upgradeFunction(db);
|
||||
};
|
||||
request.onsuccess = (event) => {
|
||||
const db = event.target.result;
|
||||
|
||||
Reference in New Issue
Block a user