feat: Add folder management, visual thumbnails in dashboard, and full-page editor
This commit is contained in:
@@ -28,12 +28,14 @@ const redirectRoutes = require('./routes/redirect');
|
||||
const analyticsRoutes = require('./routes/analytics');
|
||||
const adminRoutes = require('./routes/admin');
|
||||
const paymentsRoutes = require('./routes/payments');
|
||||
const foldersRoutes = require('./routes/folders');
|
||||
|
||||
app.use('/api/auth', authRoutes);
|
||||
app.use('/api/qr', qrRoutes);
|
||||
app.use('/api/analytics', analyticsRoutes);
|
||||
app.use('/api/admin', adminRoutes);
|
||||
app.use('/api/payments', paymentsRoutes);
|
||||
app.use('/api/folders', foldersRoutes);
|
||||
|
||||
// Support Traefik stripped prefixes
|
||||
app.use('/auth', authRoutes);
|
||||
@@ -41,6 +43,7 @@ app.use('/qr', qrRoutes);
|
||||
app.use('/analytics', analyticsRoutes);
|
||||
app.use('/admin', adminRoutes);
|
||||
app.use('/payments', paymentsRoutes);
|
||||
app.use('/folders', foldersRoutes);
|
||||
|
||||
app.use('/l', redirectRoutes);
|
||||
|
||||
@@ -112,7 +115,16 @@ app.get('/api/health', healthCheck);
|
||||
app.get('/health', healthCheck);
|
||||
|
||||
// Auto-migrate schema
|
||||
pgPool.query(`
|
||||
CREATE TABLE IF NOT EXISTS folders (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
||||
);`).catch(console.error);
|
||||
|
||||
pgPool.query(`ALTER TABLE qr_codes ADD COLUMN IF NOT EXISTS name VARCHAR(255);`).catch(console.error);
|
||||
pgPool.query(`ALTER TABLE qr_codes ADD COLUMN IF NOT EXISTS folder_id UUID REFERENCES folders(id) ON DELETE SET NULL;`).catch(console.error);
|
||||
pgPool.query(`
|
||||
CREATE TABLE IF NOT EXISTS qr_scans (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
|
||||
Reference in New Issue
Block a user