various changes to status deletion

pull/206/head
Sven Sauleau 2023-02-06 19:50:44 +00:00
rodzic f0a6b695a6
commit 0a16029f38
3 zmienionych plików z 14 dodań i 4 usunięć

Wyświetl plik

@ -2,6 +2,6 @@ export function cors(): object {
return {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': 'content-type, authorization, idempotency-key',
'Access-Control-Allow-Methods': 'GET, PUT, POST',
'Access-Control-Allow-Methods': 'GET, PUT, POST, DELETE',
}
}

Wyświetl plik

@ -17,6 +17,7 @@ import { addFollowing, acceptFollowing } from 'wildebeest/backend/src/mastodon/f
import { MessageType } from 'wildebeest/backend/src/types/queue'
import { MastodonStatus } from 'wildebeest/backend/src/types'
import { mastodonIdSymbol, getObjectByMastodonId } from 'wildebeest/backend/src/activitypub/objects'
import { addObjectInOutbox } from 'wildebeest/backend/src/activitypub/actors/outbox'
const userKEK = 'test_kek4'
const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms))
@ -832,6 +833,7 @@ describe('Mastodon APIs', () => {
const db = await makeDB()
const actor = await createPerson(domain, db, userKEK, 'sven@cloudflare.com')
const note = await createPublicNote(domain, db, 'note from actor', actor)
await addObjectInOutbox(db, actor, note)
const res = await statuses_id.handleRequestDelete(db, note[mastodonIdSymbol]!, actor, domain)
assert.equal(res.status, 200)

Wyświetl plik

@ -38,10 +38,18 @@ export async function handleRequestGet(db: D1Database, id: UUID, domain: string)
// schema directly into D1, which D1 disallows at the moment.
// Some context at: https://stackoverflow.com/questions/13150075/add-on-delete-cascade-behavior-to-an-sqlite3-table-after-it-has-been-created
async function deleteNote(db: D1Database, note: Note) {
const deleteOutboxObject = db.prepare('DELETE FROM outbox_objects WHERE id=?').bind(note.id.toString())
const deleteObject = db.prepare('DELETE FROM objects WHERE id=?').bind(note.id.toString())
const nodeId = note.id.toString()
const batch = [
db.prepare('DELETE FROM outbox_objects WHERE object_id=?').bind(nodeId),
db.prepare('DELETE FROM inbox_objects WHERE object_id=?').bind(nodeId),
db.prepare('DELETE FROM actor_notifications WHERE object_id=?').bind(nodeId),
db.prepare('DELETE FROM actor_favourites WHERE object_id=?').bind(nodeId),
db.prepare('DELETE FROM actor_reblogs WHERE object_id=?').bind(nodeId),
db.prepare('DELETE FROM actor_replies WHERE object_id=?1 OR in_reply_to_object_id=?1').bind(nodeId),
db.prepare('DELETE FROM objects WHERE id=?').bind(nodeId),
]
const res = await db.batch([deleteOutboxObject, deleteObject])
const res = await db.batch(batch)
for (let i = 0, len = res.length; i < len; i++) {
if (!res[i].success) {