package models import ( "kontor-api-gin/internal/helpers" "time" ) type Card struct { ID string `gorm:"type:string;primary_key;" json:"id"` CreatedAt time.Time `gorm:"column:created_date" json:"created_date"` UpdatedAt time.Time `gorm:"column:last_modified_date" json:"last_modified_date"` DeletedAt *time.Time `gorm:"column:deleted_date" json:"deleted_date"` Version int `gorm:"default:0" json:"version"` CardNumber int `gorm:"column:card_number" json:"card_number"` Year int `gorm:"column:year" json:"year"` CardSetID string `gorm:"column:card_set_id" json:"card_set_id"` CardSet CardSet `gorm:"foreignKey:CardSetID" json:"card_set"` RoosterID string `gorm:"column_rooster_id" json:"rooster_id"` Rooster *Rooster `gorm:"foreignKey:RoosterID" json:"rooster"` VendorID string `gorm:"column_vendor_id" json:"vendor_id"` Vendor Vendor `gorm:"foreignKey:VendorID" json:"vendor"` } func (card *Card) TableName() string { return "card" } type CardDTO struct { ID string `json:"id" binding:"required"` CreatedAt helpers.KontorTime `json:"created_date" binding:"required"` UpdatedAt helpers.KontorTime `json:"last_modified_date" binding:"required"` DeletedAt *time.Time `json:"deleted_date,omitempty" binding:"omitempty"` Version int `json:"version" binding:"required"` CardNumber int `json:"card_number" binding:"required"` Year int `json:"year" binding:"required"` CardSetID string `json:"card_set_id" binding:"required"` RoosterID string `json:"rooster_id" binding:"required"` VendorID string `json:"vendor_id" binding:"required"` } func (dto CardDTO) ConvertDTOToModel() Card { model := Card{ ID: dto.ID, CreatedAt: dto.CreatedAt.Time, UpdatedAt: dto.UpdatedAt.Time, DeletedAt: dto.DeletedAt, Version: dto.Version, CardNumber: dto.CardNumber, Year: dto.Year, CardSetID: dto.CardSetID, RoosterID: dto.RoosterID, VendorID: dto.VendorID, } return model } func ConvertCardsToDtos(cards []Card) []CardDTO { dtos := make([]CardDTO, len(cards)) for i, card := range cards { dtos[i] = CardDTO{ ID: card.ID, CreatedAt: helpers.KontorTime{Time: card.CreatedAt}, UpdatedAt: helpers.KontorTime{Time: card.UpdatedAt}, DeletedAt: card.DeletedAt, Version: card.Version, CardNumber: card.CardNumber, Year: card.Year, CardSetID: card.CardSetID, RoosterID: card.RoosterID, VendorID: card.VendorID, } } return dtos } type CardDTOList []CardDTO