added functions
This commit is contained in:
parent
262502bff8
commit
2bae6e9269
6 changed files with 191 additions and 0 deletions
33
functions/todos-delete-batch.js
Normal file
33
functions/todos-delete-batch.js
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
/* code from functions/todos-delete-batch.js */
|
||||
/* Import faunaDB sdk */
|
||||
const faunadb = require('faunadb')
|
||||
|
||||
const q = faunadb.query
|
||||
const client = new faunadb.Client({
|
||||
secret: process.env.FAUNADB_SERVER_SECRET
|
||||
})
|
||||
|
||||
exports.handler = async (event, context) => {
|
||||
const data = JSON.parse(event.body)
|
||||
console.log('data', data)
|
||||
console.log('Function `todo-delete-batch` invoked', data.ids)
|
||||
// construct batch query from IDs
|
||||
const deleteAllCompletedTodoQuery = data.ids.map((id) => {
|
||||
return q.Delete(q.Ref(`classes/todos/${id}`))
|
||||
})
|
||||
// Hit fauna with the query to delete the completed items
|
||||
return client.query(deleteAllCompletedTodoQuery)
|
||||
.then((response) => {
|
||||
console.log('success', response)
|
||||
return {
|
||||
statusCode: 200,
|
||||
body: JSON.stringify(response)
|
||||
}
|
||||
}).catch((error) => {
|
||||
console.log('error', error)
|
||||
return {
|
||||
statusCode: 400,
|
||||
body: JSON.stringify(error)
|
||||
}
|
||||
})
|
||||
}
|
||||
28
functions/todos-delete.js
Normal file
28
functions/todos-delete.js
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
/* code from functions/todos-update.js */
|
||||
const faunadb = require('faunadb')
|
||||
const getId = require('./utils/getId')
|
||||
|
||||
const q = faunadb.query
|
||||
const client = new faunadb.Client({
|
||||
secret: process.env.FAUNADB_SERVER_SECRET
|
||||
})
|
||||
|
||||
exports.handler = (event, context) => {
|
||||
const data = JSON.parse(event.body)
|
||||
const id = getId(event.path)
|
||||
console.log(`Function 'todo-update' invoked. update id: ${id}`)
|
||||
return client.query(q.Update(q.Ref(`classes/todos/${id}`), { data }))
|
||||
.then((response) => {
|
||||
console.log('success', response)
|
||||
return {
|
||||
statusCode: 200,
|
||||
body: JSON.stringify(response)
|
||||
}
|
||||
}).catch((error) => {
|
||||
console.log('error', error)
|
||||
return {
|
||||
statusCode: 400,
|
||||
body: JSON.stringify(error)
|
||||
}
|
||||
})
|
||||
}
|
||||
35
functions/todos-read-all.js
Normal file
35
functions/todos-read-all.js
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
/* code from functions/todos-read-all.js */
|
||||
/* Import faunaDB sdk */
|
||||
const faunadb = require('faunadb')
|
||||
|
||||
const q = faunadb.query
|
||||
const client = new faunadb.Client({
|
||||
secret: process.env.FAUNADB_SERVER_SECRET
|
||||
})
|
||||
|
||||
exports.handler = (event, context) => {
|
||||
console.log('Function `todo-read-all` invoked')
|
||||
return client.query(q.Paginate(q.Match(q.Ref('indexes/all_todos'))))
|
||||
.then((response) => {
|
||||
const todoRefs = response.data
|
||||
console.log('Todo refs', todoRefs)
|
||||
console.log(`${todoRefs.length} todos found`)
|
||||
// create new query out of todo refs. http://bit.ly/2LG3MLg
|
||||
const getAllTodoDataQuery = todoRefs.map((ref) => {
|
||||
return q.Get(ref)
|
||||
})
|
||||
// then query the refs
|
||||
return client.query(getAllTodoDataQuery).then((ret) => {
|
||||
return {
|
||||
statusCode: 200,
|
||||
body: JSON.stringify(ret)
|
||||
}
|
||||
})
|
||||
}).catch((error) => {
|
||||
console.log('error', error)
|
||||
return {
|
||||
statusCode: 400,
|
||||
body: JSON.stringify(error)
|
||||
}
|
||||
})
|
||||
}
|
||||
28
functions/todos-read.js
Normal file
28
functions/todos-read.js
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
/* code from functions/todos-read.js */
|
||||
/* Import faunaDB sdk */
|
||||
const faunadb = require('faunadb')
|
||||
const getId = require('./utils/getId')
|
||||
|
||||
const q = faunadb.query
|
||||
const client = new faunadb.Client({
|
||||
secret: process.env.FAUNADB_SERVER_SECRET
|
||||
})
|
||||
|
||||
exports.handler = (event, context) => {
|
||||
const id = getId(event.path)
|
||||
console.log(`Function 'todo-read' invoked. Read id: ${id}`)
|
||||
return client.query(q.Get(q.Ref(`classes/todos/${id}`)))
|
||||
.then((response) => {
|
||||
console.log('success', response)
|
||||
return {
|
||||
statusCode: 200,
|
||||
body: JSON.stringify(response)
|
||||
}
|
||||
}).catch((error) => {
|
||||
console.log('error', error)
|
||||
return {
|
||||
statusCode: 400,
|
||||
body: JSON.stringify(error)
|
||||
}
|
||||
})
|
||||
}
|
||||
28
functions/todos-update.js
Normal file
28
functions/todos-update.js
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
/* code from functions/todos-update.js */
|
||||
const faunadb = require('faunadb')
|
||||
const getId = require('./utils/getId')
|
||||
|
||||
const q = faunadb.query
|
||||
const client = new faunadb.Client({
|
||||
secret: process.env.FAUNADB_SERVER_SECRET
|
||||
})
|
||||
|
||||
exports.handler = (event, context) => {
|
||||
const data = JSON.parse(event.body)
|
||||
const id = getId(event.path)
|
||||
console.log(`Function 'todo-update' invoked. update id: ${id}`)
|
||||
return client.query(q.Update(q.Ref(`classes/todos/${id}`), { data }))
|
||||
.then((response) => {
|
||||
console.log('success', response)
|
||||
return {
|
||||
statusCode: 200,
|
||||
body: JSON.stringify(response)
|
||||
}
|
||||
}).catch((error) => {
|
||||
console.log('error', error)
|
||||
return {
|
||||
statusCode: 400,
|
||||
body: JSON.stringify(error)
|
||||
}
|
||||
})
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue