feat: backfill thumbnails for existing image attachments on first startup
One-time async migration runs after server is listening — generates 800px WebP thumbnails for all existing image attachments that lack one. Gated by a persistent flag in instance_settings so it never re-runs.
This commit is contained in:
@@ -5,8 +5,9 @@ import websocket from '@fastify/websocket';
|
||||
import multipart from '@fastify/multipart';
|
||||
import fastifyStatic from '@fastify/static';
|
||||
import { config } from './config.js';
|
||||
import { getDb } from './db/index.js';
|
||||
import { getDb, getRawDb } from './db/index.js';
|
||||
import { seedDatabase } from './db/seed.js';
|
||||
import { backfillThumbnails } from './db/migrate.js';
|
||||
import { authRoutes } from './routes/auth.js';
|
||||
import { userRoutes } from './routes/users.js';
|
||||
import { spaceRoutes } from './routes/spaces.js';
|
||||
@@ -111,6 +112,11 @@ async function main(): Promise<void> {
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// Fire-and-forget: backfill thumbnails for existing images (runs once)
|
||||
backfillThumbnails(getRawDb(), config.uploadDir).catch(err => {
|
||||
console.error('Thumbnail backfill failed (non-fatal):', err);
|
||||
});
|
||||
|
||||
const shutdown = async () => {
|
||||
console.log('Shutting down...');
|
||||
await app.close();
|
||||
|
||||
Reference in New Issue
Block a user