Clean slate initialization of Goondex - a fast, local-first media indexer. Features: - SQLite database with WAL mode and foreign keys - Full schema for performers, studios, scenes, and tags - Many-to-many relationships via junction tables - CRUD stores for all entities with search capabilities - CLI with performer/studio/scene search commands - Pluggable scraper architecture with registry - TPDB client stub (ready for implementation) - Configuration system via YAML files - Comprehensive .gitignore and documentation Architecture: - cmd/goondex: CLI application with Cobra - cmd/goondexd: Daemon placeholder for v0.2.0 - internal/db: Database layer with stores - internal/model: Clean data models - internal/scraper: Scraper interface and TPDB client - config/: YAML configuration templates Database schema includes indexes on common query fields and uses RFC3339 timestamps for consistency. Built and tested successfully with Go 1.25.4. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
27 lines
1007 B
Go
27 lines
1007 B
Go
package model
|
|
|
|
import "time"
|
|
|
|
// Scene represents a video/scene
|
|
type Scene struct {
|
|
ID int64 `json:"id"`
|
|
Title string `json:"title"`
|
|
Code string `json:"code,omitempty"` // DVD code, scene ID, etc.
|
|
Date string `json:"date,omitempty"` // ISO 8601 date string
|
|
StudioID *int64 `json:"studio_id,omitempty"`
|
|
Description string `json:"description,omitempty"`
|
|
ImagePath string `json:"image_path,omitempty"`
|
|
ImageURL string `json:"image_url,omitempty"`
|
|
Director string `json:"director,omitempty"`
|
|
URL string `json:"url,omitempty"`
|
|
Source string `json:"source,omitempty"`
|
|
SourceID string `json:"source_id,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
|
|
// Relationships (populated via joins)
|
|
Performers []Performer `json:"performers,omitempty"`
|
|
Tags []Tag `json:"tags,omitempty"`
|
|
Studio *Studio `json:"studio,omitempty"`
|
|
}
|