03fe40b4a9
- add Users/Create User feature - add Pages Functions - add d1 database
47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
/**
|
|
* @typedef {import('@cloudflare/workers-types').D1Database} D1Database
|
|
*/
|
|
|
|
export async function onRequestGet(context) {
|
|
const DB = context.env.DB;
|
|
|
|
// return all users
|
|
const stmt = await DB.prepare("SELECT * FROM users");
|
|
const users = (await stmt.run()).results;
|
|
|
|
return new Response(JSON.stringify(users), {
|
|
headers: { "Content-Type": "application/json" },
|
|
});
|
|
}
|
|
|
|
export async function onRequestPost(context) {
|
|
/**
|
|
* @type {D1Database}
|
|
*/
|
|
const DB = context.env.DB;
|
|
const { name } = await context.request.json();
|
|
|
|
// create a new user
|
|
const stmt = DB.prepare("INSERT INTO users (name) VALUES (?)").bind(name);
|
|
|
|
try {
|
|
const result = await stmt.run();
|
|
|
|
if (!result.success) {
|
|
throw new Error("Failed to create user");
|
|
}
|
|
|
|
const userId = result.meta.last_row_id;
|
|
const stmt2 = await DB.prepare("SELECT * FROM users WHERE id = ?").bind(userId);
|
|
const userResult = await stmt2.run();
|
|
const user = userResult.results[0];
|
|
|
|
return new Response(JSON.stringify(user), {
|
|
headers: { "Content-Type": "application/json" },
|
|
status: 201,
|
|
});
|
|
} catch (error) {
|
|
console.error("Error creating user:", error);
|
|
return new Response("Error creating user", { status: 500 });
|
|
}
|
|
} |