/
Alyar
/
Fastify-master
Обзор
Документация
Войти
/
Alyar
/
Fastify-master
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
app.ts
193 строки
5 KB
Alyar
typescript
03 дек 2025, 19:54
03 дек 2025, 19:54
4b33f25
Код
Авторство
О чём код?
import Fastify from 'fastify'; import formbody from '@fastify/formbody'; import fastifyStatic from '@fastify/static'; import fastifyView from '@fastify/view'; import { fileURLToPath } from 'url'; import path, { dirname } from 'path'; import fastifyCors from '@fastify/cors'; import dotenv from 'dotenv'; import ejs from 'ejs'; import fs from 'fs'; import mysql from 'mysql'; import strict = require('assert/strict'); dotenv.config(); const connection = mysql.createConnection({ host: process.env.MYSQL_HOST, user: process.env.MYSQL_USER, password: process.env.MYSQL_PASSWORD, database: process.env.MYSQL_DATABASE, }); connection.connect((err) => { if (err) { console.log('Connection error!'); } }); const port = process.env.PORT; const app = Fastify({ logger: false }); app.register(fastifyCors, { origin: true, }); app.register(formbody); app.register(fastifyStatic, { root: path.join(dirname(fileURLToPath(import.meta.url).replace('/dist', '')), 'public'), // root: path.join(__dirname.replace('/dist', ''), 'public'), }); app.register(fastifyView, { engine: { ejs: ejs, }, root: path.join(dirname(fileURLToPath(import.meta.url).replace('/dist', '')), 'views'), // root: path.join(__dirname.replace('/dist', ''), 'views'), }); app.get('/', (req, res) => { let query = "select * from items"; connection.query(query, (err, result, meta) => { if (err) { console.log('Query error!'); return; } res.view('home', { items: result }); }); }); app.get('/products', (req, res) => { let query = "select * from products"; connection.query(query, (err, result, meta) => { if (err) { console.log('Query error!'); return; } res.view('products', { items: result }); }); }); app.get('/items/:id', (req, res) => { const id = req.params as { id:string }; let query = "select items.id, items.name, items.location_id, locations.name AS location " + "from items " + "left join locations on items.location_id=locations.id " + "where items.id=?"; connection.query(query, [id], (err, items, meta) => { if (err) { console.log('Query items error!'); return; } query = "select * from locations"; connection.query(query, (err, locations, meta) => { if (err) { console.log('Query locations error!'); return; } res.view('item', { item: items[0], locations: locations }); }); }); }); app.get('/api/v1/items', (req, res) => { let query = "select * from items"; connection.query(query, (err, result, meta) => { if (err) { console.log('Query error!'); return; } res.send(result); }); }) app.get('/api/v2/products', (req, res) => { let query = "select * from products"; connection.query(query, (err, result, meta) => { if (err) { console.log('Query error!'); return; } res.send(result); }); }) app.get('/api/v3/location', (req, res) => { let query = "select * from location"; connection.query(query, (err, result, meta) => { if (err) { console.log('Query error!'); return; } res.send(result); }); }) app.post("/items/update", (req, res) => { const {location_id, id } = req.body as {location_id: Number, id:Number} let query = 'UPDATE items SET location_id = ? WHERE id = ?'; connection.query(query, [location_id,id], (err) => { if (err) { console.log('Error updating location:', err); return res.code(500).send("Database error"); } res.redirect('/'); }); }); app.post('/items/store', (req, res) => { const name = req.body as { name: string } let query = "insert into items (name) values (?)"; connection.query(query, [name], (err, result, meta) => { if (err) { console.log('Query error!'); return; } res.redirect('/'); }); }); app.post('/items/delete', (req, res) => { const id = req.body as { name: string } if (!id) { return res.redirect('/?error=empty_id'); } let query = "DELETE FROM items WHERE id = ?"; connection.query(query, [id], (err, result) => { if (err) { console.log('Delete error:', err); return res.redirect('/?error=database_error'); } // Проверяем, была ли удалена хотя бы одна запись if (result.affectedRows === 0) { return res.redirect('/?error=item_not_found'); } console.log('Item deleted successfully'); res.redirect('/?success=item_deleted'); }); }); app.listen({ host: '0.0.0.0', port: parseInt(port) }, () => { console.log(`Server is running on port ${port}`) });