/*
 * Copyright (c) 2025 SimcuTeam. All rights reserved.
 * 遵循 MIT 许可证。
 * 声明式 AES body 解密注解。
 *
 * 标注在控制器方法参数上，请求派发时（SimApiRequestDelegateFactory）自动解密并反序列化：
 *   - 读取请求体 {"data": "密文"}
 *   - 通过 keyProvider（DI 解析）获取密钥
 *   - SimApiAesUtil.decrypt 解密得到明文 JSON
 *   - simapi_serialization 按参数类型反序列化
 *
 * 用法：
 *   public func create(@AesBody request: CreateRequest): Unit {
 *
 * 说明：仓颉注解参数须为编译期常量，无法直接持有 Type；
 * 故 keyProvider 用类型名 String，运行时经 TypeInfo.get 解析后从 DI 取实例。
 */

package simcu::simapi.annotations

@Annotation[target: [Parameter]]
public class AesBody {
    /// AES 密钥提供器类型名（DI 注册的 AesBodyProviderBase 实现类名）
    public let keyProvider: String

    public const init() {
        this.keyProvider = ""
    }

    public const init(keyProvider: String) {
        this.keyProvider = keyProvider
    }
}
