Menambahkan ulang Koneksi Service sebagai folder biasa
This commit is contained in:
parent
df0dde0d46
commit
b9fc19646f
|
@ -0,0 +1,3 @@
|
|||
node_modules/
|
||||
.env
|
||||
serviceAccountKey.json
|
|
@ -0,0 +1,57 @@
|
|||
require("dotenv").config(); // load .env
|
||||
const express = require("express");
|
||||
const admin = require("firebase-admin");
|
||||
const cors = require("cors");
|
||||
|
||||
const app = express();
|
||||
app.use(cors());
|
||||
app.use(express.json());
|
||||
|
||||
// Parsing JSON dari env
|
||||
const serviceAccount = JSON.parse(process.env.FIREBASE_CONFIG);
|
||||
|
||||
// Inisialisasi Firebase Admin
|
||||
admin.initializeApp({
|
||||
credential: admin.credential.cert(serviceAccount)
|
||||
});
|
||||
|
||||
const db = admin.firestore();
|
||||
|
||||
// Format tanggal
|
||||
function formatTanggalUTC(timeString) {
|
||||
const date = new Date(timeString);
|
||||
const tgl = String(date.getUTCDate()).padStart(2, "0");
|
||||
const bln = String(date.getUTCMonth() + 1).padStart(2, "0");
|
||||
const thn = date.getUTCFullYear();
|
||||
const jam = String(date.getUTCHours()).padStart(2, "0");
|
||||
const menit = String(date.getUTCMinutes()).padStart(2, "0");
|
||||
return `${tgl}/${bln}/${thn} . ${jam}:${menit}`;
|
||||
}
|
||||
|
||||
// Endpoint kirim data
|
||||
app.post("/api/kirim-data", async (req, res) => {
|
||||
try {
|
||||
const { uid, activity, time } = req.body;
|
||||
if (!uid || !activity || !time) {
|
||||
return res.status(400).json({ success: false, message: "Data tidak lengkap" });
|
||||
}
|
||||
|
||||
const formattedTime = formatTanggalUTC(time);
|
||||
|
||||
await db.collection("history_parkir").add({
|
||||
uid,
|
||||
activity,
|
||||
time: formattedTime
|
||||
});
|
||||
|
||||
return res.status(200).json({ success: true, message: "Data berhasil dikirim ke Firestore" });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
res.status(500).json({ success: false, message: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
const PORT = 3000;
|
||||
app.listen(PORT, () => {
|
||||
console.log(`🚀 Server is running on port ${PORT}`);
|
||||
});
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"name": "esp32-firebase-service",
|
||||
"version": "1.0.0",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"description": "",
|
||||
"dependencies": {
|
||||
"cors": "^2.8.5",
|
||||
"dotenv": "^16.5.0",
|
||||
"express": "^5.1.0",
|
||||
"firebase-admin": "^13.2.0"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
const express = require("express");
|
||||
const admin = require("firebase-admin");
|
||||
const cors = require("cors");
|
||||
const app = express();
|
||||
app.use(cors());
|
||||
app.use(express.json());
|
||||
|
||||
const serviceAccount = require("./serviceAccountKey.json");
|
||||
|
||||
admin.initializeApp({
|
||||
credential: admin.credential.cert(serviceAccount)
|
||||
});
|
||||
|
||||
const db = admin.firestore();
|
||||
|
||||
// Fungsi bantu buat format tanggal ke 'dd/MM/yyyy . HH:mm'
|
||||
function formatTanggalUTC(timeString) {
|
||||
const date = new Date(timeString);
|
||||
const tgl = String(date.getUTCDate()).padStart(2, "0");
|
||||
const bln = String(date.getUTCMonth() + 1).padStart(2, "0");
|
||||
const thn = date.getUTCFullYear();
|
||||
const jam = String(date.getUTCHours()).padStart(2, "0");
|
||||
const menit = String(date.getUTCMinutes()).padStart(2, "0");
|
||||
return `${tgl}/${bln}/${thn} . ${jam}:${menit}`;
|
||||
}
|
||||
|
||||
app.post("/api/kirim-data", async (req, res) => {
|
||||
try {
|
||||
console.log("Data diterima:", req.body);
|
||||
|
||||
const { uid, activity, time } = req.body;
|
||||
|
||||
if (!uid || !activity || !time) {
|
||||
return res.status(400).json({ success: false, message: "Data tidak lengkap" });
|
||||
}
|
||||
|
||||
const formattedTime = formatTanggalUTC(time);
|
||||
|
||||
await db.collection("history_parkir").add({
|
||||
uid,
|
||||
activity,
|
||||
time: formattedTime
|
||||
});
|
||||
|
||||
return res.status(200).json({ success: true, message: "Data berhasil dikirim ke Firestore" });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
res.status(500).json({ success: false, message: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
const PORT = 3000;
|
||||
app.listen(PORT, () => {
|
||||
console.log(`🚀 Server is running on port ${PORT}`);
|
||||
});
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"version": 2,
|
||||
"builds": [
|
||||
{
|
||||
"src": "api/kirimdata.js",
|
||||
"use": "@vercel/node"
|
||||
}
|
||||
],
|
||||
"routes": [
|
||||
{
|
||||
"src": "/api/(.*)",
|
||||
"dest": "api/kirimdata.js"
|
||||
}
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue