Limpieza y purga de cargas desde S3

Habilitar la opción “limpiar subidas” suena aterrador con el mensaje de advertencia. Al convertir un foro existente a Discourse, esta configuración se deshabilitará. No todos los scripts de importación registrarán correctamente todas las subidas en las publicaciones, por lo que si la habilita, podría perder muchos archivos adjuntos.

Con la siguiente consulta puede verificar si las subidas están correctamente referenciadas por las publicaciones:

select p.post_id, u.id as upload_id
from (select id post_id, (regexp_matches(cooked, 'data-download-href=[^\\s]+/default/([a-z0-9]+)', 'g'))[1] upload_sha from posts where raw like '%upload://%' order by created_at) as p
join uploads u on u.sha1 = p.upload_sha
where not exists(select * from upload_references r where r.upload_id = u.id)

Eso no debería devolver ninguna fila si todo está correcto. Si utiliza esta consulta en el plugin Data Explorer también enlazará de forma ordenada a las publicaciones que tienen archivos adjuntos no referenciados.

Si la consulta anterior devuelve resultados, puede corregir las referencias de subidas faltantes con la siguiente consulta:

insert into upload_references(upload_id, target_type, target_id, created_at, updated_at)
select u.id, 'Post', p.post_id, u.created_at, u.updated_at
from (select id post_id, (regexp_matches(cooked, 'data-download-href=[^\\s]+/default/([a-z0-9]+)', 'g'))[1] upload_sha from posts where raw like '%upload://%' order by created_at) as p
join uploads u on u.sha1 = p.upload_sha
on conflict do nothing;

Necesitará acceso directo a la base de datos para realizar el cambio correctivo.