import OrderedObject from "./OrderedObject.js" export default class Members extends OrderedObject { add(newMember) { console.log("adding ", newMember) let id = `MEMBER-${newMember.email}` if(this.validate(id, newMember)) { try { super.add(id, newMember) } catch(e) { console.error(e) throw e } } else { throw new global.ServerError(400, "Invalid Member Data!"); } } validate(id, node) { let idTraits = { firstWord: "MEMBER" } let fields = [ "firstName", "lastName", "email", "password" ] let checkID = () => { let split = id.split("-") return ( split[0] === idTraits.firstWord && split[1].includes("@") && split[1].includes(".") ) } let idres = checkID() if(!idres) { console.log("id failed: ", id) return false } let checkFields = () => { for(let i = 0; i < fields.length; i++) { if(!node[fields[i]]) { throw new Error(`Member ${node.email} is missing trait ${fields[i]}`) return false } else { return true } } } let fieldres = checkFields() if(!fieldres) { console.log("fields failed") return false } return true } }