mirror of
https://github.com/khoaliber/dockhand.git
synced 2026-03-06 13:21:53 +00:00
Initial commit
This commit is contained in:
81
routes/api/preferences/grid/+server.ts
Normal file
81
routes/api/preferences/grid/+server.ts
Normal file
@@ -0,0 +1,81 @@
|
||||
import { json, type RequestHandler } from '@sveltejs/kit';
|
||||
import { getGridPreferences, setGridPreferences, deleteGridPreferences, resetAllGridPreferences } from '$lib/server/db';
|
||||
import { authorize } from '$lib/server/authorize';
|
||||
import type { GridColumnPreferences } from '$lib/types';
|
||||
|
||||
// GET - retrieve all grid preferences
|
||||
export const GET: RequestHandler = async ({ cookies }) => {
|
||||
const auth = await authorize(cookies);
|
||||
|
||||
try {
|
||||
// userId for per-user storage when auth is enabled
|
||||
const userId = auth.authEnabled ? auth.user?.id : undefined;
|
||||
const preferences = await getGridPreferences(userId);
|
||||
|
||||
return json({ preferences });
|
||||
} catch (error) {
|
||||
console.error('Failed to get grid preferences:', error);
|
||||
return json({ error: 'Failed to get grid preferences' }, { status: 500 });
|
||||
}
|
||||
};
|
||||
|
||||
// POST - update grid preferences for a specific grid
|
||||
export const POST: RequestHandler = async ({ request, cookies }) => {
|
||||
const auth = await authorize(cookies);
|
||||
|
||||
try {
|
||||
const body = await request.json();
|
||||
const { gridId, columns } = body;
|
||||
|
||||
if (!gridId || typeof gridId !== 'string') {
|
||||
return json({ error: 'gridId is required' }, { status: 400 });
|
||||
}
|
||||
|
||||
if (!columns || !Array.isArray(columns)) {
|
||||
return json({ error: 'columns array is required' }, { status: 400 });
|
||||
}
|
||||
|
||||
// Validate column structure
|
||||
for (const col of columns) {
|
||||
if (typeof col.id !== 'string' || typeof col.visible !== 'boolean') {
|
||||
return json({ error: 'Each column must have id (string) and visible (boolean)' }, { status: 400 });
|
||||
}
|
||||
}
|
||||
|
||||
const prefs: GridColumnPreferences = { columns };
|
||||
|
||||
// userId for per-user storage when auth is enabled
|
||||
const userId = auth.authEnabled ? auth.user?.id : undefined;
|
||||
await setGridPreferences(gridId, prefs, userId);
|
||||
|
||||
// Return updated preferences
|
||||
const preferences = await getGridPreferences(userId);
|
||||
return json({ preferences });
|
||||
} catch (error) {
|
||||
console.error('Failed to save grid preferences:', error);
|
||||
return json({ error: 'Failed to save grid preferences' }, { status: 500 });
|
||||
}
|
||||
};
|
||||
|
||||
// DELETE - reset grid preferences (single grid or all)
|
||||
export const DELETE: RequestHandler = async ({ url, cookies }) => {
|
||||
const auth = await authorize(cookies);
|
||||
|
||||
try {
|
||||
const gridId = url.searchParams.get('gridId');
|
||||
const userId = auth.authEnabled ? auth.user?.id : undefined;
|
||||
|
||||
if (gridId) {
|
||||
await deleteGridPreferences(gridId, userId);
|
||||
} else {
|
||||
// Reset all grids
|
||||
await resetAllGridPreferences(userId);
|
||||
}
|
||||
|
||||
const preferences = await getGridPreferences(userId);
|
||||
return json({ preferences });
|
||||
} catch (error) {
|
||||
console.error('Failed to reset grid preferences:', error);
|
||||
return json({ error: 'Failed to reset grid preferences' }, { status: 500 });
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user