package com.social.media.application.content.command;

import com.social.media.domain.company.valueobject.CompanyId;
import com.social.media.domain.content.valueobject.ContentCategoryId;
import com.social.media.domain.content.valueobject.PostType;
import com.social.media.domain.user.valueobject.UserId;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;

/**
 * Command to create a new post
 */
public record CreatePostCommand(
    @NotNull(message = "Company ID is required")
    CompanyId companyId,
    
    @NotNull(message = "Author ID is required")
    UserId authorId,
    
    ContentCategoryId categoryId,
    
    @NotBlank(message = "Post title is required")
    @Size(max = 200, message = "Title must not exceed 200 characters")
    String title,
    
    @NotBlank(message = "Post content is required")
    @Size(max = 2000, message = "Content must not exceed 2000 characters")
    String content,
    
    @NotNull(message = "Post type is required")
    PostType postType,
    
    List<String> mediaIds,
    
    Set<String> targetSocialAccountIds,
    
    LocalDateTime scheduledFor,
    
    @Size(max = 500, message = "Tags must not exceed 500 characters")
    String tags,
    
    boolean isPinned
) {}

