From 78f6130b23f758101268759b8cd1007d5fd98e09 Mon Sep 17 00:00:00 2001 From: nyne Date: Sun, 7 Dec 2025 18:39:59 +0800 Subject: [PATCH] feat: add release date field to resource models and parameters --- frontend/src/network/models.ts | 3 +++ server/model/resource.go | 29 +++++++++++++++++------------ server/service/resource.go | 3 +++ 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/frontend/src/network/models.ts b/frontend/src/network/models.ts index d55cb63..0f530a4 100644 --- a/frontend/src/network/models.ts +++ b/frontend/src/network/models.ts @@ -44,6 +44,7 @@ export interface CreateResourceParams { title: string; alternative_titles: string[]; links: RLink[]; + release_date?: string; tags: number[]; article: string; images: number[]; @@ -77,6 +78,7 @@ export interface Resource { id: number; title: string; created_at: string; + release_date?: string; tags: Tag[]; image?: Image; author: User; @@ -89,6 +91,7 @@ export interface ResourceDetails { links: RLink[]; article: string; createdAt: string; + releaseDate?: string; tags: Tag[]; images: Image[]; files: RFile[]; diff --git a/server/model/resource.go b/server/model/resource.go index 18eee27..230cb9d 100644 --- a/server/model/resource.go +++ b/server/model/resource.go @@ -11,6 +11,7 @@ type Resource struct { Title string AlternativeTitles []string `gorm:"serializer:json"` Links []Link `gorm:"serializer:json"` + ReleaseDate *time.Time Article string Images []Image `gorm:"many2many:resource_images;"` Tags []Tag `gorm:"many2many:resource_tags;"` @@ -32,12 +33,13 @@ type Link struct { } type ResourceView struct { - ID uint `json:"id"` - Title string `json:"title"` - CreatedAt time.Time `json:"created_at"` - Tags []TagView `json:"tags"` - Image *ImageView `json:"image"` - Author UserView `json:"author"` + ID uint `json:"id"` + Title string `json:"title"` + CreatedAt time.Time `json:"created_at"` + ReleaseDate *time.Time `json:"release_date,omitempty"` + Tags []TagView `json:"tags"` + Image *ImageView `json:"image"` + Author UserView `json:"author"` } type ResourceDetailView struct { @@ -47,6 +49,7 @@ type ResourceDetailView struct { Links []Link `json:"links"` Article string `json:"article"` CreatedAt time.Time `json:"createdAt"` + ReleaseDate *time.Time `json:"releaseDate,omitempty"` Tags []TagView `json:"tags"` Images []ImageView `json:"images"` Files []FileView `json:"files"` @@ -81,12 +84,13 @@ func (r *Resource) ToView() ResourceView { } return ResourceView{ - ID: r.ID, - Title: r.Title, - CreatedAt: r.CreatedAt, - Tags: tags, - Image: image, - Author: r.User.ToView(), + ID: r.ID, + Title: r.Title, + CreatedAt: r.CreatedAt, + ReleaseDate: r.ReleaseDate, + Tags: tags, + Image: image, + Author: r.User.ToView(), } } @@ -115,6 +119,7 @@ func (r *Resource) ToDetailView() ResourceDetailView { Links: r.Links, Article: r.Article, CreatedAt: r.CreatedAt, + ReleaseDate: r.ReleaseDate, Tags: tags, Images: images, Files: files, diff --git a/server/service/resource.go b/server/service/resource.go index 84e7694..c6dfeeb 100644 --- a/server/service/resource.go +++ b/server/service/resource.go @@ -30,6 +30,7 @@ type ResourceParams struct { Title string `json:"title" binding:"required"` AlternativeTitles []string `json:"alternative_titles"` Links []model.Link `json:"links"` + ReleaseDate *time.Time `json:"release_date"` Tags []uint `json:"tags"` Article string `json:"article"` Images []uint `json:"images"` @@ -106,6 +107,7 @@ func CreateResource(uid uint, params *ResourceParams) (uint, error) { AlternativeTitles: params.AlternativeTitles, Article: params.Article, Links: params.Links, + ReleaseDate: params.ReleaseDate, Images: images, Tags: tags, UserID: uid, @@ -533,6 +535,7 @@ func UpdateResource(uid, rid uint, params *ResourceParams) error { r.AlternativeTitles = params.AlternativeTitles r.Article = params.Article r.Links = params.Links + r.ReleaseDate = params.ReleaseDate r.Gallery = gallery r.GalleryNsfw = nsfw r.Characters = characters