File size: 1,329 Bytes
9853b20
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import { NextRequest, NextResponse } from 'next/server'
import { insertMessage, updateRoom } from 'lib/persistence'
import { logEvent } from 'lib/logger'

export async function POST(request: NextRequest) {
  try {
    const body = await request.json()
    const messages = Array.isArray(body?.messages) ? body.messages : []

    let inserted = 0
    for (const msg of messages) {
      const res = await insertMessage({
        id: msg.id,
        room_id: msg.room_id,
        code_id: msg.code_id,
        user_id: msg.user_id || null,
        content: msg.content,
        image_url: msg.image_url || null,
        created_at: msg.created_at || new Date().toISOString()
      })
      if (res) {
        inserted++
        await updateRoom(msg.room_id, { date_last_message: new Date().toISOString() })
      }
    }

    if (inserted > 0) {
      await logEvent({
        module: 'sync',
        operation: 'push_messages',
        data: { inserted },
        ip: (request as any).headers?.get?.('x-forwarded-for') || null,
        userAgent: (request as any).headers?.get?.('user-agent') || null
      })
    }

    return NextResponse.json({ success: true, inserted })
  } catch (error) {
    console.error('Sync push error:', error)
    return NextResponse.json({ error: 'Vnitřní chyba serveru' }, { status: 500 })
  }
}