package com.gzzm.lobster.common;

import java.util.UUID;

/**
 * 统一 ID 生成器 / Centralized ID generator.
 *
 * <p>thread / run / message / artifact / pending_request / memory 等业务对象
 * 的主键统一为 ULID 风格的短字符串。
 * Business IDs are ULID-style short strings.
 */
public final class IdGenerator {

    private IdGenerator() {}

    /** 生成一个 UUID 字符串（去掉横杠）/ Return a compact UUID (no dashes). */
    public static String uuid() {
        return UUID.randomUUID().toString().replace("-", "");
    }

    /** 带前缀的 ID / Prefixed id, e.g., {@code prefixed("th_")} -> {@code th_xxxxx}. */
    public static String prefixed(String prefix) {
        return prefix + uuid();
    }

    public static String threadId() { return prefixed("th_"); }
    public static String messageId() { return prefixed("msg_"); }
    public static String runId() { return prefixed("run_"); }
    public static String artifactId() { return prefixed("art_"); }
    public static String workspaceId() { return prefixed("ws_"); }
    public static String resourceId() { return prefixed("res_"); }
    public static String pendingId() { return prefixed("pr_"); }
    public static String memoryId() { return prefixed("mem_"); }
    public static String planId() { return prefixed("pln_"); }
    public static String planItemId() { return prefixed("pli_"); }
    public static String auditId() { return prefixed("aud_"); }
    public static String callId() { return prefixed("call_"); }
    public static String uploadId() { return prefixed("up_"); }
    public static String compactionEventId() { return prefixed("cmp_"); }
}
