package model

import "encoding/json"

type B2BTopMenu struct {
	MenuID   int             `gorm:"column:menu_id;primaryKey;autoIncrement" json:"menu_id"`
	Label    json.RawMessage `gorm:"column:label;type:longtext;not null;default:'{}'" json:"label"`
	ParentID *int            `gorm:"column:parent_id;index:FK_b2b_top_menu_parent_id" json:"parent_id,omitempty"`
	Params   json.RawMessage `gorm:"column:params;type:longtext;not null;default:'{}'" json:"params"`
	Active   int8            `gorm:"column:active;type:tinyint;not null;default:1" json:"active"`
	Position int             `gorm:"column:position;not null;default:1" json:"position"`

	Parent   *B2BTopMenu   `gorm:"foreignKey:ParentID;references:MenuID;constraint:OnDelete:RESTRICT,OnUpdate:RESTRICT" json:"parent,omitempty"`
	Children []*B2BTopMenu `gorm:"foreignKey:ParentID" json:"children,omitempty"`
}

func (B2BTopMenu) TableName() string {
	return "b2b_top_menu"
}
