// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

/*
 * Copyright (c) 杭州颉创科技有限公司 2025. All rights reserved.
 * This source file is licensed under the MIT License found in the
 * LICENSE file in the root directory of this source tree.
 */
 
package simcu::simapi.openapi

import soulsoft_web_http.*

/**
 * @brief 提供 OpenAPI 端点约定扩展。
 */
public interface OpenApiEndpointConventionBuilderExtensions {
    /**
     * @brief 为端点附加 OpenAPI 元数据。
     * @param metadata 要附加的 OpenAPI 元数据。
     * @return 当前端点约定构建器实例。
     */
    func withOpenApi(metadata: SimApiDoc): EndpointConventionBuilder
}

extend EndpointConventionBuilder <: OpenApiEndpointConventionBuilderExtensions {
    /**
     * @brief 为端点附加 API 文档元数据。
     * @param metadata 要附加的 API 文档元数据。
     * @return 当前端点约定构建器实例。
     */
    public func withOpenApi(metadata: SimApiDoc): EndpointConventionBuilder {
        this.add {
            builder => builder.metadata.add(metadata)
        }
        return this
    }
}
