package models import ( "database/sql" "time" ) type Role string const ( RoleAdmin Role = "admin" RoleUser Role = "user" ) type User struct { ID string `json:"id"` Email string `json:"email"` PasswordHash string `json:"-"` Role Role `json:"role"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type UserAsset struct { ID string `json:"id"` UserID string `json:"user_id"` Symbol string `json:"symbol"` Name string `json:"name"` CreatedAt time.Time `json:"created_at"` } type Source struct { ID string `json:"id"` Name string `json:"name"` Type string `json:"type"` Enabled bool `json:"enabled"` CreatedAt time.Time `json:"created_at"` } type Article struct { ID string `json:"id"` SourceID string `json:"source_id"` SourceName string `json:"source_name,omitempty"` Title string `json:"title"` Content string `json:"content"` URL string `json:"url"` PublishedAt sql.NullTime `json:"published_at"` CreatedAt time.Time `json:"created_at"` Symbols []string `json:"symbols,omitempty"` } type ArticleSymbol struct { ID string `json:"id"` ArticleID string `json:"article_id"` Symbol string `json:"symbol"` } type ScrapeCredential struct { ID string `json:"id"` SourceID string `json:"source_id"` Username string `json:"username"` PasswordEncrypted string `json:"-"` UpdatedAt time.Time `json:"updated_at"` } type ScrapeJob struct { ID string `json:"id"` SourceID string `json:"source_id"` SourceName string `json:"source_name,omitempty"` Status string `json:"status"` StartedAt sql.NullTime `json:"started_at"` FinishedAt sql.NullTime `json:"finished_at"` ArticlesFound int `json:"articles_found"` ErrorMsg string `json:"error_msg"` CreatedAt time.Time `json:"created_at"` } type AIProvider struct { ID string `json:"id"` Name string `json:"name"` APIKeyEncrypted string `json:"-"` Model string `json:"model"` Endpoint string `json:"endpoint"` IsActive bool `json:"is_active"` CreatedAt time.Time `json:"created_at"` } type Summary struct { ID string `json:"id"` UserID string `json:"user_id"` Content string `json:"content"` AIProviderID *string `json:"ai_provider_id"` GeneratedAt time.Time `json:"generated_at"` } type Setting struct { Key string `json:"key"` Value string `json:"value"` } type ScheduleSlot struct { ID string `json:"id"` DayOfWeek int `json:"day_of_week"` // 0=dimanche, 1=lundi ... 6=samedi Hour int `json:"hour"` Minute int `json:"minute"` } type Report struct { ID string `json:"id"` UserID string `json:"user_id"` SummaryID *string `json:"summary_id"` ContextExcerpt string `json:"context_excerpt"` Question string `json:"question"` Answer string `json:"answer"` Status string `json:"status"` // generating | done | error ErrorMsg string `json:"error_msg"` CreatedAt time.Time `json:"created_at"` }