2026-01-26 07:53:35 +02:00

137 lines
2.9 KiB
JavaScript

const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;
const DATABASE_NAME = process.env.DATABASE_NAME || '';
const GATEWAY_URL = process.env.GATEWAY_URL || 'http://localhost:6001';
const API_KEY = process.env.API_KEY || '';
// In-memory storage for simple tests
let items = [
{ id: 1, name: 'Item 1', description: 'First item' },
{ id: 2, name: 'Item 2', description: 'Second item' }
];
let nextId = 3;
app.use(express.json());
// Health check
app.get('/health', (req, res) => {
res.json({
status: 'healthy',
timestamp: new Date().toISOString(),
service: 'nodejs-api-test',
config: {
port: PORT,
databaseName: DATABASE_NAME ? '[configured]' : '[not configured]',
gatewayUrl: GATEWAY_URL
}
});
});
// Root endpoint
app.get('/', (req, res) => {
res.json({
message: 'Orama Network Node.js API Test',
version: '1.0.0',
endpoints: {
health: 'GET /health',
items: 'GET/POST /api/items',
item: 'GET/PUT/DELETE /api/items/:id'
}
});
});
// List items
app.get('/api/items', (req, res) => {
res.json({
items: items,
total: items.length
});
});
// Get single item
app.get('/api/items/:id', (req, res) => {
const id = parseInt(req.params.id);
const item = items.find(i => i.id === id);
if (!item) {
return res.status(404).json({ error: 'Item not found' });
}
res.json(item);
});
// Create item
app.post('/api/items', (req, res) => {
const { name, description } = req.body;
if (!name) {
return res.status(400).json({ error: 'Name is required' });
}
const newItem = {
id: nextId++,
name: name,
description: description || ''
};
items.push(newItem);
res.status(201).json({
success: true,
item: newItem
});
});
// Update item
app.put('/api/items/:id', (req, res) => {
const id = parseInt(req.params.id);
const index = items.findIndex(i => i.id === id);
if (index === -1) {
return res.status(404).json({ error: 'Item not found' });
}
const { name, description } = req.body;
if (name) items[index].name = name;
if (description !== undefined) items[index].description = description;
res.json({
success: true,
item: items[index]
});
});
// Delete item
app.delete('/api/items/:id', (req, res) => {
const id = parseInt(req.params.id);
const index = items.findIndex(i => i.id === id);
if (index === -1) {
return res.status(404).json({ error: 'Item not found' });
}
items.splice(index, 1);
res.json({
success: true,
message: 'Item deleted'
});
});
// Echo endpoint (useful for testing)
app.post('/api/echo', (req, res) => {
res.json({
received: req.body,
timestamp: new Date().toISOString()
});
});
app.listen(PORT, () => {
console.log(`Node.js API listening on port ${PORT}`);
console.log(`Database: ${DATABASE_NAME || 'not configured'}`);
console.log(`Gateway: ${GATEWAY_URL}`);
});