package com.android.trisolarisserver.models.booking import com.android.trisolarisserver.models.property.AppUser import com.android.trisolarisserver.models.property.Property import jakarta.persistence.* import java.time.OffsetDateTime import java.util.UUID @Entity @Table(name = "guest_document") class GuestDocument( @Id @GeneratedValue @Column(columnDefinition = "uuid") val id: UUID? = null, @ManyToOne(fetch = FetchType.LAZY, optional = false) @JoinColumn(name = "property_id", nullable = false) var property: Property, @ManyToOne(fetch = FetchType.LAZY, optional = false) @JoinColumn(name = "guest_id", nullable = false) var guest: Guest, @ManyToOne(fetch = FetchType.LAZY, optional = false) @JoinColumn(name = "booking_id", nullable = false) var booking: Booking, @ManyToOne(fetch = FetchType.LAZY, optional = false) @JoinColumn(name = "uploaded_by", nullable = false) var uploadedBy: AppUser, @Column(name = "original_filename", nullable = false) var originalFilename: String, @Column(name = "content_type") var contentType: String? = null, @Column(name = "size_bytes", nullable = false) var sizeBytes: Long, @Column(name = "storage_path", nullable = false) var storagePath: String, @Column(name = "extracted_data", columnDefinition = "jsonb") var extractedData: String? = null, @Column(name = "extracted_at", columnDefinition = "timestamptz") var extractedAt: OffsetDateTime? = null, @Column(name = "uploaded_at", nullable = false, columnDefinition = "timestamptz") val uploadedAt: OffsetDateTime = OffsetDateTime.now() )