Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 8 additions & 0 deletions captains_log/app/models/log.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
const mongoose = require('mongoose');
const logSchema = new mongoose.Schema({
title: String,
entry: String,
shipIsBroken: { type: Boolean , required: true},
});
const Log = mongoose.model('Log', logSchema);
module.exports = Log;
131 changes: 131 additions & 0 deletions captains_log/app/routes/log_routes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
// Require necessary NPM Packages
const express = require('express');
// Pull in Mongoose model for Log
const Log = require('../models/log');
// Instantiate a router (mini app that only handle routes)
const router = express.Router();
/**
* Action: INDEX
* Method: GET
* URI: /logs
* Description: Get all Logs
*/
router.get('/logs', (req, res) => {
Log.find({}, (error, logs) => {
// Return all logs
if (!error) {
res.status(200).json({ logs: logs });
} else {
// if there area any errors
res.status(500).json({ error: error })
}
});
});
/**
* Action: CREATE
* Method: POST
* URI: /logs
* Description: Create new Log
*/Log.create(req.body)
Log.create('/logs', (req, res) => {
if (req.body.shipIsBroken === 'on') {
req.body.shipIsBroken = true;
} else {
req.body.shipIsBroken= false;
}
Log.create(req.body, (error, log) => {
if (!error) {
res.status(201).json({ log })
} else {
res.status(500).json({ error: error })
}
})
});
/**
* Action: SHOW
* Method: GET
* URI: /logs/:id
* Description: Get one log by ID
*/
log.get('/logs/:id', (req, res) => {
Log.findById(req.params.id, (error, log) => {
if (!error) {
// return log if exist
if (log) {
res.status(200).json({ log: log });
} else {
// if there is no log with a matching id
res.status(404).json({
error: {
name: 'DocumentNotFoundError',
message: 'The provided id doesn\'t match any document'
}
})
}
} else {
res.status(500).json({ error: error });
}
})
});
/**
* Action: UPDATE
* Method: PATCH
* URI: /logs/:id
* Description: Update log by id
*/
router.patch('/logs/:id', (req, res) => {
Log.findByIdAndUpdate(req.params.id, (error, log) => {
if (!error) {
if (log) {
log.update(req.body, (error, log) => {
if (!error) {
res.status(204).end();
} else {
res.status(500).json({ error: error })
}
})
} else {
res.status(404).json({
error: {
name: 'DocumentNotFoundError',
message: 'The provided id doesn\'t match any document'
}
})
}
} else {
res.status(500).json({ error: error })
}
})
});
/**
* Action: DESTROY
* Method: DELETE
* URI: /logs
* Description: Delete a logs
*/
router.delete('/logs', (req, res) => {
Log.findByIdAndRemove(req.params.id, (error, log) => {
if (!error) {
if (log) {
log.remove((error, log) => {
if (!error) {
res.status(204).end();
} else {
res.status(500).json({ error: error })
}
})
} else {
res.status(404).json({
error: {
name: 'DocumentNotFoundError',
message: 'The provided id doesn\'t match any document'
}
})
}
} else {
res.status(500).json({ error: error })
}
})
})

module.exports = router;
17 changes: 17 additions & 0 deletions captains_log/config/db.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
'use strict';
const mongooseBaseName = "express-mongoose-crud-app";
// Create the MongoDB URI for development and test
const database = {
development: `mongodb://localhost:27017/
${mongooseBaseName}-development`,
test : `mongodb://localhost/${mongooseBaseName}-test`
}
// Identify if current environment is test or development
const localDB = process.env.TESTENV ? database.test : database.development; // like if else if TESTENV true so database.test if it false database.development
// Check if Environment variable MONGODB_URI is available
const currentDB = process.env.MONGODB_URI || localDB;
module.exports = currentDB;




1 change: 1 addition & 0 deletions captains_log/node_modules/.bin/mime

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading