Files
zineshop/models/shopItem.go
kalipso 9e638dcfc2
All checks were successful
Go / build (push) Successful in 12m19s
add tested/not tested indicator on print view
2025-07-02 00:10:37 +02:00

58 lines
1.3 KiB
Go

package models
import (
"fmt"
"gorm.io/gorm"
)
/*
Sticker
- name, abstr, descr, price, tag
Poster
- name, abstr, descr, price bw/colored, tag
Zines
- name, abstr, descr, price bw/colored/coloredcoveronly, tag
Books
- name, abstr, descr, price, tag
*/
type Category string
const (
Zine Category = "Zine"
)
func ParseCategory(s string) (c Category, err error) {
if s == "Zine" {
return Zine, nil
}
return c, fmt.Errorf("Cannot parse category %s", s)
}
type ItemVariant struct {
gorm.Model
Name string `json:"name" gorm:"not null"`
Price float64 `json:"price" gorm:"not null"`
InStock bool `json:"inStock" gorm:"default:true"`
ShopItemID uint
}
type ShopItem struct {
gorm.Model
Name string `json:"name" binding:"required" gorm:"unique;not null"`
Abstract string `json:"abstract" binding:"required"`
Description string `json:"description" binding:"required"`
Category Category `json:"category"`
Variants []ItemVariant `json:"variant"`
BasePrice float64 `json:"basePrice"`
IsPublic bool `json:"isPublic" gorm:"default:true"`
Tags []Tag `gorm:"many2many:item_tags;"`
Image string
Pdf string
PrintMode string `json:"printMode" gorm:"default:CreateBooklet"`
WasPrinted bool `gorm:"default:false"`
}