Add product variants API, deployment scripts, and documentation
- Add Node.js variant-api server with PostgreSQL integration - Add new utility scripts for system verification and website status - Update CI/CD workflow configuration - Add color variant solution documentation - Add product variants JavaScript support - Update gitignore for new build artifacts
This commit is contained in:
73
variant-api/server.js
Executable file
73
variant-api/server.js
Executable file
@@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env node
|
||||
const http = require("http");
|
||||
const { Client } = require("pg");
|
||||
|
||||
const PORT = 5001;
|
||||
|
||||
const client = new Client({
|
||||
host: "localhost",
|
||||
port: 5432,
|
||||
database: "skyartshop",
|
||||
user: "skyartapp",
|
||||
password: "SkyArt2025Pass!"
|
||||
});
|
||||
|
||||
client.connect().catch(err => {
|
||||
console.error("Database connection error:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
|
||||
const server = http.createServer(async (req, res) => {
|
||||
res.setHeader("Access-Control-Allow-Origin", "*");
|
||||
res.setHeader("Access-Control-Allow-Methods", "GET, OPTIONS");
|
||||
res.setHeader("Access-Control-Allow-Headers", "Content-Type");
|
||||
res.setHeader("Content-Type", "application/json");
|
||||
|
||||
if (req.method === "OPTIONS") {
|
||||
res.writeHead(200);
|
||||
res.end();
|
||||
return;
|
||||
}
|
||||
|
||||
const match = req.url.match(/^\/api\/variants\/([a-f0-9-]+)$/i);
|
||||
|
||||
if (!match) {
|
||||
res.writeHead(404);
|
||||
res.end(JSON.stringify({ error: "Not found" }));
|
||||
return;
|
||||
}
|
||||
|
||||
const productId = match[1];
|
||||
|
||||
try {
|
||||
const result = await client.query(
|
||||
"SELECT variants FROM products WHERE id = $1",
|
||||
[productId]
|
||||
);
|
||||
|
||||
if (result.rows.length === 0) {
|
||||
res.writeHead(404);
|
||||
res.end(JSON.stringify({ error: "Product not found" }));
|
||||
return;
|
||||
}
|
||||
|
||||
const variants = result.rows[0].variants || [];
|
||||
res.writeHead(200);
|
||||
res.end(JSON.stringify(variants));
|
||||
} catch (error) {
|
||||
console.error("Query error:", error);
|
||||
res.writeHead(500);
|
||||
res.end(JSON.stringify({ error: "Internal server error" }));
|
||||
}
|
||||
});
|
||||
|
||||
server.listen(PORT, "127.0.0.1", () => {
|
||||
console.log(`Variant API running on http://127.0.0.1:${PORT}`);
|
||||
});
|
||||
|
||||
process.on("SIGTERM", () => {
|
||||
server.close(() => {
|
||||
client.end();
|
||||
process.exit(0);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user