package converter

import (
	"github.com/tidbcloud/AgentTeam/internal/api/dto"
	"github.com/tidbcloud/AgentTeam/internal/store/agent"
)

// ToProject converts a store Project to its API DTO shape.
func ToProject(p agent.Project) dto.Project {
	return dto.Project{
		ID:              p.ID,
		WorkspaceID:     p.WorkspaceID,
		MachineID:       p.MachineID,
		RootPath:        p.RootPath,
		Name:            p.Name,
		Description:     p.Description,
		Visibility:      p.Visibility,
		CurrentRole:     p.CurrentRole,
		OwnerUserID:     p.OwnerUserID,
		CreatedByUserID: p.CreatedByUserID,
		UpdatedByUserID: p.UpdatedByUserID,
		CreatedAt:       p.CreatedAt,
		UpdatedAt:       p.UpdatedAt,
	}
}

// ToProjects converts store Projects to API DTOs.
func ToProjects(projects []agent.Project) []dto.Project {
	if len(projects) == 0 {
		return []dto.Project{}
	}
	items := make([]dto.Project, 0, len(projects))
	for i := range projects {
		items = append(items, ToProject(projects[i]))
	}
	return items
}

// ToProjectGrant converts a store ProjectGrant to its API DTO shape.
func ToProjectGrant(g agent.ProjectGrant) dto.ProjectGrant {
	return dto.ProjectGrant{
		ProjectID: g.ProjectID,
		MemberID:  g.MemberID,
		Role:      g.Role,
		CreatedAt: g.CreatedAt,
		UpdatedAt: g.UpdatedAt,
	}
}

// ToProjectGrants converts store ProjectGrants to API DTOs.
func ToProjectGrants(grants []agent.ProjectGrant) []dto.ProjectGrant {
	if len(grants) == 0 {
		return []dto.ProjectGrant{}
	}
	items := make([]dto.ProjectGrant, 0, len(grants))
	for i := range grants {
		items = append(items, ToProjectGrant(grants[i]))
	}
	return items
}
