package com.social.media.domain.bot.valueobject;

import java.util.Objects;
import java.util.UUID;

/**
 * Value Object representing a Bot Execution ID
 */
public record BotExecutionId(String value) {
    
    public BotExecutionId {
        Objects.requireNonNull(value, "Bot Execution ID cannot be null");
        if (value.trim().isEmpty()) {
            throw new IllegalArgumentException("Bot Execution ID cannot be empty");
        }
    }
    
    public static BotExecutionId generate() {
        return new BotExecutionId(UUID.randomUUID().toString());
    }
    
    public static BotExecutionId of(String value) {
        return new BotExecutionId(value);
    }
    
    public static BotExecutionId of(Long id) {
        return new BotExecutionId(String.valueOf(id));
    }
    
    @Override
    public String toString() {
        return value;
    }
}
