MemberService/index.js
2025-02-21 12:19:36 -05:00

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'})
})
})