package entity

import (
	"context"
	"gorm.io/gorm"
	"gxt-file-server/app/schema"
)

// GetDemoDB 获取demo存储
func GetDemoDB(ctx context.Context, defDB *gorm.DB) *gorm.DB {
	return getDBWithModel(ctx, defDB, Demo{})
}

// SchemaDemo demo对象
type SchemaDemo schema.Demo

// ToDemo 转换为demo实体
func (a SchemaDemo) ToDemo() *Demo {
	item := &Demo{
		RecordID: a.RecordID,
		Code:     &a.Code,
		Name:     &a.Name,
		Memo:     &a.Memo,
		Status:   &a.Status,
		Creator:  &a.Creator,
	}
	return item
}

// ToSchemaDemo 转换为demo对象
func (a Demo) ToSchemaDemo() *schema.Demo {
	item := &schema.Demo{
		RecordID:  a.RecordID,
		Code:      *a.Code,
		Name:      *a.Name,
		Memo:      *a.Memo,
		Status:    *a.Status,
		Creator:   *a.Creator,
		CreatedAt: a.CreatedAt,
	}
	return item
}

// Demo demo实体
type Demo struct {
	gorm.Model
	RecordID string  `gorm:"column:record_id;size:32;index;"` // 记录内码
	Code     *string `gorm:"column:code;size:50;index;"`      // 编号
	Name     *string `gorm:"column:name;size:100;index;"`     // 名称
	Memo     *string `gorm:"column:memo;size:200;"`           // 备注
	Status   *int    `gorm:"column:status;index;"`            // 状态(1:启用 2:停用)
	Creator  *string `gorm:"column:creator;size:32;"`         // 创建者
}

// Demos demo列表
type Demos []*Demo

// ToSchemaDemos 转换为demo对象列表
func (a Demos) ToSchemaDemos() []*schema.Demo {
	list := make([]*schema.Demo, len(a))
	for i, item := range a {
		list[i] = item.ToSchemaDemo()
	}
	return list
}
