Files
Trackeep/backend/models/file_analysis.go
T
Tomas Dvorak d27cf14110 first test
2026-02-08 14:14:55 +01:00

53 lines
1.8 KiB
Go

package models
import (
"time"
"gorm.io/gorm"
)
// FileAnalysis represents analysis results for a file
type FileAnalysis struct {
ID uint `json:"id" gorm:"primaryKey"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
DeletedAt gorm.DeletedAt `json:"-" gorm:"index"`
// File information
FileID uint `json:"file_id" gorm:"not null;uniqueIndex:idx_file_analysis_type"`
File File `json:"file,omitempty" gorm:"foreignKey:FileID"`
AnalysisType string `json:"analysis_type" gorm:"not null;uniqueIndex:idx_file_analysis_type"` // computer_vision, nlp, metadata
// Analysis results
Results string `json:"results" gorm:"type:text"` // JSON-encoded analysis results
Confidence float64 `json:"confidence" gorm:"default:0.0"` // 0.0 to 1.0
Status string `json:"status" gorm:"default:pending"` // pending, processing, completed, failed
// Processing metadata
ProcessedAt *time.Time `json:"processed_at"`
ProcessingTime int `json:"processing_time"` // in milliseconds
ModelVersion string `json:"model_version"` // AI model version used
Error string `json:"error"` // Error message if failed
// Additional metadata
Tags string `json:"tags" gorm:"serializer:json"`
Metadata string `json:"metadata" gorm:"serializer:json"`
ExtractedData string `json:"extracted_data" gorm:"type:text"` // Extracted text, objects, etc.
}
// TableName returns the table name for FileAnalysis
func (FileAnalysis) TableName() string {
return "file_analyses"
}
// BeforeCreate hook to set default values
func (fa *FileAnalysis) BeforeCreate(tx *gorm.DB) error {
if fa.Status == "" {
fa.Status = "pending"
}
if fa.Confidence == 0 {
fa.Confidence = 0.0
}
return nil
}