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>
48 lines
1.5 KiB
Go
48 lines
1.5 KiB
Go
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"`
|
|
}
|