package entity

import (
	"time"

	"github.com/google/uuid"
)

type Articles struct {
	ID                  uint    `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
	Title               string  `json:"title" gorm:"type:varchar"`
	Slug                string  `json:"slug" gorm:"type:varchar"`
	Description         string  `json:"description" gorm:"type:varchar"`
	CategoryId          int     `json:"category_id" gorm:"type:int4"`
	HtmlDescription     string  `json:"html_description" gorm:"type:varchar"`
	TypeId              int     `json:"type_id" gorm:"type:int4"`
	Tags                string  `json:"tags" gorm:"type:varchar"`
	ThumbnailName       *string `json:"thumbnail_name" gorm:"type:varchar"`
	ThumbnailPath       *string `json:"thumbnail_path" gorm:"type:varchar"`
	PageUrl             *string `json:"page_url" gorm:"type:varchar"`
	CreatedById         *uint   `json:"created_by_id" gorm:"type:int4"`
	AiArticleId         *int    `json:"ai_article_id" gorm:"type:int4"`
	CommentCount        *int    `json:"comment_count" gorm:"type:int4;default:0"`
	ShareCount          *int    `json:"share_count" gorm:"type:int4;default:0"`
	ViewCount           *int    `json:"view_count" gorm:"type:int4;default:0"`
	StatusId            *int    `json:"status_id" gorm:"type:int4"`
	OldId               *uint   `json:"old_id" gorm:"type:int4"`
	NeedApprovalFrom    *int    `json:"need_approval_from" gorm:"type:int4"`
	HasApprovedBy       *string `json:"has_approved_by" gorm:"type:varchar"`
	WorkflowId          *uint   `json:"workflow_id" gorm:"type:int4"`
	CurrentApprovalStep *int    `json:"current_approval_step" gorm:"type:int4;default:0"` // 0=not submitted, 1+=approval step
	// New fields for no-approval support
	BypassApproval    *bool      `json:"bypass_approval" gorm:"type:bool;default:false"` // true = skip approval process
	ApprovalExempt    *bool      `json:"approval_exempt" gorm:"type:bool;default:false"` // true = permanently exempt from approval
	IsPublish         *bool      `json:"is_publish" gorm:"type:bool;default:false"`
	IsBanner          *bool      `json:"is_banner" gorm:"type:bool;default:false"`
	PublishedAt       *time.Time `json:"published_at" gorm:"type:timestamp"`
	IsDraft           *bool      `json:"is_draft" gorm:"type:bool;default:false"`
	DraftedAt         *time.Time `json:"drafted_at" gorm:"type:timestamp"`
	PublishSchedule   *string    `json:"publish_schedule" gorm:"type:varchar"`
	Source            *string    `json:"source" gorm:"type:varchar"`
	CustomCreatorName *string    `json:"custom_creator_name" gorm:"type:varchar"`
	ClientId          *uuid.UUID `json:"client_id" gorm:"type:UUID"`
	IsActive          *bool      `json:"is_active" gorm:"type:bool;default:true"`
	CreatedAt         time.Time  `json:"created_at" gorm:"default:now()"`
	UpdatedAt         time.Time  `json:"updated_at" gorm:"default:now()"`
}
