diff options
author | Vikas Kushwaha <dev@vikas.rocks> | 2025-02-11 17:50:21 +0530 |
---|---|---|
committer | Vikas Kushwaha <dev@vikas.rocks> | 2025-02-11 17:50:21 +0530 |
commit | e44397dcbb9454f89b8263738d5ccf1e20a12074 (patch) | |
tree | 1c2b5816c597ddd10c7afb68ed2af7cc2c26d56d /cmd/web/model/project.go | |
parent | c720f1f85e5ec7c93604462b7a70e1f84a1ce244 (diff) |
Diffstat (limited to 'cmd/web/model/project.go')
-rw-r--r-- | cmd/web/model/project.go | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/cmd/web/model/project.go b/cmd/web/model/project.go new file mode 100644 index 0000000..1475a0c --- /dev/null +++ b/cmd/web/model/project.go @@ -0,0 +1,52 @@ +package model + +import ( + "gorm.io/gorm" +) + +type Article struct { + gorm.Model + Slug string `gorm:"uniqueIndex;not null"` + Title string `gorm:"not null" validate:"required"` + Description string `validate:"required"` + Body string `validate:"required"` + User User `validate:"-"` + UserID uint + Comments []Comment + Favorites []User `gorm:"many2many:article_favorite;"` + Tags []Tag `gorm:"many2many:article_tag;"` + IsFavorited bool `gorm:"-"` +} + +func (Article Article) GetFormattedCreatedAt() string { + dateLayout := "Jan 02, 2006" + return Article.CreatedAt.Format(dateLayout) +} + +func (Article Article) GetFavoriteCount() int { + return len(Article.Favorites) +} + +func (Article Article) FavoritedBy(id uint) bool { + if Article.Favorites == nil { + return false + } + + for _, u := range Article.Favorites { + if u.ID == id { + return true + } + } + + return false +} + +func (Article Article) GetTagsAsCommaSeparated() string { + tagsText := "" + + for i := 0; i < len(Article.Tags); i++ { + tagsText += Article.Tags[i].Name + "," + } + + return tagsText +} |