feat(categories): CRUD endpoints + is_active for archiving
Endpoints under /api/admin/categories:
GET — list all with metrics (article_count, topic_count, autogen status)
POST — create + auto-create autogen_settings row (defaults: enabled, 1/day, 12:00 MSK)
PATCH — update name/desc/icon/color/sort_order/is_active (slug is immutable FK)
DELETE — soft (is_active=false) by default; ?force=true tries hard delete
but refuses if any articles/topics still reference the slug
Migration: ALTER TABLE categories ADD COLUMN IF NOT EXISTS is_active BOOLEAN DEFAULT true
Public GET /api/categories now filters WHERE COALESCE(is_active,true)=true.
This commit is contained in:
@@ -11,6 +11,7 @@ const statsRoutes = require('./src/routes/stats');
|
||||
const notesRoutes = require('./src/routes/notes');
|
||||
const seriesRoutes = require('./src/routes/series');
|
||||
const categoriesRoutes = require('./src/routes/categories');
|
||||
const categoriesAdminRoutes = require('./src/routes/categoriesAdmin');
|
||||
const autogenRoutes = require('./src/routes/autogen');
|
||||
const draftsRoutes = require('./src/routes/drafts');
|
||||
const userPostsRoutes = require('./src/routes/userPosts');
|
||||
@@ -131,6 +132,7 @@ app.use('/api', require('./src/routes/drafts'));
|
||||
|
||||
// Заметки Зеро — админская часть (за internal-secret middleware)
|
||||
app.use('/api/admin/zero', require('./src/routes/zeroAdmin'));
|
||||
app.use('/api/admin/categories', categoriesAdminRoutes);
|
||||
|
||||
app.get('/health', (req, res) => {
|
||||
res.json({ ok: true, service: 'zeropost-engine', time: new Date() });
|
||||
|
||||
Reference in New Issue
Block a user