package models

import (
	"time"

	"gorm.io/gorm"
)

type Experience struct {
	Year    string `json:"year"`
	Role    string `json:"role"`
	Company string `json:"company"`
}

// AboutProfile 关于我页面数据模型
type AboutProfile struct {
	ID             uint         `json:"id" gorm:"primaryKey;column:id"`
	Name           string       `json:"name" gorm:"column:name"`
	Avatar         string       `json:"avatar" gorm:"column:avatar"`
	Location       string       `json:"location" gorm:"column:location"`
	Bio            string       `json:"bio" gorm:"column:bio;type:text"`
	Email          string       `json:"email" gorm:"column:email"`
	Wechat         string       `json:"wechat" gorm:"column:wechat"`
	TechStack      string       `json:"-" gorm:"column:tech_stack;type:text"`  // Stored as string in DB
	TechList       []string     `json:"techStack" gorm:"-"`                    // Exposed as array in JSON
	ExperiencesStr string       `json:"-" gorm:"column:experiences;type:text"` // Stored as string in DB
	ExperienceList []Experience `json:"experiences" gorm:"-"`                  // Exposed as array in JSON
	IsPrimary      bool         `json:"isPrimary" gorm:"column:is_primary;default:0"`
	CreatedAt      int64        `json:"createdAt" gorm:"column:created_at"`
	UpdatedAt      int64        `json:"updatedAt" gorm:"column:updated_at"`
	DeletedAt      int64        `json:"deletedAt" gorm:"column:deleted_at;default:0"`
}

// TableName 指定表名
func (AboutProfile) TableName() string {
	return "about_profiles"
}

// BeforeCreate 创建前钩子
func (a *AboutProfile) BeforeCreate(tx *gorm.DB) error {
	now := time.Now().Unix()
	if a.CreatedAt == 0 {
		a.CreatedAt = now
	}
	if a.UpdatedAt == 0 {
		a.UpdatedAt = now
	}
	if a.DeletedAt == 0 {
		a.DeletedAt = 0
	}
	return nil
}

// BeforeUpdate 更新前钩子
func (a *AboutProfile) BeforeUpdate(tx *gorm.DB) error {
	a.UpdatedAt = time.Now().Unix()
	return nil
}
