import { Client, Databases, Users, ID, Permission, Role } from 'node-appwrite';
export default async ({ req, res, log, error }) => {
const client = new Client()
.setEndpoint('https://cloud.appwrite.io/v1')
.setProject(process.env.APPWRITE_FUNCTION_PROJECT_ID)
.setKey(process.env.APPWRITE_API_KEY);
const databases = new Databases(client);
const users = new Users(client)
const userID = req.headers['x-appwrite-user-id']
const requestData = JSON.parse(req.body)
if(requestData.body == "") return res.json({ message: "No body text provided." }, 400)
else if(requestData.colour == "") return res.json({ message: "No colour provided." }, 400)
const colours = ['red', 'orange', 'yellow', 'green', 'blue', 'purple']
const foundInColours = colours.find(c => requestData.colour.includes(c))
if(!foundInColours) return res.json({ message: "Colour provided was not found in red, orange, yellow, green, blue or purple." }, 400)
const user = users.get(userID)
if(!user) return res.json({ message: "Invalid User Id Provided" }, 400)
let permissions = [
Permission.write(Role.user(userID)),
Permission.read(Role.user(userID))
]
let newPayload = {
colour: requestData.colour,
body: requestData.body,
favourite: requestData.favourite
}
try {
await databases.createDocument(
process.env.MEMO_DATABASE_ID,
process.env.MEMO_COLLECTION_ID,
ID.unique(),
newPayload,
permissions
)
} catch (e) {
console.error("Failed to create document: " + e.message)
return res.json({ message: "Failed to create document." }, 500)
}
return res.json({ message: "Memo created!" }, 201)
}