gpstracker/app.js
2025-02-19 19:43:30 +01:00

58 lines
1.2 KiB
JavaScript

const express = require('express');
const dotenv = require('dotenv');
const { Sequelize, DataTypes } = require('sequelize');
dotenv.config();
const app = express();
const port = process.env.PORT || 3000;
// PostgreSQL connection using Sequelize
const sequelize = new Sequelize(process.env.DATABASE_URL, {
dialect: 'postgres',
logging: false
});
// Define GPS model
const GpsData = sequelize.define('GpsData', {
latitude: {
type: DataTypes.FLOAT,
allowNull: false
},
longitude: {
type: DataTypes.FLOAT,
allowNull: false
},
created_at: {
type: DataTypes.DATE,
defaultValue: DataTypes.NOW
}
}, {
tableName: 'location_history',
timestamps: false
});
// Middleware
app.use(express.static('public'));
app.set('view engine', 'ejs');
// View route
app.get('/', async (req, res) => {
res.render('index')
});
// API route
app.get('/gpsdata', async (req, res) => {
const limit = req.query.limit || 100;
const apiResponse = await GpsData.findAll({
limit: limit,
offset: 0,
});
const gpsData = apiResponse.map((p) => p.dataValues);
res.json(gpsData);
});
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});