fix: social_events API public + add availability table

- Make social_events GET endpoint public (was returning 401)
- Add WHERE active = TRUE filter to social_events query
- Create availability table for room date management
This commit is contained in:
2026-06-28 10:20:18 -05:00
parent c46dc826fb
commit b4b8cbcce1
3 changed files with 1285 additions and 2 deletions
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -4,17 +4,17 @@ import { db } from '@/lib/db';
export async function GET() { export async function GET() {
try { try {
await requireRole('admin');
const { rows } = await db.query(` const { rows } = await db.query(`
SELECT se.*, SELECT se.*,
(SELECT COUNT(*) FROM social_event_reservations ser WHERE ser.social_event_id = se.id) as reservation_count (SELECT COUNT(*) FROM social_event_reservations ser WHERE ser.social_event_id = se.id) as reservation_count
FROM social_events se FROM social_events se
WHERE se.active = TRUE
ORDER BY se.sort_order, se.date, se.id ORDER BY se.sort_order, se.date, se.id
`); `);
return NextResponse.json({ data: rows }); return NextResponse.json({ data: rows });
} catch (error: any) { } catch (error: any) {
console.error('GET /api/social_events error:', error); console.error('GET /api/social_events error:', error);
return NextResponse.json({ error: error.message || 'Unauthorized' }, { status: 401 }); return NextResponse.json({ error: error.message || 'Failed to fetch social events' }, { status: 500 });
} }
} }
+12
View File
@@ -221,6 +221,18 @@ export async function initSchema() {
await db.query(` await db.query(`
ALTER TABLE users ADD COLUMN IF NOT EXISTS last_name VARCHAR(100); ALTER TABLE users ADD COLUMN IF NOT EXISTS last_name VARCHAR(100);
`); `);
await db.query(`
CREATE TABLE IF NOT EXISTS availability (
id SERIAL PRIMARY KEY,
room_id INTEGER REFERENCES rooms(id) ON DELETE CASCADE,
date DATE NOT NULL,
status VARCHAR(20) NOT NULL DEFAULT 'available' CHECK (status IN ('available', 'booked', 'maintenance')),
price NUMERIC(10,2),
created_at TIMESTAMP DEFAULT NOW(),
UNIQUE(room_id, date)
);
`);
} }
export async function migrateFromLegacyPlaces() { export async function migrateFromLegacyPlaces() {