|
|
|
import express, { Request, Response } from 'express'
|
|
|
|
import { Product, ProductStore } from '../models/product'
|
|
|
|
|
|
|
|
const productRoutes = (app: express.Application) => {
|
|
|
|
app.get('/products', index)
|
|
|
|
app.get('/products/:id', read)
|
|
|
|
app.post('/products/create', create)
|
|
|
|
app.put('/products/:id', update)
|
|
|
|
app.delete('/products/:id', destroy)
|
|
|
|
}
|
|
|
|
|
|
|
|
const store = new ProductStore()
|
|
|
|
|
|
|
|
const index = async (req: Request, res: Response) => {
|
|
|
|
try {
|
|
|
|
const products = await store.index()
|
|
|
|
res.json(products);
|
|
|
|
console.log('working products index')
|
|
|
|
} catch (err) {
|
|
|
|
console.log('error products index')
|
|
|
|
res.status(400)
|
|
|
|
res.json(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
const read = async (req: Request, res: Response) => {
|
|
|
|
try {
|
|
|
|
const product = await store.read(parseInt(req.params.id))
|
|
|
|
res.json(product)
|
|
|
|
} catch (err) {
|
|
|
|
res.status(400)
|
|
|
|
res.json(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
const create = async (req: Request, res: Response) => {
|
|
|
|
|
|
|
|
try {
|
|
|
|
const productInfo: Product = {
|
|
|
|
name: req.body.name,
|
|
|
|
price: req.body.price,
|
|
|
|
}
|
|
|
|
|
|
|
|
const newProduct = await store.create(productInfo)
|
|
|
|
res.json(newProduct)
|
|
|
|
} catch (err) {
|
|
|
|
res.status(400)
|
|
|
|
res.json(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
const update = async (req: Request, res: Response) => {
|
|
|
|
try {
|
|
|
|
const product = await store.update(req.body)
|
|
|
|
res.json({
|
|
|
|
name: req.body.name,
|
|
|
|
price: req.body.price,
|
|
|
|
})
|
|
|
|
} catch (err) {
|
|
|
|
res.status(400)
|
|
|
|
res.json(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const destroy = async (req: Request, res: Response) => {
|
|
|
|
try {
|
|
|
|
const deleted = await store.delete(req.body.id)
|
|
|
|
res.json(deleted)
|
|
|
|
} catch (err) {
|
|
|
|
res.status(400)
|
|
|
|
res.json(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export default productRoutes
|