Commit 234aecdb authored by kroupja's avatar kroupja
Browse files

odevzdani (nejde db i guess)

parent 408a67e8
No related merge requests found
Showing with 51 additions and 50 deletions
+51 -50
......@@ -20,6 +20,7 @@
"morgan": "^1.10.0",
"mysql": "^2.18.1",
"mysql2": "^3.7.0",
"sql": "^0.78.0",
"ts-jest": "^29.1.1",
"typescript": "^5.3.3"
},
......@@ -4843,6 +4844,11 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/lodash": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.1.0.tgz",
"integrity": "sha512-B9sgtKUlz0xe7lkYb80BcOpwwJJw5iOiz4HkBDzF0+i5nJLiwfBnL08m7bBkCOPBfi+0aqvrJDMdZDfAvs8vYg=="
},
"node_modules/lodash.memoize": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
......@@ -6132,6 +6138,11 @@
"node": ">=8"
}
},
"node_modules/sliced": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz",
"integrity": "sha512-9bYT917D6H3+q8GlQBJmLVz3bc4OeVGfZ2BB12wvLnluTGfG6/8UdOUbKJDW1EEx9SZMDbjnatkau5/XcUeyOw=="
},
"node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
......@@ -6154,6 +6165,18 @@
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
},
"node_modules/sql": {
"version": "0.78.0",
"resolved": "https://registry.npmjs.org/sql/-/sql-0.78.0.tgz",
"integrity": "sha512-+If27aF3UQxmnuF5JgTJKd/X6TiELa1f58Zo5TX9ULbPnqs1fBDODwwbtU0WwM5H3lSiwx2En4m2lB1rCoIhvQ==",
"dependencies": {
"lodash": "4.1.x",
"sliced": "0.0.x"
},
"engines": {
"node": "*"
}
},
"node_modules/sqlstring": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
......
......@@ -25,6 +25,7 @@
"morgan": "^1.10.0",
"mysql": "^2.18.1",
"mysql2": "^3.7.0",
"sql": "^0.78.0",
"ts-jest": "^29.1.1",
"typescript": "^5.3.3"
},
......
import { Request, Response } from 'express';
import mysqlConnection from '../services/mysqlConnection';
import connection from '../services/mysqlConnection';
class OrderController {
static async createOrder(req: Request, res: Response) {
const { user_id, order_date, status }: { user_id: number; order_date: string; status: string } = req.body;
try {
await mysqlConnection.query('INSERT INTO E_Orders (user_id, order_date, status) VALUES (?, ?, ?)', [user_id, order_date, status]);
await connection.query('INSERT INTO E_Orders (user_id, order_date, status) VALUES (?, ?, ?)', [user_id, order_date, status]);
res.status(201).json({ message: 'Order created successfully' });
} catch (error) {
......@@ -16,7 +16,7 @@ class OrderController {
static async getAllOrders(req: Request, res: Response) {
try {
const orderList = await mysqlConnection.query('SELECT * FROM E_Orders');
const orderList = await connection.query('SELECT * FROM E_Orders');
res.status(200).json(orderList);
} catch (error) {
......@@ -28,7 +28,7 @@ class OrderController {
const orderId: number = parseInt(req.params.orderId);
try {
const order = await mysqlConnection.query('SELECT * FROM E_Orders WHERE order_id = ?', [orderId]);
const order = await connection.query('SELECT * FROM E_Orders WHERE order_id = ?', [orderId]);
if (order.length === 0) {
res.status(404).json({ message: 'Order not found' });
......
import { Product } from '../models/product.model';
import mysqlConnection from '../services/mysqlConnection';
import connection from '../services/mysqlConnection';
import mysql from 'mysql';
export const ProductService = {
getAllProducts: async (): Promise<Product[]> => {
const products: Product[] = await mysqlConnection.query('SELECT * FROM E_Products');
const products: Product[] = await connection.query('SELECT * FROM E_Products');
return products;
},
getProductById: async (productId: string): Promise<Product | undefined> => {
const product: Product | undefined = await mysqlConnection.query('SELECT * FROM E_Products WHERE product_id = ?', [productId]);
const product: Product | undefined = await connection.query('SELECT * FROM E_Products WHERE product_id = ?', [productId]);
return product;
},
addProduct: async (newProduct: Product): Promise<void> => {
await mysqlConnection.query('INSERT INTO E_Products (product_id, name, price, imageUrl) VALUES (?, ?, ?, ?)', [newProduct.product_id, newProduct.name, newProduct.price, newProduct.imageUrl]);
await connection.query('INSERT INTO E_Products (product_id, name, price, imageUrl) VALUES (?, ?, ?, ?)', [newProduct.product_id, newProduct.name, newProduct.price, newProduct.imageUrl]);
},
updateProduct: async (productId: string, updatedProduct: Product): Promise<void> => {
await mysqlConnection.query('UPDATE E_Products SET name = ?, price = ?, imageUrl = ? WHERE product_id = ?', [updatedProduct.name, updatedProduct.price, updatedProduct.imageUrl, productId]);
await connection.query('UPDATE E_Products SET name = ?, price = ?, imageUrl = ? WHERE product_id = ?', [updatedProduct.name, updatedProduct.price, updatedProduct.imageUrl, productId]);
},
deleteProduct: async (productId: string): Promise<void> => {
await mysqlConnection.query('DELETE FROM E_Products WHERE product_id = ?', [productId]);
await connection.query('DELETE FROM E_Products WHERE product_id = ?', [productId]);
},
};
import { Request, Response } from 'express';
import bcrypt from 'bcrypt';
import mysqlConnection from '../services/mysqlConnection';
import connection from '../services/mysqlConnection';
class UserController {
static async login(req: Request, res: Response) {
const { username, password }: { username: string; password: string } = req.body;
try {
const user = await mysqlConnection.query('SELECT * FROM E_Users WHERE username = ?', [username]);
const user = await connection.query('SELECT * FROM E_Users WHERE username = ?', [username]);
if (user.length === 0) {
res.status(401).json({ message: 'Invalid credentials' });
......@@ -33,7 +33,7 @@ class UserController {
try {
const hashedPassword = await bcrypt.hash(password, 10);
await mysqlConnection.query('INSERT INTO E_Users (username, password) VALUES (?, ?)', [username, hashedPassword]);
await connection.query('INSERT INTO E_Users (username, password) VALUES (?, ?)', [username, hashedPassword]);
res.status(201).json({ message: 'User registered successfully' });
} catch (error) {
......
async function fetchAllProducts() {
try {
const response = await fetch('/products'); // Upozorňuji, že cesta '/api/products' závisí na implementaci vašeho backendu
const response = await fetch('http://localhost:3000/products'); // Upozorňuji, že cesta '/api/products' závisí na implementaci vašeho backendu
if (!response.ok) {
throw new Error('Network response was not ok');
}
......@@ -15,7 +15,7 @@ async function fetchAllProducts() {
// načtení všech objednávek
async function fetchAllOrders() {
try {
const response = await fetch('/orders'); // Upozorňuji, že cesta '/api/orders' závisí na implementaci vašeho backendu
const response = await fetch('http://localhost:3000/orders'); // Upozorňuji, že cesta '/api/orders' závisí na implementaci vašeho backendu
if (!response.ok) {
throw new Error('Network response was not ok');
}
......
async function fetchProducts() {
try {
const response = await fetch('/products'); // Úprava cesty z '/api/products' na '/products'
const response = await ('http://localhost:3000/products');
if (!response.ok) {
throw new Error('Network response was not ok');
}
......@@ -15,7 +15,7 @@ async function fetchProducts() {
// Funkce pro odeslání objednávky na server
async function sendOrder(orderData) {
try {
const response = await fetch('/orders', {
const response = await fetch('http://localhost:3000/orders', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
......@@ -36,7 +36,7 @@ async function sendOrder(orderData) {
// Funkce pro registraci uživatele
async function registerUser(userData) {
try {
const response = await fetch('/register', {
const response = await fetch('http://localhost:3000/register', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
......@@ -57,7 +57,7 @@ async function registerUser(userData) {
// Funkce pro přihlášení uživatele
async function loginUser(userData) {
try {
const response = await fetch('/login', {
const response = await fetch('http://localhost:3000/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
......@@ -75,9 +75,6 @@ async function loginUser(userData) {
}
}
// Další funkce pro práci s uživateli, produkty a objednávkami...
// Zaregistrování funkcí na objektu window
window.backendConnection = {
fetchProducts,
sendOrder,
......
......@@ -42,7 +42,7 @@ async function handleSubmit(event) {
};
try {
const response = await axios.post('/orders', orderData);
const response = await axios.post('http://localhost:3000/orders', orderData);
if (response.status === 201) {
alert('Objednávka byla úspěšně vytvořena!');
window.location.href = '/index.html'; // Přesměrování na index.html po úspěšném vytvoření objednávky
......
......@@ -4,7 +4,7 @@ document.getElementById('login-form').addEventListener('submit', async function(
const username = document.getElementById('username').value;
const password = document.getElementById('password').value;
const response = await fetch('/login', {
const response = await fetch('http://localhost:3000/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
......
......@@ -4,7 +4,7 @@ document.getElementById('register-form').addEventListener('submit', async functi
const username = document.getElementById('username').value;
const password = document.getElementById('password').value;
const response = await fetch('/register', {
const response = await fetch('http://localhost:3000/register', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
......
......@@ -36,21 +36,6 @@
</div>
</div>
</main>
<script>
async function fetchProducts() {
const response = await fetch('/products');
const products = await response.json();
const productList = document.getElementById('productList');
products.forEach(product => {
const listItem = document.createElement('li');
listItem.textContent = `${product.product_id} - ${product.name} - $${product.price}`;
productList.appendChild(listItem);
});
}
fetchProducts();
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<script src="/resources/backendConnection.js"></script>
......
......@@ -5,15 +5,12 @@
<title>Login - Žlabshop</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="styles.css" rel="stylesheet">
</head>
<body>
<header>
</header>
<main>
<div class="container mt-5">
<div class="row">
......
......@@ -44,9 +44,7 @@ app.get('/error.middleware.ts', (req, res) => {
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname, '../pages/index.html'));
});
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname, '../pages/index.html'));
});
app.use((req, res, next) => {
res.status(404).sendFile(path.join(__dirname, '../pages/404.html'));
......
......@@ -2,7 +2,6 @@ import mysql from 'mysql';
// Konfigurace připojení k MySQL databázi
const connection = mysql.createConnection({
host: 'lab.uzlabina.cz', // Adresa serveru, na kterém běží MySQL
port : 3306,
user: 'kroupja', // Uživatelské jméno pro přihlášení k MySQL
......
import { IUser } from '../models/user.model';
import db from './mysqlConnection';
import connection from './mysqlConnection';
export const UserService = {
getAllUsers: async (): Promise<IUser[]> => {
const [rows] = await db.query<IUser[]>('SELECT * FROM E_Users');
const [rows] = await connection.query<IUser[]>('SELECT * FROM E_Users');
return rows;
},
addUser: async (newUser: IUser): Promise<IUser> => {
const [result] = await db.query('INSERT INTO E_Users SET ?', [newUser]);
const [result] = await connection.query('INSERT INTO E_Users SET ?', [newUser]);
const insertedUserId = result.insertId;
return { ...newUser, user_id: insertedUserId };
},
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment