From d17d8334a87d3f6e3f96dcfe85e1fc10e6530f90 Mon Sep 17 00:00:00 2001 From: Alexey Pavlov Date: Sun, 31 May 2026 14:32:48 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20GET=20/api/articles/admin=20=E2=80=94?= =?UTF-8?q?=20all=20articles=20with=20status=20for=20admin=20panel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routes/articles.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/routes/articles.js b/src/routes/articles.js index b7402d5..83ebd80 100644 --- a/src/routes/articles.js +++ b/src/routes/articles.js @@ -50,6 +50,22 @@ router.post('/generate', async (req, res) => { }); +// GET /api/articles/admin — все статьи для админки (включая черновики, все поля) +router.get('/admin', async (req, res) => { + try { + const { query } = require('../config/db'); + const limit = Math.min(parseInt(req.query.limit) || 100, 200); + const offset = parseInt(req.query.offset) || 0; + const { rows } = await query( + `SELECT id, slug, title, excerpt, cover_url, tags, author, reading_time, + status, seo_title, seo_descr, views, published_at, created_at, updated_at + FROM articles ORDER BY created_at DESC LIMIT $1 OFFSET $2`, + [limit, offset] + ); + res.json(rows); + } catch (err) { res.status(500).json({ error: err.message }); } +}); + // GET /api/articles/id/:id — одна статья по числовому id router.get('/id/:id', async (req, res) => { try {