package com.storycove.dto;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;

import java.time.LocalDateTime;
import java.util.List;
import java.util.UUID;

public class AuthorDto {
    
    private UUID id;
    
    @NotBlank(message = "Author name is required")
    @Size(max = 255, message = "Author name must not exceed 255 characters")
    private String name;
    
    private String notes;
    
    private String avatarImagePath;
    private Integer authorRating;
    private Double averageStoryRating;
    private List<String> urls;
    private Integer storyCount;
    private LocalDateTime createdAt;
    private LocalDateTime updatedAt;
    
    public AuthorDto() {}
    
    public AuthorDto(String name) {
        this.name = name;
    }
    
    // Getters and Setters
    public UUID getId() {
        return id;
    }
    
    public void setId(UUID id) {
        this.id = id;
    }
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public String getNotes() {
        return notes;
    }
    
    public void setNotes(String notes) {
        this.notes = notes;
    }
    
    public String getAvatarImagePath() {
        return avatarImagePath;
    }
    
    public void setAvatarImagePath(String avatarImagePath) {
        this.avatarImagePath = avatarImagePath;
    }
    
    public Integer getAuthorRating() {
        return authorRating;
    }
    
    public void setAuthorRating(Integer authorRating) {
        this.authorRating = authorRating;
    }
    
    public Double getAverageStoryRating() {
        return averageStoryRating;
    }
    
    public void setAverageStoryRating(Double averageStoryRating) {
        this.averageStoryRating = averageStoryRating;
    }
    
    public List<String> getUrls() {
        return urls;
    }
    
    public void setUrls(List<String> urls) {
        this.urls = urls;
    }
    
    public Integer getStoryCount() {
        return storyCount;
    }
    
    public void setStoryCount(Integer storyCount) {
        this.storyCount = storyCount;
    }
    
    public LocalDateTime getCreatedAt() {
        return createdAt;
    }
    
    public void setCreatedAt(LocalDateTime createdAt) {
        this.createdAt = createdAt;
    }
    
    public LocalDateTime getUpdatedAt() {
        return updatedAt;
    }
    
    public void setUpdatedAt(LocalDateTime updatedAt) {
        this.updatedAt = updatedAt;
    }
}