
package org.onetwo.boot.plugins.swagger.entity;

import io.swagger.models.ExternalDocs;
import io.swagger.models.Scheme;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

import lombok.Data;
import lombok.EqualsAndHashCode;

import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.SafeHtml;
import org.onetwo.dbm.annotation.DbmJsonField;
import org.onetwo.dbm.jpa.BaseEntity;

import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;

/***
 * swagger操作表
 * operationId，文档内唯一
 * x-api-id: id，全局唯一
 */
@SuppressWarnings("serial")
@Entity
@Table(name="api_swagger_operation")
@Data
@EqualsAndHashCode(callSuper=true)
public class SwaggerOperationEntity extends BaseEntity  {
	/***
	 * 全局唯一，id别名
	 */
	public static final String KEY_API_ID = "x-api-id";
	public static final String KEY_AUTHOR = "x-field-author";
	public static final String KEY_VINDICATOR = "x-field-vindicator";
	public static final String KEY_VERSION = "x-field-api-version";

    @Id
    //@GeneratedValue(strategy=GenerationType.IDENTITY)
//    @GeneratedValue(strategy = GenerationType.AUTO, generator="snowflake") 
//    @DbmIdGenerator(name="snowflake", generatorClass=SnowflakeGenerator.class)
    @NotNull
    String id;
    /***
     * 所属导入模块
     */
    Long moduleId;
    
    /***
     * api说明摘要
     */
    @Length(max=1000)
    @SafeHtml
    String summary;
    /***
     * 接口描述
     */
    String description;
    
    /***
     * 是否废弃
     */
    Boolean deprecated;
    
    /***
     * 请求方法
     */
    @Length(max=10)
    @SafeHtml
    String requestMethod;
    
    /***
     * 访问协议（json）
     */
    @Length(max=200)
    @SafeHtml
    @DbmJsonField
    List<Scheme> schemes;
    
    /***
     * 外部文档（json）
     */
    @Length(max=500)
    @SafeHtml
    @DbmJsonField
    ExternalDocs externaldocs;
    
    /***
     * 标签（json）
     */
    @Length(max=200)
    @SafeHtml
    @DbmJsonField
    List<String> tags;
    
    /***
     * 请求路径
     */
    @Length(max=200)
    @SafeHtml
    String path;
    
    /***
     * 
     */
    @Length(max=500)
    @SafeHtml
    String security;
    
    /***
     * 所属swagger文档
     */
    Long swaggerId;
    
    /***
     * 响应格式（json）
     */
    @Length(max=500)
    @DbmJsonField
    List<String> produces;
    
    /***
     * 请求格式（json）
     */
    @Length(max=500)
    @DbmJsonField
    List<String> consumes;
    /***
     * 文档内唯一
     */
    String operationId;

    @DbmJsonField
    Map<String, Object> vendorExtensions = new LinkedHashMap<String, Object>();
    
    //扩展属性，写成字段便于检索需求
    /***
     * 作者
     */
    String author;
    /***
     * 维护者
     */
    String vindicator;
    /***
     * 版本
     */
    String apiVersion;

    @JsonAnyGetter
    public Map<String, Object> getVendorExtensions() {
        return vendorExtensions;
    }

    @JsonAnySetter
    public void setVendorExtension(String name, Object value) {
        if (name.startsWith("x-")) {
            vendorExtensions.put(name, value);
        }
    }

    public void setVendorExtensions(Map<String, Object> vendorExtensions) {
        this.vendorExtensions = vendorExtensions;
    }
}
@@ -1004,16 +1004,34 @@
 pi-id%22;%0A
+%09/***%0A%09 * %E4%BD%9C%E8%80%85%0A%09 */%0A
 %09public 
@@ -1077,24 +1077,43 @@
 ld-author%22;%0A
+%09/***%0A%09 * %E7%BB%B4%E6%8A%A4%E8%80%85%0A%09 */%0A
 %09public stat
@@ -1167,16 +1167,37 @@
 cator%22;%0A
+%09/***%0A%09 * api%E7%89%88%E6%9C%AC%0A%09 */%0A
 %09public 

add comment