using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace AxCopilot.Models;

public class ChatConversation
{
	[JsonPropertyName("id")]
	public string Id { get; set; } = Guid.NewGuid().ToString("N");

	[JsonPropertyName("title")]
	public string Title { get; set; } = "새 대화";

	[JsonPropertyName("createdAt")]
	public DateTime CreatedAt { get; set; } = DateTime.Now;

	[JsonPropertyName("updatedAt")]
	public DateTime UpdatedAt { get; set; } = DateTime.Now;

	[JsonPropertyName("pinned")]
	public bool Pinned { get; set; } = false;

	[JsonPropertyName("tab")]
	public string Tab { get; set; } = "Chat";

	[JsonPropertyName("category")]
	public string Category { get; set; } = "일반";

	[JsonPropertyName("systemCommand")]
	public string SystemCommand { get; set; } = "";

	[JsonPropertyName("workFolder")]
	public string WorkFolder { get; set; } = "";

	[JsonPropertyName("preview")]
	public string Preview { get; set; } = "";

	[JsonPropertyName("parentId")]
	public string? ParentId { get; set; }

	[JsonPropertyName("branchLabel")]
	public string? BranchLabel { get; set; }

	[JsonPropertyName("branchAtIndex")]
	public int? BranchAtIndex { get; set; }

	[JsonPropertyName("permission")]
	public string? Permission { get; set; }

	[JsonPropertyName("dataUsage")]
	public string? DataUsage { get; set; }

	[JsonPropertyName("outputFormat")]
	public string? OutputFormat { get; set; }

	[JsonPropertyName("mood")]
	public string? Mood { get; set; }

	[JsonPropertyName("messages")]
	public List<ChatMessage> Messages { get; set; } = new List<ChatMessage>();

	[JsonPropertyName("executionEvents")]
	public List<ChatExecutionEvent> ExecutionEvents { get; set; } = new List<ChatExecutionEvent>();
}
