microservices/database-service/app.js

63 lines
1.8 KiB
JavaScript

const express = require('express');
const { PrismaClient } = require('@prisma/client');
const app = express();
// require('dotenv').config(); // prisma client already loads .env apparently, double check before deploying
const port = process.env.NODE_PORT; // Use env for port
console.log('NODE_PORT:', port);
const prisma = new PrismaClient();
app.use(express.json());
// Endpoint to fetch custom query (avoid raw queries if possible)
app.get('/query', async (req, res) => {
// double check if user is admin first from jwt
const query = req.body.query
const response = prisma.$queryRaw`${query}`;
res.status(400).json({ error: 'Custom queries are not supported.' });
});
// Fetch top users (update logic as per your requirements)
app.get('/update', async (req, res) => {
try {
const users = await prisma.user.findMany({
orderBy: { username: 'asc' }, // Example sorting
});
res.json(users);
} catch (err) {
res.status(500).json({ error: err.message });
}
});
// Add a new user
app.post('/add-user', async (req, res) => {
try {
const { username, email } = req.body;
const newUser = await prisma.user.create({
data: { username, email },
});
res.json({ message: 'User added successfully', user: newUser });
} catch (err) {
res.status(500).json({ error: err.message });
}
});
// sign up endpoint for new users:
app.post('/register-user', async (req, res) => {
try {
const { username, password } = req.body;
const newUser = await prisma.user.create({
data: { username, email, password },
});
res.json({ message: 'User added successfully', user: newUser });
} catch (err) {
res.status(500).json({ error: err.message });
}
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});