79 lines
2.5 KiB
JavaScript
79 lines
2.5 KiB
JavaScript
const express = require('express');
|
|
const bodyParser = require('body-parser');
|
|
const sqlite3 = require('sqlite3').verbose();
|
|
const cors = require('cors');
|
|
|
|
const app = express();
|
|
const PORT = 3000;
|
|
|
|
const db = new sqlite3.Database('./database.db');
|
|
|
|
db.serialize(() => {
|
|
db.run(`CREATE TABLE IF NOT EXISTS users (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
email TEXT UNIQUE,
|
|
password TEXT
|
|
)`);
|
|
|
|
db.run(`CREATE TABLE IF NOT EXISTS services (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
userId INTEGER,
|
|
type TEXT,
|
|
target TEXT,
|
|
paid INTEGER DEFAULT 0,
|
|
FOREIGN KEY(userId) REFERENCES users(id)
|
|
)`);
|
|
});
|
|
|
|
app.use(cors({
|
|
origin: 'https://ngcd.center',
|
|
methods: ['GET', 'POST', 'OPTIONS'],
|
|
allowedHeaders: ['Content-Type']
|
|
}));
|
|
|
|
app.use(bodyParser.json());
|
|
|
|
app.post('/api/register', (req, res) => {
|
|
const { email, password } = req.body;
|
|
db.run('INSERT INTO users (email, password) VALUES (?, ?)', [email, password], function (err) {
|
|
if (err) return res.status(400).json({ error: 'Пользователь уже существует' });
|
|
res.json({ success: true, userId: this.lastID });
|
|
});
|
|
});
|
|
|
|
app.post('/api/login', (req, res) => {
|
|
const { email, password } = req.body;
|
|
db.get('SELECT * FROM users WHERE email = ? AND password = ?', [email, password], (err, row) => {
|
|
if (row) res.json({ success: true, userId: row.id });
|
|
else res.status(400).json({ error: 'Неверный email или пароль' });
|
|
});
|
|
});
|
|
|
|
app.post('/api/add-service', (req, res) => {
|
|
const { userId, type, target } = req.body;
|
|
db.run('INSERT INTO services (userId, type, target, paid) VALUES (?, ?, ?, 0)', [userId, type, target], function (err) {
|
|
if (err) return res.status(500).json({ error: 'Ошибка при добавлении' });
|
|
res.json({ success: true, serviceId: this.lastID });
|
|
});
|
|
});
|
|
|
|
app.post('/api/pay', (req, res) => {
|
|
const { userId } = req.body;
|
|
db.run('UPDATE services SET paid = 1 WHERE userId = ? AND paid = 0', [userId], function (err) {
|
|
if (err) return res.status(500).json({ error: 'Ошибка при оплате' });
|
|
res.json({ success: true });
|
|
});
|
|
});
|
|
|
|
app.get('/api/services/:userId', (req, res) => {
|
|
const userId = req.params.userId;
|
|
db.all('SELECT * FROM services WHERE userId = ? AND paid = 1', [userId], (err, rows) => {
|
|
if (err) return res.status(500).json({ error: 'Ошибка при получении услуг' });
|
|
res.json(rows);
|
|
});
|
|
});
|
|
|
|
app.listen(PORT, () => {
|
|
console.log(`✅ Server running at http://localhost:${PORT}`);
|
|
});
|