31 lines
989 B
Go
31 lines
989 B
Go
|
package models
|
||
|
|
||
|
import (
|
||
|
"git.solsynth.dev/hypernet/nexus/pkg/nex/cruda"
|
||
|
"gorm.io/datatypes"
|
||
|
)
|
||
|
|
||
|
type Product struct {
|
||
|
cruda.BaseModel
|
||
|
|
||
|
Icon string `json:"icon"` // random id of atttachment
|
||
|
Name string `json:"name"`
|
||
|
Alias string `json:"alias" gorm:"uniqueIndex"`
|
||
|
Description string `json:"description"`
|
||
|
Previews datatypes.JSONSlice[string] `json:"previews"` // random id of attachments
|
||
|
Tags datatypes.JSONSlice[string] `json:"tags"`
|
||
|
|
||
|
Meta ProductMeta `json:"meta" gorm:"foreignKey:ProductID"`
|
||
|
Releases []ProductRelease `json:"releases" gorm:"foreignKey:ProductID"`
|
||
|
AccountID uint `json:"account_id"`
|
||
|
}
|
||
|
|
||
|
type ProductMeta struct {
|
||
|
cruda.BaseModel
|
||
|
|
||
|
Introduction string `json:"introduction"`
|
||
|
Attachments datatypes.JSONSlice[string] `json:"attachments"` // random id of attachments
|
||
|
|
||
|
ProductID uint `json:"product_id"`
|
||
|
}
|