feat: publication management with cover images, PDFs, and fruit images (story #04)
Full CRUD for publications; link fruits to publications; upload per-fruit PDF descriptions and fruit images stored as BYTEA; fruit detail page shows publication descriptions and images. ImageOverlayDrawer for cover thumbnail full-size view. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
package domain
|
||||
|
||||
import "time"
|
||||
|
||||
type Publication struct {
|
||||
ID int `json:"id"`
|
||||
Title string `json:"title"`
|
||||
Author *string `json:"author"`
|
||||
OSDBPubID string `json:"osdb_pub_id"`
|
||||
ImageURL *string `json:"image_url,omitempty"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
||||
type PublicationWriteDTO struct {
|
||||
Title string `json:"title"`
|
||||
Author *string `json:"author"`
|
||||
OSDBPubID string `json:"osdb_pub_id"`
|
||||
}
|
||||
|
||||
type PublicationFruit struct {
|
||||
FruitID int `json:"fruit_id"`
|
||||
Name string `json:"name"`
|
||||
OSDBNumber string `json:"osdb_number"`
|
||||
}
|
||||
|
||||
type PublicationDescription struct {
|
||||
ID int `json:"id"`
|
||||
PublicationID int `json:"publication_id"`
|
||||
FruitID int `json:"fruit_id"`
|
||||
FruitName string `json:"fruit_name"`
|
||||
PublicationTitle string `json:"publication_title"`
|
||||
URL string `json:"url"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
|
||||
type PublicationFruitImage struct {
|
||||
ID int `json:"id"`
|
||||
PublicationID int `json:"publication_id"`
|
||||
PublicationTitle string `json:"publication_title"`
|
||||
PublicationAuthor *string `json:"publication_author"`
|
||||
FruitID int `json:"fruit_id"`
|
||||
Filename *string `json:"filename"`
|
||||
ImageType string `json:"image_type"`
|
||||
URL string `json:"url"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
Reference in New Issue
Block a user