import { serve } from '@hono/node-server'
import { Hono } from 'hono'
import { PrismaClient } from '@prisma/client'
const app = new Hono()
const prisma = new PrismaClient()
app.get('/', (c) => {
return c.html(`
BookMe - Roggio API
BookMe API (RoggioApp MVP)
Willkommen an der API-Schnittstelle. Test-Endpunkte:
`)
})
app.get('/api/apartments', async (c) => {
const units = await prisma.unit.findMany({
include: {
children: {
include: { children: true }
}
}
})
const apartments = units.filter(u => {
const traits = u.traits as any
return traits && traits.is_rentable === true
}).map(apartment => {
let totalArea = 0;
let totalSleepCapacity = 0;
apartment.children.forEach(room => {
const rTraits = room.traits as any;
if (rTraits?.area_sqm) totalArea += rTraits.area_sqm;
room.children.forEach(inv => {
const iTraits = inv.traits as any;
if (iTraits?.sleep_capacity) totalSleepCapacity += iTraits.sleep_capacity;
});
});
return {
id: apartment.id,
name: apartment.name,
base_price: (apartment.traits as any).base_price,
calculated_stats: {
area_sqm: totalArea,
sleep_capacity: totalSleepCapacity
},
rooms: apartment.children.map(r => r.name)
}
})
return c.json(apartments)
})
const port = 3000
console.log(`Server is running on port ${port}`)
serve({
fetch: app.fetch,
port,
hostname: '0.0.0.0'
})