fix: better handling of deletes and links
This commit is contained in:
@@ -507,7 +507,7 @@ export class MediaEngine extends EventEmitter {
|
||||
async deleteMedia(id: string): Promise<boolean> {
|
||||
const db = getDatabase().getLocal();
|
||||
const existing = await db.select().from(media).where(eq(media.id, id)).get();
|
||||
|
||||
|
||||
if (!existing) {
|
||||
return false;
|
||||
}
|
||||
@@ -529,6 +529,10 @@ export class MediaEngine extends EventEmitter {
|
||||
// Delete thumbnails
|
||||
await this.deleteThumbnails(id);
|
||||
|
||||
// Delete post-media links (cascade cleanup)
|
||||
const { postMedia } = await import('../database/schema');
|
||||
await db.delete(postMedia).where(eq(postMedia.mediaId, id));
|
||||
|
||||
await db.delete(media).where(eq(media.id, id));
|
||||
|
||||
this.emit('mediaDeleted', id);
|
||||
|
||||
@@ -451,7 +451,7 @@ export class PostEngine extends EventEmitter {
|
||||
const db = getDatabase().getLocal();
|
||||
const client = getDatabase().getLocalClient();
|
||||
const existing = await db.select().from(posts).where(eq(posts.id, id)).get();
|
||||
|
||||
|
||||
if (!existing) {
|
||||
return false;
|
||||
}
|
||||
@@ -469,6 +469,25 @@ export class PostEngine extends EventEmitter {
|
||||
await db.delete(postLinks).where(eq(postLinks.sourcePostId, id));
|
||||
await db.delete(postLinks).where(eq(postLinks.targetPostId, id));
|
||||
|
||||
// Delete post-media links and update media sidecars
|
||||
const { postMedia } = await import('../database/schema');
|
||||
const { getMediaEngine } = await import('./MediaEngine');
|
||||
const linkedMediaResult = await db.select().from(postMedia).where(eq(postMedia.postId, id));
|
||||
const linkedMedia = Array.isArray(linkedMediaResult) ? linkedMediaResult : [];
|
||||
|
||||
// Remove this post from each linked media's sidecar
|
||||
const mediaEngine = getMediaEngine();
|
||||
for (const link of linkedMedia) {
|
||||
const media = await mediaEngine.getMedia(link.mediaId);
|
||||
if (media && media.linkedPostIds) {
|
||||
const updatedLinkedPostIds = media.linkedPostIds.filter(pid => pid !== id);
|
||||
await mediaEngine.updateMedia(link.mediaId, { linkedPostIds: updatedLinkedPostIds });
|
||||
}
|
||||
}
|
||||
|
||||
// Delete post-media junction entries
|
||||
await db.delete(postMedia).where(eq(postMedia.postId, id));
|
||||
|
||||
// Delete from database
|
||||
await db.delete(posts).where(eq(posts.id, id));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user