Initial commit

This commit is contained in:
monoadmin
2026-04-10 15:36:33 -07:00
commit b2be19ed14
134 changed files with 16234 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
import { db } from '@/lib/db'
import { machines, sessionCodes } from '@/lib/db/schema'
import { eq, and, isNotNull, gt } from 'drizzle-orm'
import { NextRequest, NextResponse } from 'next/server'
export async function POST(request: NextRequest) {
try {
const { accessKey } = await request.json()
if (!accessKey) {
return NextResponse.json({ error: 'Access key required' }, { status: 400 })
}
const result = await db
.update(machines)
.set({ isOnline: true, lastSeen: new Date() })
.where(eq(machines.accessKey, accessKey))
.returning({ id: machines.id })
if (!result[0]) {
return NextResponse.json({ error: 'Invalid access key' }, { status: 401 })
}
const machineId = result[0].id
// Check for a pending connection (code used recently)
const pending = await db
.select()
.from(sessionCodes)
.where(
and(
eq(sessionCodes.machineId, machineId),
eq(sessionCodes.isActive, true),
gt(sessionCodes.expiresAt, new Date()),
isNotNull(sessionCodes.usedAt)
)
)
.orderBy(sessionCodes.usedAt)
.limit(1)
return NextResponse.json({
success: true,
pendingConnection: pending[0]
? { sessionCodeId: pending[0].id, usedBy: pending[0].usedBy }
: null,
})
} catch (error) {
console.error('[Heartbeat] Error:', error)
return NextResponse.json({ error: 'Internal server error' }, { status: 500 })
}
}