implement more deletion operations
This commit is contained in:
parent
6fc9a052b7
commit
6f1b7f5b99
@ -368,8 +368,12 @@ export async function getTransactions(
|
|||||||
}
|
}
|
||||||
|
|
||||||
export enum TombstoneTag {
|
export enum TombstoneTag {
|
||||||
WithdrawalGroup = "withdrawal-group",
|
DeleteWithdrawalGroup = "delete-withdrawal-group",
|
||||||
Reserve = "reserve",
|
DeleteReserve = "delete-reserve",
|
||||||
|
DeletePayment = "delete-payment",
|
||||||
|
DeleteTip = "delete-tip",
|
||||||
|
DeleteRefreshGroup = "delete-refresh-group",
|
||||||
|
DeleteDepositGroup = "delete-deposit-group",
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -383,7 +387,7 @@ export async function deleteTransaction(
|
|||||||
|
|
||||||
if (type === TransactionType.Withdrawal) {
|
if (type === TransactionType.Withdrawal) {
|
||||||
const withdrawalGroupId = rest[0];
|
const withdrawalGroupId = rest[0];
|
||||||
ws.db.runWithWriteTransaction(
|
await ws.db.runWithWriteTransaction(
|
||||||
[Stores.withdrawalGroups, Stores.reserves, Stores.tombstones],
|
[Stores.withdrawalGroups, Stores.reserves, Stores.tombstones],
|
||||||
async (tx) => {
|
async (tx) => {
|
||||||
const withdrawalGroupRecord = await tx.get(
|
const withdrawalGroupRecord = await tx.get(
|
||||||
@ -393,7 +397,7 @@ export async function deleteTransaction(
|
|||||||
if (withdrawalGroupRecord) {
|
if (withdrawalGroupRecord) {
|
||||||
await tx.delete(Stores.withdrawalGroups, withdrawalGroupId);
|
await tx.delete(Stores.withdrawalGroups, withdrawalGroupId);
|
||||||
await tx.put(Stores.tombstones, {
|
await tx.put(Stores.tombstones, {
|
||||||
id: TombstoneTag.WithdrawalGroup + ":" + withdrawalGroupId,
|
id: TombstoneTag.DeleteWithdrawalGroup + ":" + withdrawalGroupId,
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -405,7 +409,72 @@ export async function deleteTransaction(
|
|||||||
const reservePub = reserveRecord.reservePub;
|
const reservePub = reserveRecord.reservePub;
|
||||||
await tx.delete(Stores.reserves, reservePub);
|
await tx.delete(Stores.reserves, reservePub);
|
||||||
await tx.put(Stores.tombstones, {
|
await tx.put(Stores.tombstones, {
|
||||||
id: TombstoneTag.Reserve + ":" + reservePub,
|
id: TombstoneTag.DeleteReserve + ":" + reservePub,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
} else if (type === TransactionType.Payment) {
|
||||||
|
const proposalId = rest[0];
|
||||||
|
await ws.db.runWithWriteTransaction(
|
||||||
|
[Stores.proposals, Stores.purchases, Stores.tombstones],
|
||||||
|
async (tx) => {
|
||||||
|
let found = false;
|
||||||
|
const proposal = await tx.get(Stores.proposals, proposalId);
|
||||||
|
if (proposal) {
|
||||||
|
found = true;
|
||||||
|
await tx.delete(Stores.proposals, proposalId);
|
||||||
|
}
|
||||||
|
const purchase = await tx.get(Stores.purchases, proposalId);
|
||||||
|
if (purchase) {
|
||||||
|
found = true;
|
||||||
|
await tx.delete(Stores.proposals, proposalId);
|
||||||
|
}
|
||||||
|
if (found) {
|
||||||
|
await tx.put(Stores.tombstones, {
|
||||||
|
id: TombstoneTag.DeletePayment + ":" + proposalId,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
} else if (type === TransactionType.Refresh) {
|
||||||
|
const refreshGroupId = rest[0];
|
||||||
|
await ws.db.runWithWriteTransaction(
|
||||||
|
[Stores.refreshGroups, Stores.tombstones],
|
||||||
|
async (tx) => {
|
||||||
|
const rg = await tx.get(Stores.refreshGroups, refreshGroupId);
|
||||||
|
if (rg) {
|
||||||
|
await tx.delete(Stores.refreshGroups, refreshGroupId);
|
||||||
|
await tx.put(Stores.tombstones, {
|
||||||
|
id: TombstoneTag.DeleteRefreshGroup + ":" + refreshGroupId,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
} else if (type === TransactionType.Tip) {
|
||||||
|
const tipId = rest[0];
|
||||||
|
await ws.db.runWithWriteTransaction(
|
||||||
|
[Stores.tips, Stores.tombstones],
|
||||||
|
async (tx) => {
|
||||||
|
const tipRecord = await tx.get(Stores.tips, tipId);
|
||||||
|
if (tipRecord) {
|
||||||
|
await tx.delete(Stores.tips, tipId);
|
||||||
|
await tx.put(Stores.tombstones, {
|
||||||
|
id: TombstoneTag.DeleteTip + ":" + tipId,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
} else if (type === TransactionType.Deposit) {
|
||||||
|
const depositGroupId = rest[0];
|
||||||
|
await ws.db.runWithWriteTransaction(
|
||||||
|
[Stores.depositGroups, Stores.tombstones],
|
||||||
|
async (tx) => {
|
||||||
|
const tipRecord = await tx.get(Stores.depositGroups, depositGroupId);
|
||||||
|
if (tipRecord) {
|
||||||
|
await tx.delete(Stores.depositGroups, depositGroupId);
|
||||||
|
await tx.put(Stores.tombstones, {
|
||||||
|
id: TombstoneTag.DeleteDepositGroup + ":" + depositGroupId,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user