examples

package module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 14, 2023 License: MIT Imports: 6 Imported by: 0

README

Примеры реализации моделей

В этом модуле приведены примеры использования тегов focus и validate для управления моделями.

Подключение моделей

Подключить модели после создания реестра моделей focus.ModelsRegistry

registry := focus.NewModelRegistry(true)
registry.Register(Category{}, Product{}, Promo{}, Store{})

или при использовании di.Container прописать объект в контейнере.

{
    Name: "focus.models.registry.models",
    Build: func(ctn di.Container) (interface{}, error) {
        return []any{
            Category{},
            Product{},
            Promo{},
            Store{},
        }, nil
    },
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Category

type Category struct {
	ID         uuid.UUID  `focus:"primaryKey;code:id;column:id;title:ID" validate:"required,notBlank"`
	Name       string     `focus:"title:Название;filterable" validate:"required,min=1,max=50"`
	Code       string     `` /* 145-byte string literal not displayed */
	Category   *Category  `` /* 138-byte string literal not displayed */
	CategoryID *uuid.UUID `focus:"-"`
}

func (Category) ModelTitle

func (Category) ModelTitle() string

func (Category) TableName

func (Category) TableName() string

type Product

type Product struct {
	ID         uuid.UUID         `focus:"primaryKey;code:id;column:id;title:ID"`
	Name       string            `focus:"title:Название;filterable" validate:"required,min=1,max=50"`
	ExternalId uint              `focus:"title:Артикул;filterable;unique" validate:"required,notBlank"`
	CategoryId uuid.UUID         `focus:"-" validate:"-"`
	Category   Category          `focus:"title:Категория;view:select;viewExtra:categorySelect" validate:"required,structonly,notBlank"`
	Gallery    []entity.Media    `` /* 144-byte string literal not displayed */
	Colors     array.StringArray `focus:"title:Цвета" validate:"omitempty,unique,dive,iscolor"`
}

func (Product) ModelTitle

func (Product) ModelTitle() string

func (Product) TableName

func (Product) TableName() string

type Promo

type Promo struct {
	Id                  uuid.UUID            `focus:"title:ID;primaryKey;position:1"`
	Code                string               `` /* 132-byte string literal not displayed */
	Title               string               `focus:"title:Название;sortable;filterable;position:2" validate:"required"`
	ImageId             *uuid.UUID           `focus:"-" validate:"-"`
	Image               *entity.Media        `focus:"title:Иконка;media;hidden:list;viewExtra:promosMedia" validate:"required"`
	Active              bool                 `focus:"title:Активность;filterable"`
	ActiveFrom          datetime.DateTimeUTC `focus:"title:Дата начала акции;view:dateTimePicker;filterable;time" validate:"required,notBlank"`
	ActiveTo            datetime.DateTimeUTC `` /* 136-byte string literal not displayed */
	RedirectLink        string               `` /* 143-byte string literal not displayed */
	IncludedKladrIds    array.StringArray    `focus:"title:Включенные КЛАДР;view:select;viewExtra:selectKladrIds;hidden:list" validate:"unique"`
	Sort                int                  `focus:"title:Сортировка"`
	Uint                uint                 `focus:"title:Целое неотрицательное"`
	Float               float64              `focus:"title:Число с плавающей точкой"`
	InfoEmail           string               `focus:"title:Контактный email;view:emailInput" validate:"omitempty,email"`
	InfoPhone           string               `focus:"title:Контактный телефон;view:phoneInput" validate:"omitempty,phone"`
	Rating              int                  `focus:"title:Рейтинг;view:rating" validate:"omitempty,min=0,max=5"`
	Date                datetime.Date        `focus:"title:Дата;view:datePickerInput;time"`
	FilteredCatalogLink string               `focus:"title:Ссылка на отфильтрованный каталог;hidden:list" validate:"omitempty,uri"`
	CategoryId          *uuid.UUID           `focus:"-"`
	Category            *Category            `focus:"title:Категория;view:select;viewExtra:categorySelect;hidden:list" validate:"omitempty,structonly"`
	Products            []Product            `` /* 263-byte string literal not displayed */
	ShortDescription    string               `focus:"title:Краткое описание;view:textarea"`
	PreviewDescription  string               `focus:"title:Описание превью акции;view:wysiwyg;hidden:list"`
	Description         string               `focus:"title:Описание акции;view:editorJs;viewExtra:promoEditorJs;hidden:list" validate:"omitempty,json"`
}

func (Promo) AfterCreate

func (p Promo) AfterCreate(tx *gorm.DB) error

func (Promo) AfterSave

func (p Promo) AfterSave(tx *gorm.DB) error

func (Promo) AfterUpdate

func (p Promo) AfterUpdate(tx *gorm.DB) error

func (Promo) ModelTitle

func (Promo) ModelTitle() string

func (Promo) TableName

func (Promo) TableName() string

type PromoProduct

type PromoProduct struct {
	PromoId   uuid.UUID
	ProductId uuid.UUID
	Sort      int
}

func (PromoProduct) TableName

func (PromoProduct) TableName() string

type Store

type Store struct {
	ID           uuid.UUID     `focus:"title:ID;primaryKey;code:id;column:id"`
	Name         string        `focus:"title:Название;filterable" validate:"required,min=3,max=50"`
	Latitude     float64       `focus:"title:Широта" validate:"required,longitude"`
	Longitude    float64       `focus:"title:Долгота" validate:"required,latitude"`
	ContactEmail *string       `focus:"title:Контактный email;block:Контакты;view:emailInput" validate:"omitempty,email"`
	ContactPhone *string       `focus:"title:Контактный телефон;block:Контакты;view:phoneInput" validate:"omitempty,phone"`
	OpeningTime  string        `focus:"title:Время открытия" validate:"required,datetime=15:04:00"`
	ClosingTime  string        `focus:"title:Время закрытия" validate:"required,datetime=15:04:00"`
	Products     []Product     `` /* 166-byte string literal not displayed */
	Image        *entity.Media `focus:"title:Изображение;media;viewExtra:storesMedia" validate:"omitempty"`
	ImageId      *uuid.UUID    `focus:"-"`
	Description  *string       `focus:"title:Описание магазина;view:editorJs;viewExtra:storeEditorJs" validate:"omitempty,json"`
}

func (Store) ModelTitle

func (Store) ModelTitle() string

func (Store) TableName

func (Store) TableName() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL