Skip to content
Snippets Groups Projects
Commit 9f1fb95f authored by miki549's avatar miki549
Browse files

-

parent c9dc9a25
No related branches found
No related tags found
No related merge requests found
.env 0 → 100644
# Server Configuration
PORT=5000
# Database Configuration
DB_USER=szofttech_project
DB_HOST=localhost
DB_NAME=szofttech_project
DB_PASSWORD=Utopia_Gown_Duo4
DB_PORT=34821
# Frontend Configuration
VITE_API_URL=http://localhost:5000
\ No newline at end of file
# Server Configuration
PORT=5000
# Database Configuration
DB_USER=szofttech_project
DB_HOST=localhost
DB_NAME=szofttech_project
DB_PASSWORD=Utopia_Gown_Duo4
DB_PORT=34821
# Frontend Configuration
VITE_API_URL=http://localhost:5000
\ No newline at end of file
This diff is collapsed.
......@@ -6,15 +6,24 @@
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
"preview": "vite preview",
"server": "node server/index.js",
"dev:all": "concurrently \"npm run dev\" \"npm run server\"",
"test:db": "node server/tests/database.test.js"
},
"dependencies": {
"vue": "^3.5.13",
"vue-router": "^4.5.0"
"vue-router": "^4.5.0",
"express": "^4.18.2",
"pg": "^8.11.3",
"axios": "^1.6.0",
"cors": "^2.8.5",
"dotenv": "^16.3.1"
},
"devDependencies": {
"@vitejs/plugin-vue": "^5.2.3",
"vite": "^6.2.4",
"vite-plugin-vue-devtools": "^7.7.2"
"vite-plugin-vue-devtools": "^7.7.2",
"concurrently": "^8.2.2"
}
}
# Ignis Webshop Backend
Ez a dokumentáció a webshop backend részét ismerteti, amely PostgreSQL adatbázist használ a termékek tárolásához.
## Rendszerkövetelmények
- Node.js (14.x vagy újabb)
- PostgreSQL (12.x vagy újabb)
## Telepítés
1. Klónozd a repozitóriumot
2. Telepítsd a függőségeket:
```bash
npm install
```
3. Hozd létre a `.env` fájlt a `.env.example` alapján és állítsd be a megfelelő értékeket:
```bash
cp .env.example .env
```
4. Hozd létre az adatbázist és táblákat a `schema.sql` fájl futtatásával:
```bash
psql -U your_postgres_user -f server/db/schema.sql
```
## Adatbázis Séma
### Products tábla
| Mező | Típus | Leírás |
|------------|---------------|----------------------------------|
| id | SERIAL | Elsődleges kulcs |
| name | VARCHAR(255) | Termék neve |
| category | VARCHAR(100) | Termék kategóriája |
| price | DECIMAL(10,0) | Termék ára |
| stock | INTEGER | Raktárkészlet |
| image_url | TEXT | A termék képének URL-je |
| discount | INTEGER | Kedvezmény százalékban (0-100) |
| is_new | BOOLEAN | Új termék-e |
| created_at | TIMESTAMP | Létrehozás időpontja |
| updated_at | TIMESTAMP | Utolsó módosítás időpontja |
## API Végpontok
### Termékek lekérdezése
```
GET /api/products
```
Visszaadja az összes terméket JSON formátumban.
### Kategóriák lekérdezése
```
GET /api/categories
```
Visszaadja az egyedi kategóriákat tömb formájában.
## Futtatás
A szerver indításához futtasd a következő parancsot:
```bash
npm run server
```
A szerver alapértelmezetten az 5000-es porton fut, hacsak nincs másként beállítva a környezeti változókban.
\ No newline at end of file
import express from 'express';
import cors from 'cors';
import dotenv from 'dotenv';
import pg from 'pg';
// Környezeti változók betöltése
dotenv.config();
const app = express();
const port = process.env.PORT;
const { Pool } = pg;
// Adatbázis kapcsolat konfigurálása
const pool = new Pool({
user: process.env.DB_USER ,
host: process.env.DB_HOST ,
database: process.env.DB_NAME ,
password: process.env.DB_PASSWORD ,
port: process.env.DB_PORT,
});
// Middleware-k beállítása
app.use(cors());
app.use(express.json());
// Termékek lekérdezése a PostgreSQL adatbázisból
app.get('/api/products', async (req, res) => {
try {
// Ellenőrizzük, hogy a pool megfelelően van-e inicializálva
if (!pool) {
throw new Error('Adatbázis kapcsolat nincs inicializálva');
}
// Ellenőrizzük a környezeti változókat
console.log('Adatbázis kapcsolat beállításai:', {
user: process.env.DB_USER,
host: process.env.DB_HOST,
database: process.env.DB_NAME,
port: process.env.DB_PORT,
// Jelszót nem írjuk ki biztonsági okokból
});
// Ellenőrizzük, hogy a products tábla létezik-e
const tableCheck = await pool.query(`
SELECT EXISTS (
SELECT FROM information_schema.tables
WHERE table_name = 'products'
);
`);
if (!tableCheck.rows[0].exists) {
throw new Error('A products tábla nem létezik az adatbázisban');
}
const result = await pool.query(`
SELECT
id,
name,
category,
price,
stock,
image_url AS image
FROM products
`);
console.log('Adatbázisból visszakapott termékek:', result.rows);
res.json(result.rows);
} catch (error) {
console.error('Hiba a termékek lekérése során:', error);
console.error('Hiba stack trace:', error.stack);
res.status(500).json({
error: 'Szerver hiba történt a termékek lekérése során',
details: error.message,
stack: error.stack
});
}
});
// Kategóriák lekérdezése
app.get('/api/categories', async (req, res) => {
try {
const result = await pool.query('SELECT DISTINCT category FROM products');
const categories = result.rows.map(row => row.category);
res.json(categories);
} catch (error) {
console.error('Hiba a kategóriák lekérése során:', error);
res.status(500).json({ error: 'Szerver hiba történt a kategóriák lekérése során' });
}
});
// Adatbázis kapcsolat tesztelése
pool.query('SELECT NOW()', (err, res) => {
if (err) {
console.error('Hiba az adatbázis kapcsolódás során:', err);
} else {
console.log('Adatbázis kapcsolat sikeres. Szerver idő:', res.rows[0].now);
}
});
// Szerver indítása
app.listen(port, () => {
console.log(`Szerver fut a következő porton: ${port}`);
});
\ No newline at end of file
import pg from 'pg';
import dotenv from 'dotenv';
// Környezeti változók betöltése
dotenv.config();
const { Pool } = pg;
// Adatbázis kapcsolat konfigurálása
const pool = new Pool({
user: process.env.DB_USER,
host: process.env.DB_HOST,
database: process.env.DB_NAME,
password: process.env.DB_PASSWORD,
port: process.env.DB_PORT,
});
async function testDatabaseConnection() {
try {
// 1. Alap kapcsolat teszt
console.log('1. Alap kapcsolat teszt...');
const result = await pool.query('SELECT NOW()');
console.log('✅ Adatbázis kapcsolat sikeres!');
console.log('Szerver idő:', result.rows[0].now);
// 2. Products tábla létezésének ellenőrzése
console.log('\n2. Products tábla ellenőrzése...');
const tableCheck = await pool.query(`
SELECT EXISTS (
SELECT FROM information_schema.tables
WHERE table_name = 'products'
);
`);
if (tableCheck.rows[0].exists) {
console.log('✅ Products tábla létezik!');
} else {
console.log('❌ Products tábla nem található!');
return;
}
// 3. Termékek számának ellenőrzése
console.log('\n3. Termékek számának ellenőrzése...');
const productCount = await pool.query('SELECT COUNT(*) FROM products');
console.log(`✅ Termékek száma: ${productCount.rows[0].count}`);
// 4. Termékek struktúrájának ellenőrzése
console.log('\n4. Termékek struktúrájának ellenőrzése...');
const sampleProduct = await pool.query('SELECT * FROM products LIMIT 1');
if (sampleProduct.rows.length > 0) {
console.log('✅ Első termék adatai:');
console.log(JSON.stringify(sampleProduct.rows[0], null, 2));
} else {
console.log('❌ Nincs termék az adatbázisban!');
}
} catch (error) {
console.error('❌ Hiba történt a teszt során:', error.message);
} finally {
// Kapcsolat lezárása
await pool.end();
}
}
// Teszt futtatása
console.log('Adatbázis kapcsolat tesztelése...\n');
testDatabaseConnection();
\ No newline at end of file
This diff is collapsed.
......@@ -15,4 +15,13 @@ export default defineConfig({
'@': fileURLToPath(new URL('./src', import.meta.url))
},
},
server: {
proxy: {
'/api': {
target: 'http://localhost:5000',
changeOrigin: true,
secure: false
}
}
}
})
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment