mirror of
https://github.com/github/codeql.git
synced 2025-12-17 01:03:14 +01:00
add test repo
This commit is contained in:
21
config/atm/ml-powered-queries-repo/add-note.js
Normal file
21
config/atm/ml-powered-queries-repo/add-note.js
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
const mongoose = require('mongoose');
|
||||||
|
|
||||||
|
Logger = require('./logger').Logger;
|
||||||
|
Note = require('./models/note').Note;
|
||||||
|
|
||||||
|
(async () => {
|
||||||
|
if (process.argv.length != 5) {
|
||||||
|
Logger.log("Creates a private note. Usage: node add-note.js <token> <title> <body>")
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Open the default mongoose connection
|
||||||
|
await mongoose.connect('mongodb://localhost:27017/notes', { useFindAndModify: false });
|
||||||
|
|
||||||
|
const [userToken, title, body] = process.argv.slice(2);
|
||||||
|
await Note.create({ title, body, userToken });
|
||||||
|
|
||||||
|
Logger.log(`Created private note with title ${title} and body ${body} belonging to user with token ${userToken}.`);
|
||||||
|
|
||||||
|
await mongoose.connection.close();
|
||||||
|
})();
|
||||||
68
config/atm/ml-powered-queries-repo/app.js
Normal file
68
config/atm/ml-powered-queries-repo/app.js
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
const bodyParser = require('body-parser');
|
||||||
|
const express = require('express');
|
||||||
|
const mongoose = require('mongoose');
|
||||||
|
|
||||||
|
const notesApi = require('./notes-api');
|
||||||
|
const usersApi = require('./users-api');
|
||||||
|
|
||||||
|
const addSampleData = module.exports.addSampleData = async () => {
|
||||||
|
const [userA, userB] = await User.create([
|
||||||
|
{
|
||||||
|
name: "A",
|
||||||
|
token: "tokenA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "B",
|
||||||
|
token: "tokenB"
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
await Note.create([
|
||||||
|
{
|
||||||
|
title: "Public note belonging to A",
|
||||||
|
body: "This is a public note belonging to A",
|
||||||
|
isPublic: true,
|
||||||
|
ownerToken: userA.token
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Public note belonging to B",
|
||||||
|
body: "This is a public note belonging to B",
|
||||||
|
isPublic: true,
|
||||||
|
ownerToken: userB.token
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Private note belonging to A",
|
||||||
|
body: "This is a private note belonging to A",
|
||||||
|
ownerToken: userA.token
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Private note belonging to B",
|
||||||
|
body: "This is a private note belonging to B",
|
||||||
|
ownerToken: userB.token
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports.startApp = async () => {
|
||||||
|
// Open the default mongoose connection
|
||||||
|
await mongoose.connect('mongodb://mongo:27017/notes', { useFindAndModify: false });
|
||||||
|
// Drop contents of DB
|
||||||
|
mongoose.connection.dropDatabase();
|
||||||
|
// Add some sample data
|
||||||
|
await addSampleData();
|
||||||
|
|
||||||
|
const app = express();
|
||||||
|
|
||||||
|
app.use(bodyParser.json());
|
||||||
|
app.use(bodyParser.urlencoded());
|
||||||
|
|
||||||
|
app.get('/', async (_req, res) => {
|
||||||
|
res.send('Hello World');
|
||||||
|
});
|
||||||
|
|
||||||
|
app.use('/api/notes', notesApi.router);
|
||||||
|
app.use('/api/users', usersApi.router);
|
||||||
|
|
||||||
|
app.listen(3000);
|
||||||
|
Logger.log('Express started on port 3000');
|
||||||
|
};
|
||||||
7
config/atm/ml-powered-queries-repo/index.js
Normal file
7
config/atm/ml-powered-queries-repo/index.js
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
const startApp = require('./app').startApp;
|
||||||
|
|
||||||
|
Logger = require('./logger').Logger;
|
||||||
|
Note = require('./models/note').Note;
|
||||||
|
User = require('./models/user').User;
|
||||||
|
|
||||||
|
startApp();
|
||||||
5
config/atm/ml-powered-queries-repo/logger.js
Normal file
5
config/atm/ml-powered-queries-repo/logger.js
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
module.exports.Logger = class {
|
||||||
|
log(message, ...objs) {
|
||||||
|
console.log(message, objs);
|
||||||
|
}
|
||||||
|
};
|
||||||
8
config/atm/ml-powered-queries-repo/models/note.js
Normal file
8
config/atm/ml-powered-queries-repo/models/note.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
const mongoose = require('mongoose');
|
||||||
|
|
||||||
|
module.exports.Note = mongoose.model('Note', new mongoose.Schema({
|
||||||
|
title: String,
|
||||||
|
body: String,
|
||||||
|
ownerToken: String,
|
||||||
|
isPublic: Boolean
|
||||||
|
}));
|
||||||
6
config/atm/ml-powered-queries-repo/models/user.js
Normal file
6
config/atm/ml-powered-queries-repo/models/user.js
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
const mongoose = require('mongoose');
|
||||||
|
|
||||||
|
module.exports.User = mongoose.model('User', new mongoose.Schema({
|
||||||
|
name: String,
|
||||||
|
token: String
|
||||||
|
}));
|
||||||
44
config/atm/ml-powered-queries-repo/notes-api.js
Normal file
44
config/atm/ml-powered-queries-repo/notes-api.js
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
const express = require('express')
|
||||||
|
|
||||||
|
const router = module.exports.router = express.Router();
|
||||||
|
|
||||||
|
function serializeNote(note) {
|
||||||
|
return {
|
||||||
|
title: note.title,
|
||||||
|
body: note.body
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
router.post('/find', async (req, res) => {
|
||||||
|
const notes = await Note.find({
|
||||||
|
ownerToken: req.body.token
|
||||||
|
}).exec();
|
||||||
|
res.json({
|
||||||
|
notes: notes.map(serializeNote)
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
router.get('/findPublic', async (_req, res) => {
|
||||||
|
const notes = await Note.find({
|
||||||
|
isPublic: true
|
||||||
|
}).exec();
|
||||||
|
res.json({
|
||||||
|
notes: notes.map(serializeNote)
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
router.post('/findVisible', async (req, res) => {
|
||||||
|
const notes = await Note.find({
|
||||||
|
$or: [
|
||||||
|
{
|
||||||
|
isPublic: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ownerToken: req.body.token
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}).exec();
|
||||||
|
res.json({
|
||||||
|
notes: notes.map(serializeNote)
|
||||||
|
});
|
||||||
|
});
|
||||||
37
config/atm/ml-powered-queries-repo/read-notes.js
Normal file
37
config/atm/ml-powered-queries-repo/read-notes.js
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
const mongoose = require('mongoose');
|
||||||
|
|
||||||
|
Logger = require('./logger').Logger;
|
||||||
|
Note = require('./models/note').Note;
|
||||||
|
User = require('./models/user').User;
|
||||||
|
|
||||||
|
(async () => {
|
||||||
|
if (process.argv.length != 3) {
|
||||||
|
Logger.log("Outputs all notes visible to a user. Usage: node read-notes.js <token>")
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Open the default mongoose connection
|
||||||
|
await mongoose.connect('mongodb://localhost:27017/notes', { useFindAndModify: false });
|
||||||
|
|
||||||
|
const ownerToken = process.argv[2];
|
||||||
|
|
||||||
|
const user = await User.findOne({
|
||||||
|
token: ownerToken
|
||||||
|
}).exec();
|
||||||
|
|
||||||
|
const notes = await Note.find({
|
||||||
|
$or: [
|
||||||
|
{ isPublic: true },
|
||||||
|
{ ownerToken }
|
||||||
|
]
|
||||||
|
}).exec();
|
||||||
|
|
||||||
|
notes.map(note => {
|
||||||
|
Logger.log("Title:" + note.title);
|
||||||
|
Logger.log("By:" + user.name);
|
||||||
|
Logger.log("Body:" + note.body);
|
||||||
|
Logger.log();
|
||||||
|
});
|
||||||
|
|
||||||
|
await mongoose.connection.close();
|
||||||
|
})();
|
||||||
25
config/atm/ml-powered-queries-repo/users-api.js
Normal file
25
config/atm/ml-powered-queries-repo/users-api.js
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
const express = require('express')
|
||||||
|
|
||||||
|
Logger = require('./logger').Logger;
|
||||||
|
const router = module.exports.router = express.Router();
|
||||||
|
|
||||||
|
router.post('/updateName', async (req, res) => {
|
||||||
|
Logger.log("/updateName called with new name", req.body.name);
|
||||||
|
await User.findOneAndUpdate({
|
||||||
|
token: req.body.token
|
||||||
|
}, {
|
||||||
|
name: req.body.name
|
||||||
|
}).exec();
|
||||||
|
res.json({
|
||||||
|
name: req.body.name
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
router.post('/getName', async (req, res) => {
|
||||||
|
const user = await User.findOne({
|
||||||
|
token: req.body.token
|
||||||
|
}).exec();
|
||||||
|
res.json({
|
||||||
|
name: user.name
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user