47 lines
1.8 KiB
TypeScript
Executable File
47 lines
1.8 KiB
TypeScript
Executable File
import { json } from '@sveltejs/kit';
|
|
import pool from '$lib/server/database';
|
|
import type { RequestHandler } from './$types';
|
|
|
|
// GET handler (existing)
|
|
export const GET: RequestHandler = async ({ params }) => {
|
|
const { refIndex } = params;
|
|
try {
|
|
const result = await pool.query<{ Index: number; TumerPosition: number[] }>(
|
|
'SELECT "Index", "TumerPosition" FROM public."TumerDataset" WHERE "IndexRef" = $1',
|
|
[refIndex]
|
|
);
|
|
const rectangles: Rectangle[] = result.rows.map(row => {
|
|
const [x1, y1, x2, y2] = row.TumerPosition;
|
|
const x = Math.min(x1, x2);
|
|
const y = Math.min(y1, y2);
|
|
const width = Math.abs(x2 - x1);
|
|
const height = Math.abs(y2 - y1);
|
|
return { id: row.Index, x, y, width, height };
|
|
});
|
|
return json(rectangles);
|
|
} catch (err) {
|
|
console.error(`API Error fetching rectangles for ${refIndex}:`, err);
|
|
return json({ error: 'Failed to fetch rectangles' }, { status: 500 });
|
|
}
|
|
};
|
|
|
|
// POST handler (new)
|
|
export const POST: RequestHandler = async ({ params, request }) => {
|
|
const { refIndex } = params;
|
|
const { x, y, width, height } = await request.json();
|
|
|
|
const tumerPosition = [x, y, x + width, y + height];
|
|
|
|
try {
|
|
const result = await pool.query(
|
|
`INSERT INTO public."TumerDataset" ("IndexRef", "DataNumber", "TumerPosition", "LocationFile")
|
|
SELECT $1, "DataNumber", $2, "LocationFile" FROM public."TumerDatasetRef" WHERE "Index" = $1
|
|
RETURNING "Index"`,
|
|
[refIndex, tumerPosition]
|
|
);
|
|
return json({ id: result.rows[0].Index }, { status: 201 });
|
|
} catch (err) {
|
|
console.error('API Error creating rectangle:', err);
|
|
return json({ error: 'Failed to create rectangle' }, { status: 500 });
|
|
}
|
|
}; |