Add safe database migration workflow and note history infrastructure.
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 5s
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 5s
This introduces guarded migrations with automatic backups, fixes note creation after DB reset, and wires snapshot/restore history across notes surfaces.
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
import { NextRequest, NextResponse } from 'next/server'
|
||||
import { auth } from '@/auth'
|
||||
import { getNoteHistory, restoreNoteVersion } from '@/app/actions/notes'
|
||||
|
||||
export async function GET(
|
||||
request: NextRequest,
|
||||
{ params }: { params: Promise<{ id: string }> }
|
||||
) {
|
||||
const session = await auth()
|
||||
if (!session?.user?.id) {
|
||||
return NextResponse.json({ success: false, error: 'Unauthorized' }, { status: 401 })
|
||||
}
|
||||
|
||||
try {
|
||||
const { id } = await params
|
||||
const limitRaw = request.nextUrl.searchParams.get('limit')
|
||||
const limit = limitRaw ? Number.parseInt(limitRaw, 10) : 30
|
||||
const entries = await getNoteHistory(id, Number.isNaN(limit) ? 30 : limit)
|
||||
return NextResponse.json({ success: true, data: entries })
|
||||
} catch (error) {
|
||||
console.error('Error fetching note history:', error)
|
||||
return NextResponse.json({ success: false, error: 'Failed to fetch history' }, { status: 500 })
|
||||
}
|
||||
}
|
||||
|
||||
export async function POST(
|
||||
request: NextRequest,
|
||||
{ params }: { params: Promise<{ id: string }> }
|
||||
) {
|
||||
const session = await auth()
|
||||
if (!session?.user?.id) {
|
||||
return NextResponse.json({ success: false, error: 'Unauthorized' }, { status: 401 })
|
||||
}
|
||||
|
||||
try {
|
||||
const { id } = await params
|
||||
const body = await request.json()
|
||||
const historyEntryId = body?.historyEntryId
|
||||
|
||||
if (!historyEntryId || typeof historyEntryId !== 'string') {
|
||||
return NextResponse.json({ success: false, error: 'historyEntryId is required' }, { status: 400 })
|
||||
}
|
||||
|
||||
const restoredNote = await restoreNoteVersion(id, historyEntryId)
|
||||
return NextResponse.json({ success: true, data: restoredNote })
|
||||
} catch (error) {
|
||||
const message = error instanceof Error ? error.message : 'Failed to restore history version'
|
||||
console.error('Error restoring note history:', error)
|
||||
return NextResponse.json({ success: false, error: message }, { status: 500 })
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user