Goondex/internal/model/scene.go
Team Goon 2e747c6660 Initial release: v0.1.0-dev1
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>
2025-11-14 21:37:26 -05:00

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"`
}