Listing_SuggestPrice/backend/start/routes.ts

50 lines
2.1 KiB
TypeScript

import router from '@adonisjs/core/services/router'
import { middleware } from '#start/kernel'
const AuthController = () => import('#controllers/auth_controller')
const ProductsController = () => import('#controllers/products_controller')
const ImportsController = () => import('#controllers/imports_controller')
const PricingController = () => import('#controllers/pricing_controller')
const LogsController = () => import('#controllers/logs_controller')
const HistoriesController = () => import('#controllers/histories_controller')
router.get('/', async () => ({ service: 'suggestprice-api', status: 'ok' }))
router.get('/api/health', async () => ({ ok: true }))
router.get('/api/products/syncProductBySku', [ProductsController, 'syncProductBySku'])
router.get('/api/products', [ProductsController, 'index'])
router
.group(() => {
// --- Auth ---
router.post('/auth/register', [AuthController, 'register'])
router.post('/auth/login', [AuthController, 'login'])
router
.group(() => {
router.post('/auth/logout', [AuthController, 'logout'])
router.get('/auth/me', [AuthController, 'me'])
// --- Products (CRUD: manual + sync) ---
router.post('/products', [ProductsController, 'store'])
router.get('/products/:id', [ProductsController, 'show'])
router.patch('/products/:id', [ProductsController, 'update'])
router.delete('/products/:id', [ProductsController, 'destroy'])
// --- Import Excel ---
router.post('/imports/products', [ImportsController, 'products'])
// --- Pricing (service gợi ý giá) ---
router.post('/pricing/suggest/:id', [PricingController, 'suggest'])
router.post('/pricing/suggest/:id/approve', [PricingController, 'approve'])
router.post('/pricing/batch', [PricingController, 'batch'])
// --- Log & History ---
router.get('/logs', [LogsController, 'index'])
router.get('/histories', [HistoriesController, 'index'])
router.get('/histories/:id', [HistoriesController, 'show'])
})
.use(middleware.auth())
})
.prefix('/api')