198 lines
5.0 KiB
JavaScript
198 lines
5.0 KiB
JavaScript
const GhostAdminAPI = require('@tryghost/admin-api');
|
|
const path = require('path');
|
|
const express = require('express');
|
|
const { connectToDB, getDB} = require('./db')
|
|
const { ObjectId }=require('mongodb')
|
|
const cors = require('cors');
|
|
let db
|
|
|
|
|
|
// Your GHOST API config
|
|
/*
|
|
const api = new GhostAdminAPI({
|
|
url: 'https://members.ttlmakerspace.com',
|
|
version: "v5.0",
|
|
key: process.env.GHOST_KEY
|
|
});
|
|
api.members.browse().then((members) => {
|
|
members.forEach((member) => {
|
|
console.log(JSON.stringify(member, null, 2))
|
|
});
|
|
}).catch((err) => {
|
|
console.error(err);
|
|
});
|
|
*/
|
|
|
|
//////API//////////
|
|
|
|
///Timmy Tester uuid: b071b92a-f812-4f0a-b9fc-de6bd8e76562
|
|
const app = express()
|
|
const allowedOrigins = ['https://members.ttlmakerspace.com', 'https://portal.ttlmakerspace.com'];
|
|
|
|
app.use(cors({
|
|
origin: 'https://portal.ttlmakerspace.com', // Allow only this origin
|
|
methods: ['GET', 'POST', 'PATCH', 'DELETE'], // Allow only GET and POST requests
|
|
allowedHeaders: ['Content-Type', 'Authorization'] // Allow these headers
|
|
}));
|
|
|
|
|
|
app.use(express.json() )
|
|
connectToDB((err)=>{
|
|
if(!err){
|
|
app.listen(process.env.SERVICE_PORT, ()=>{
|
|
console.log("app listening on "+process.env.SERVICE_PORT)
|
|
})
|
|
db = getDB()
|
|
}
|
|
|
|
})
|
|
//all members
|
|
app.get('/members',(req,res)=>{
|
|
let members=[]
|
|
db.collection('members').find()
|
|
.forEach(member=>{
|
|
members.push(member)
|
|
})
|
|
.then(()=>{
|
|
res.status(200).json(members)
|
|
})
|
|
.catch((err)=>{
|
|
res.status(500).json({error:"Could not get members"})
|
|
})
|
|
|
|
})
|
|
//one member
|
|
app.get('/member/:uuid',(req,res)=>{
|
|
db.collection('members').findOne({uuid:req.params.uuid})
|
|
.then((member)=>{
|
|
res.status(200).json(member)
|
|
})
|
|
.catch((err)=>{
|
|
res.status(500).json({error:"Could not get member"})
|
|
})
|
|
|
|
})
|
|
//add one member
|
|
app.post('/member',(req,res)=>{
|
|
const recipe = req.body
|
|
db.collection('members')
|
|
.insertOne(recipe)
|
|
.then(result =>{
|
|
res.status(201).json(result)
|
|
})
|
|
.catch(err => {
|
|
res.status(500).json({err: 'Could not create member'})
|
|
})
|
|
})
|
|
//update one member
|
|
app.patch('/member/:uuid', (req, res)=>{
|
|
const updates = req.body
|
|
delete updates._id
|
|
const myId = req.params.uuid
|
|
db.collection('members')
|
|
.updateOne({uuid: myId}, {$set: updates})
|
|
.then(result =>{
|
|
console.log("success result")
|
|
res.status(200).json(result)
|
|
})
|
|
.catch(err =>{
|
|
console.log(err);
|
|
res.status(500).json({error: 'Could not update'})
|
|
})
|
|
})
|
|
//get a locker
|
|
app.patch('/member/locker/:uuid', (req, res)=>{
|
|
const locker = req.body
|
|
const myId = req.params.uuid
|
|
locker.date=new Date(locker.date)
|
|
db.collection('members')
|
|
.updateOne({uuid: myId}, {$set: locker})
|
|
.then(result =>{
|
|
res.status(200).json(result)
|
|
})
|
|
.catch(err =>{
|
|
res.status(500).json({error: 'Could not update'})
|
|
})
|
|
})
|
|
app.patch('/member/checkin/:id', (req, res)=>{
|
|
//check in a member or check them out
|
|
//keep a record of checkins??
|
|
})
|
|
//delete a locker
|
|
app.delete('/member/locker/:uuid', (req, res)=>{
|
|
const myId = req.params.uuid
|
|
db.collection('members')
|
|
.updateOne({uuid: myId}, { $unset: { ["locker"]: "" } })
|
|
.then(result =>{
|
|
console.log("success result")
|
|
res.status(200).json(result)
|
|
})
|
|
.catch(err =>{
|
|
console.log(err);
|
|
res.status(500).json({error: 'Could not update'})
|
|
})
|
|
})
|
|
///add a certificate
|
|
///send the whole certs object with the new cert added
|
|
/*
|
|
Each cert:
|
|
{
|
|
"name":"woodworking"
|
|
"dateIssued": "datestring"
|
|
}
|
|
*/
|
|
app.post('/member/certs/:uuid', (req,res)=>{
|
|
let certs = req.body;
|
|
//clean dates in certs
|
|
certs.forEach( (cert)=>{
|
|
cert.dateIssued = new Date(cert.dateIssued)
|
|
})
|
|
const myId = req.params.uuid
|
|
db.collection('members')
|
|
.updateOne({uuid: myId}, {$set: {certifications:certs} })
|
|
.then(result =>{
|
|
console.log("success result")
|
|
res.status(200).json(result)
|
|
})
|
|
.catch(err =>{
|
|
console.log(err);
|
|
res.status(500).json({error: 'Could not update'})
|
|
})
|
|
|
|
})
|
|
app.post('/member/jwb/:uuid', (req,res)=>{
|
|
let kids = req.body;
|
|
kids.forEach( (kid)=>{
|
|
kid.startDate = new Date(kid.startDate)
|
|
})
|
|
const myId = req.params.uuid
|
|
|
|
db.collection('members')
|
|
.updateOne({uuid: myId}, {$set: {jwb:kids} })
|
|
.then(result =>{
|
|
res.status(200).json(result)
|
|
})
|
|
.catch(err =>{
|
|
console.log(err);
|
|
res.status(500).json({error: 'Could not update'})
|
|
})
|
|
|
|
})
|
|
app.post('/member/storage/:uuid', (req,res)=>{
|
|
const storage = req.body;
|
|
const myId = req.params.uuid
|
|
console.log(storage)
|
|
storage.startDate = new Date(storage.startDate);
|
|
|
|
|
|
db.collection('members')
|
|
.updateOne({uuid: myId}, {$set: {storage:storage} })
|
|
.then(result =>{
|
|
res.status(200).json(result)
|
|
})
|
|
.catch(err =>{
|
|
console.log(err);
|
|
res.status(500).json({error: 'Could not update'})
|
|
})
|
|
|
|
}) |