fix(gro-48): address QA review feedback — staffRow?.role and portal TS guards
- appointments.ts: use staffRow?.role (consistent with clients.ts/pets.ts) to handle undefined staff context safely - portal.ts: add null guards on .returning() results for confirm and cancel endpoints (TS18048: 'updated' is possibly undefined) - All 188 tests passing; TypeScript typecheck clean Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
@@ -73,7 +73,7 @@ appointmentsRouter.get("/", async (c) => {
|
|||||||
const to = c.req.query("to");
|
const to = c.req.query("to");
|
||||||
const staffId = c.req.query("staffId");
|
const staffId = c.req.query("staffId");
|
||||||
const staffRow = c.get("staff");
|
const staffRow = c.get("staff");
|
||||||
const isGroomer = staffRow.role === "groomer";
|
const isGroomer = staffRow?.role === "groomer";
|
||||||
|
|
||||||
const conditions = [];
|
const conditions = [];
|
||||||
if (from) conditions.push(gte(appointments.startTime, new Date(from)));
|
if (from) conditions.push(gte(appointments.startTime, new Date(from)));
|
||||||
@@ -108,7 +108,7 @@ appointmentsRouter.get("/", async (c) => {
|
|||||||
appointmentsRouter.get("/:id", async (c) => {
|
appointmentsRouter.get("/:id", async (c) => {
|
||||||
const db = getDb();
|
const db = getDb();
|
||||||
const staffRow = c.get("staff");
|
const staffRow = c.get("staff");
|
||||||
const isGroomer = staffRow.role === "groomer";
|
const isGroomer = staffRow?.role === "groomer";
|
||||||
const [row] = await db
|
const [row] = await db
|
||||||
.select()
|
.select()
|
||||||
.from(appointments)
|
.from(appointments)
|
||||||
|
|||||||
@@ -134,6 +134,10 @@ portalRouter.post("/appointments/:id/confirm", async (c) => {
|
|||||||
.where(eq(appointments.id, id))
|
.where(eq(appointments.id, id))
|
||||||
.returning();
|
.returning();
|
||||||
|
|
||||||
|
if (!updated) {
|
||||||
|
return c.json({ error: "Not found" }, 404);
|
||||||
|
}
|
||||||
|
|
||||||
return c.json({
|
return c.json({
|
||||||
id: updated.id,
|
id: updated.id,
|
||||||
confirmationStatus: updated.confirmationStatus,
|
confirmationStatus: updated.confirmationStatus,
|
||||||
@@ -194,6 +198,10 @@ portalRouter.post("/appointments/:id/cancel", async (c) => {
|
|||||||
.where(eq(appointments.id, id))
|
.where(eq(appointments.id, id))
|
||||||
.returning();
|
.returning();
|
||||||
|
|
||||||
|
if (!updated) {
|
||||||
|
return c.json({ error: "Not found" }, 404);
|
||||||
|
}
|
||||||
|
|
||||||
return c.json({
|
return c.json({
|
||||||
id: updated.id,
|
id: updated.id,
|
||||||
status: updated.status,
|
status: updated.status,
|
||||||
|
|||||||
Reference in New Issue
Block a user