Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

I60 Connected Android to server #74

Merged
merged 31 commits into from
Feb 4, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
02e0ed7
Removed firebase folder
Feb 1, 2019
1cb992e
Removed firebase functions deployment from travis.yaml
oktay-sen Feb 2, 2019
a8df289
Random IntelliJ changes
oktay-sen Feb 2, 2019
aa62dcb
Made initial hello world server
oktay-sen Feb 2, 2019
342300e
Added more packages
oktay-sen Feb 2, 2019
b843945
Minor change to README
oktay-sen Feb 2, 2019
2bf2d17
Minor change to README
oktay-sen Feb 2, 2019
ffc9114
Basic implementation of a CRUD server with mongodb
oktay-sen Feb 2, 2019
9e34bf8
Added Bonjour Publisher and Client
freddiejbawden Feb 2, 2019
95129ba
added bonjour
Feb 2, 2019
80e9d1a
Robot comms teset
Feb 3, 2019
dd4cc58
WIP makefile
oktay-sen Feb 3, 2019
ac21271
Merge branch 'beta' into i58
oktay-sen Feb 3, 2019
0f8768e
Re-added package-lock.json
oktay-sen Feb 3, 2019
420cf07
Robot turns on when button pressed
freddiejbawden Feb 4, 2019
2ef45f9
Merge branch 'i58' of https://github.com/Assis10t/assis10t into i58
freddiejbawden Feb 4, 2019
98a4e95
Android can now find server via zeroconf
oktay-sen Feb 4, 2019
f16ada6
Added test mode for when disconnected from robot
Feb 4, 2019
f6e88f2
Refactored ServerConnection
oktay-sen Feb 4, 2019
cc9648f
Merge remote-tracking branch 'origin' into i60
oktay-sen Feb 4, 2019
b8d7aa7
Merge remote branch into i58
Feb 4, 2019
d4bb2bd
Updated server name in android
Feb 4, 2019
12a7f19
Added turn off on
Feb 4, 2019
60f7b5b
Fixed minor things
oktay-sen Feb 4, 2019
43e5746
App can display list of items
oktay-sen Feb 4, 2019
cee62ba
Merge beta into i60
oktay-sen Feb 4, 2019
908332f
Re-added addItem and getItems
oktay-sen Feb 4, 2019
7b2972f
Fixed app not connecting to server
oktay-sen Feb 4, 2019
66c16e1
Added ability to refresh list of items
oktay-sen Feb 4, 2019
ddb6bb6
Implemented adding order on android
oktay-sen Feb 4, 2019
f3a4327
Adding order now removes the items in it from the database
oktay-sen Feb 4, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Basic implementation of a CRUD server with mongodb
  • Loading branch information
oktay-sen committed Feb 2, 2019
commit ffc9114b11dbd3b596f3900aebaf5da045d066a3
30 changes: 30 additions & 0 deletions server/db.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
const MongoClient = require('mongodb').MongoClient

const mongo_url = process.env.MONGO || 'mongodb:https://localhost:27017/db'

let client = null
let db = null

module.exports = () => {
if (!client || !db) {
throw new Error('Database connection has not been initialized.')
}
return db
}

module.exports.init = () => {
client = new MongoClient(mongo_url, {
useNewUrlParser: true
})
return new Promise((res, rej) => {
client.connect(function(err) {
if (err) {
rej(err)
return
}
db = client.db('bob')
res(db)
//console.log(`Initialized database connection on ${mongo_url}.`)
})
})
}
59 changes: 56 additions & 3 deletions server/index.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,64 @@
const bodyParser = require('body-parser')
const express = require('express')
const db = require('./db')
const model = require('./model')

const PORT = process.argv[2] || 9000
const PORT = process.env.PORT || 9000

db.init()
.then(db => console.log('Initialized database connection.'))
.catch(err => console.error('Error initializing database connection.', err))

const app = express()

app.get('/', (req, res) => {
res.send('Hello World!')
app.use(bodyParser.json())

//Logs all requests.
app.use((req, res, next) => {
console.log(`${req.ip}: ${req.method} ${req.originalUrl}`)
next()
})

app.get('/order', (req, res, next) =>
model
.getAllOrders()
.then(orders => {
if (orders) res.json({ success: true, orders })
else res.status(404).json({ success: false, orders: null })
})
.catch(next)
)

app.get('/order/:orderId', (req, res, next) => {
const orderId = req.params.orderId
model
.getOrderById(orderId)
.then(order => {
if (order) res.json({ success: true, order })
else res.status(404).json({ success: true, order: null })
})
.catch(next)
})

app.post('/order', (req, res, next) => {
//verification steps?
model
.addOrder(req.body)
.then(order => res.json({ success: true, order }))
.catch(next)
})

//Logs all responses.
app.use((req, res, next) => {
console.log(`${req.ip}: ${req.method} ${req.originalUrl} response: ${res.body}`)
next()
})

//Logs errors and responds properly.
app.use((err, req, res, next) => {
console.error(err.stack)
res.status(500).json({ success: false, error: err.stack })
next()
})

app.listen(PORT, () => console.log(`Listening on port ${PORT}.`))
36 changes: 36 additions & 0 deletions server/model.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
const db = require('./db')
const assert = require('assert')
const ObjectID = require('mongodb').ObjectID
const factory = db => ({
getAllOrders: () =>
new Promise((res, rej) => {
db()
.collection('orders')
.find({})
.toArray((err, docs) => {
err ? rej(err) : res(docs)
})
}),
getOrderById: orderId =>
new Promise((res, rej) => {
db()
.collection('orders')
.find({ _id: new ObjectID(orderId) })
.toArray((err, docs) => {
err ? rej(err) : res(docs[0])
})
}),

addOrder: orderData =>
new Promise((res, rej) => {
db()
.collection('orders')
.insertOne(orderData, (err, order) => {
err ? rej(err) : res(orderData)
})
})
})

module.exports = factory(db)

module.exports.factory = factory
4 changes: 2 additions & 2 deletions server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
"description": "",
"main": "index.js",
"scripts": {
"start": "PORT=9000 node index.js",
"dev": "PORT=9000 nodemon index.js",
"start": "node index.js",
"dev": "nodemon index.js",
"test": "jest"
},
"repository": {
Expand Down