119 lines
3.4 KiB
Go
119 lines
3.4 KiB
Go
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"`
|
|
}
|