moved into src

This commit is contained in:
counterweight 2025-02-08 16:12:54 +01:00
parent ca2b2f2e8d
commit d8a72e5978
Signed by: counterweight
GPG key ID: 883EDBAA726BD96C
6 changed files with 4 additions and 3 deletions

66
src/app.js Normal file
View file

@ -0,0 +1,66 @@
const express = require('express');
const uuid = require("uuid");
const cookieParser = require('cookie-parser');
const path = require('path');
const sequelize = require('./database');
const Session = require('./models/Session');
const SessionNpubbed = require('./models/SessionNpubbed');
const app = express();
const port = 3000;
app.use(cookieParser());
app.use(express.json());
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
app.use(async (req, res, next) => {
if (!req.cookies.sessionUuid) {
const sessionUuid = uuid.v7();
res.cookie('sessionUuid', sessionUuid, { httpOnly: true, maxAge: 86400000 });
const session = await Session.create({
uuid: sessionUuid,
created_at: new Date().toISOString()
})
}
next();
});
app.get('/', (req, res) => {
res.render('index', { uuid: req.cookies.sessionUuid });
});
app.post('/api/session-npubbed', async (req, res) => {
console.log(req.body);
const sessionUuid = req.cookies.sessionUuid;
const npub = req.body.npub;
if (!sessionUuid || !npub) {
return res.status(400).json({ error: 'Missing session_uuid or npub' });
}
console.log("This is the npub: ${npub}");
try {
await SessionNpubbed.create({
sessionNpubbedUuid: uuid.v7(),
sessionUuid: sessionUuid,
npub: npub,
created_at: new Date().toISOString()
});
res.json({ message: 'SessionNpubbed record created successfully' });
} catch (error) {
console.log(error);
console.error('Error creating sessionNpubbed record:', error);
res.status(500).json({ error: 'Failed to create sessionNpubbed record' });
}
});
app.listen(port, () => {
console.log(`Server started on port ${port}`);
});

18
src/database.js Normal file
View file

@ -0,0 +1,18 @@
const { Sequelize } = require('sequelize');
const sequelize = new Sequelize({
dialect: 'sqlite',
storage: './data/database.sqlite',
define: {
timestamps: false,
freezeTableName: true
},
});
sequelize.sync().then(() => {
console.log('Database synced');
}).catch(err => {
console.error('Error syncing the database:', err);
});
module.exports = sequelize;

17
src/models/Session.js Normal file
View file

@ -0,0 +1,17 @@
const { DataTypes } = require('sequelize');
const sequelize = require('../database');
const Session = sequelize.define('Session', {
uuid: {
type: DataTypes.UUID,
allowNull: false,
unique: true,
primaryKey: true
},
created_at: {
type: DataTypes.DATE,
allowNull: false
},
});
module.exports = Session;

View file

@ -0,0 +1,25 @@
const { DataTypes } = require('sequelize');
const sequelize = require('../database');
const SessionNpubbed = sequelize.define('SessionNpubbed', {
sessionNpubbedUuid: {
type: DataTypes.UUID,
allowNull: false,
unique: true,
primaryKey: true
},
sessionUuid: {
type: DataTypes.UUID,
allowNull: false,
},
npub: {
type: DataTypes.STRING,
allowNull: false
},
created_at: {
type: DataTypes.DATE,
allowNull: false
},
});
module.exports = SessionNpubbed;

61
src/views/index.ejs Normal file
View file

@ -0,0 +1,61 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Hello World</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<h1>Hello World! We're live</h1>
<p>Now this is some production grade stuff, baby!</p>
<p>Your session's UUID: <%= uuid %>
</p>
<p id="pubkey-p" style="display:none">And your pubkey is: <span id="pubkey-span"></span></p>
</body>
<script>
window.onload = function () {
setTimeout(function () {
console.log("This code runs 2 seconds after the window has loaded.");
const npub = window.nostr.getPublicKey();
let pubkeyP = document.querySelector("#pubkey-p");
let pubkeySpan = document.querySelector("#pubkey-span");
npub.then(async function (npub) {
console.log(npub);
pubkeyP.style.display = "block";
pubkeySpan.innerText = npub;
try {
const response = await fetch('/api/session-npubbed', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
"npub": npub
})
});
if (response.ok) {
const data = await response.json();
console.log('SessionNpubbed record created successfully:', data);
} else {
const error = await response.json();
console.error('Failed to create sessionNpubbed record:', error);
}
} catch (error) {
console.error('An error occurred:', error);
}
}
)
}, 2000);
}
</script>
</html>