This is an automated email from the ASF dual-hosted git repository.
zhangzicheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new 04bab3a40 [type:feature] MockRequestRecordMapper development. (#4179)
04bab3a40 is described below
commit 04bab3a405388cc9dddb17c55f7ec25372baff28
Author: Shawn Jim <[email protected]>
AuthorDate: Mon Nov 14 15:40:13 2022 +0800
[type:feature] MockRequestRecordMapper development. (#4179)
* [type:feature] MockRequestRecordMapper development.
* [type:feature] Add `Base_Column_List` sql element in
mock-request-record-sqlmap.xml.
* [type:feature] Adjust db files and `insertSelective` function development.
Co-authored-by: dragon-zhang <[email protected]>
---
db/init/mysql/schema.sql | 23 +-
db/init/oracle/schema.sql | 13 +-
db/init/pg/create-table.sql | 10 +-
db/upgrade/2.5.0-upgrade-2.5.1-mysql.sql | 19 +
db/upgrade/2.5.0-upgrade-2.5.1-oracle.sql | 43 +++
db/upgrade/2.5.0-upgrade-2.5.1-pg.sql | 30 ++
.../admin/mapper/MockRequestRecordMapper.java | 107 ++++++
.../admin/model/entity/MockRequestRecordDO.java | 393 +++++++++++++++++++++
.../mappers/mock-request-record-sqlmap.xml | 266 ++++++++++++++
.../src/main/resources/sql-script/h2/schema.sql | 9 +-
.../admin/mapper/MockRequestRecordMapperTest.java | 180 ++++++++++
11 files changed, 1069 insertions(+), 24 deletions(-)
diff --git a/db/init/mysql/schema.sql b/db/init/mysql/schema.sql
index 6066a490a..718afe8ca 100644
--- a/db/init/mysql/schema.sql
+++ b/db/init/mysql/schema.sql
@@ -252,17 +252,18 @@ CREATE TABLE `meta_data` (
-- ----------------------------
DROP TABLE IF EXISTS `mock_request_record`;
CREATE TABLE `mock_request_record` (
- `id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL
COMMENT 'primary key id',
- `api_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT
NULL COMMENT 'the api id',
- `host` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL
COMMENT 'the request host',
- `port` int(5) NOT NULL COMMENT 'the request port',
- `path_variable` varchar(255) CHARACTER SET utf8mb4 COLLATE
utf8mb4_unicode_ci NOT NULL COMMENT 'the request param in url',
- `query` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT
NULL COMMENT 'the request param after url',
- `header` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT
NULL COMMENT 'the request param in header',
- `body` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL
COMMENT 'the request body',
- `date_created` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT
'create time',
- `date_updated` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE
CURRENT_TIMESTAMP(3) COMMENT 'update time',
- PRIMARY KEY (`id`) USING BTREE
+ `id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT
NULL COMMENT 'primary key id',
+ `api_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT
NULL COMMENT 'the api id',
+ `host` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT
NULL COMMENT 'the request host',
+ `port` int(5) NOT NULL COMMENT 'the request port',
+ `url` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT
NULL COMMENT 'the request url',
+ `path_variable` varchar(255) CHARACTER SET utf8mb4 COLLATE
utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT 'the request param in url',
+ `query` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT
NULL DEFAULT '' COMMENT 'the request param after url',
+ `header` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
NOT NULL DEFAULT '' COMMENT 'the request param in header',
+ `body` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT 'the
request body',
+ `date_created` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT
'create time',
+ `date_updated` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON
UPDATE CURRENT_TIMESTAMP(3) COMMENT 'update time',
+ PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci
ROW_FORMAT = Dynamic;
-- ----------------------------
diff --git a/db/init/oracle/schema.sql b/db/init/oracle/schema.sql
index b79d80d98..6dec8aab4 100644
--- a/db/init/oracle/schema.sql
+++ b/db/init/oracle/schema.sql
@@ -290,13 +290,14 @@ create table mock_request_record
api_id VARCHAR2(128) not null,
host VARCHAR2(32) not null,
port NUMBER(5) not null,
- path_variable VARCHAR2(255) not null,
- query VARCHAR2(1024) not null,
- header VARCHAR2(1024) not null,
- body CLOB not null,
+ url VARCHAR2(1024) not null,
+ path_variable VARCHAR2(255) default '' not null,
+ query VARCHAR2(1024) default '' not null,
+ header VARCHAR2(1024) default '' not null,
+ body CLOB,
date_created timestamp(3) default SYSDATE not null,
date_updated timestamp(3) default SYSDATE not null
-)
+);
-- Add comments to the table
comment on table MOCK_REQUEST_RECORD
is 'mock request records';
@@ -309,6 +310,8 @@ comment on column MOCK_REQUEST_RECORD.host
is 'the request host';
comment on column MOCK_REQUEST_RECORD.port
is 'the request port';
+comment on column MOCK_REQUEST_RECORD.url
+ is 'the request url';
comment on column MOCK_REQUEST_RECORD.path_variable
is 'the request param in url';
comment on column MOCK_REQUEST_RECORD.query
diff --git a/db/init/pg/create-table.sql b/db/init/pg/create-table.sql
index de2b6f1f4..93ec208b6 100644
--- a/db/init/pg/create-table.sql
+++ b/db/init/pg/create-table.sql
@@ -345,10 +345,11 @@ CREATE TABLE "public"."mock_request_record" (
"api_id" varchar(128) COLLATE "pg_catalog"."default" NOT NULL,
"host" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"port" int4 NOT NULL,
- "path_variable" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
- "query" varchar(1024) COLLATE "pg_catalog"."default" NOT NULL,
- "header" varchar(1024) COLLATE "pg_catalog"."default" NOT NULL,
- "body" text COLLATE "pg_catalog"."default" NOT NULL,
+ "url" varchar(1024) COLLATE "pg_catalog"."default" NOT NULL,
+ "path_variable" varchar(255) COLLATE "pg_catalog"."default" NOT NULL DEFAULT
'',
+ "query" varchar(1024) COLLATE "pg_catalog"."default" NOT NULL DEFAULT '',
+ "header" varchar(1024) COLLATE "pg_catalog"."default" NOT NULL DEFAULT '',
+ "body" text COLLATE "pg_catalog"."default",
"date_created" timestamp(6) NOT NULL DEFAULT timezone('UTC-8'::text,
(now())::timestamp(0) without time zone),
"date_updated" timestamp(6) NOT NULL DEFAULT timezone('UTC-8'::text,
(now())::timestamp(0) without time zone)
)
@@ -357,6 +358,7 @@ COMMENT ON COLUMN "public"."mock_request_record"."id" IS
'id';
COMMENT ON COLUMN "public"."mock_request_record"."api_id" IS 'the api id';
COMMENT ON COLUMN "public"."mock_request_record"."host" IS 'the request host';
COMMENT ON COLUMN "public"."mock_request_record"."port" IS 'the request port';
+COMMENT ON COLUMN "public"."mock_request_record"."url" IS 'the request url';
COMMENT ON COLUMN "public"."mock_request_record"."path_variable" IS 'the
request param in url';
COMMENT ON COLUMN "public"."mock_request_record"."query" IS 'the request param
after url';
COMMENT ON COLUMN "public"."mock_request_record"."header" IS 'the request
param in header';
diff --git a/db/upgrade/2.5.0-upgrade-2.5.1-mysql.sql
b/db/upgrade/2.5.0-upgrade-2.5.1-mysql.sql
index 27d9871b9..feb9568f2 100644
--- a/db/upgrade/2.5.0-upgrade-2.5.1-mysql.sql
+++ b/db/upgrade/2.5.0-upgrade-2.5.1-mysql.sql
@@ -270,3 +270,22 @@ INSERT INTO `plugin_handle` VALUES ('1529402613204172769',
'38', 'maskStatus', '
/* insert plugin for keyAuth */
INSERT INTO `plugin` VALUES ('40', 'keyAuth', NULL, 'Authentication', 150, 0,
'2022-07-24 19:00:00', '2022-07-24 19:00:00');
+
+-- ----------------------------
+-- Table structure for mock_request_record
+-- ----------------------------
+DROP TABLE IF EXISTS `mock_request_record`;
+CREATE TABLE `mock_request_record` (
+ `id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT
NULL COMMENT 'primary key id',
+ `api_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT
NULL COMMENT 'the api id',
+ `host` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT
NULL COMMENT 'the request host',
+ `port` int(5) NOT NULL COMMENT 'the request port',
+ `url` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT
NULL COMMENT 'the request url',
+ `path_variable` varchar(255) CHARACTER SET utf8mb4 COLLATE
utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT 'the request param in url',
+ `query` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT
NULL DEFAULT '' COMMENT 'the request param after url',
+ `header` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
NOT NULL DEFAULT '' COMMENT 'the request param in header',
+ `body` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT 'the
request body',
+ `date_created` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT
'create time',
+ `date_updated` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON
UPDATE CURRENT_TIMESTAMP(3) COMMENT 'update time',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci
ROW_FORMAT = Dynamic;
\ No newline at end of file
diff --git a/db/upgrade/2.5.0-upgrade-2.5.1-oracle.sql
b/db/upgrade/2.5.0-upgrade-2.5.1-oracle.sql
index 06afd7d46..1aefb5423 100644
--- a/db/upgrade/2.5.0-upgrade-2.5.1-oracle.sql
+++ b/db/upgrade/2.5.0-upgrade-2.5.1-oracle.sql
@@ -282,3 +282,46 @@ values ('1518229897214468254', '38', 'maskStatus',
'maskStatus', 3, 2, 2, '{"req
-- insert keyAuth plugin start
INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin(id)) */ INTO plugin (id, name,
role, sort, enabled) VALUES ('40', 'keyAuth', 'Authentication', 150, '0');
-- insert keyAuth plugin end
+
+-- create mock_request_record table start
+create table mock_request_record
+(
+ id VARCHAR2(128) not null PRIMARY KEY,
+ api_id VARCHAR2(128) not null,
+ host VARCHAR2(32) not null,
+ port NUMBER(5) not null,
+ url VARCHAR2(1024) not null,
+ path_variable VARCHAR2(255) default '' not null,
+ query VARCHAR2(1024) default '' not null,
+ header VARCHAR2(1024) default '' not null,
+ body CLOB,
+ date_created timestamp(3) default SYSDATE not null,
+ date_updated timestamp(3) default SYSDATE not null
+);
+-- Add comments to the table
+comment on table MOCK_REQUEST_RECORD
+ is 'mock request records';
+-- Add comments to the columns
+comment on column MOCK_REQUEST_RECORD.id
+ is 'id';
+comment on column MOCK_REQUEST_RECORD.api_id
+ is 'the api id';
+comment on column MOCK_REQUEST_RECORD.host
+ is 'the request host';
+comment on column MOCK_REQUEST_RECORD.port
+ is 'the request port';
+comment on column MOCK_REQUEST_RECORD.url
+ is 'the request url';
+comment on column MOCK_REQUEST_RECORD.path_variable
+ is 'the request param in url';
+comment on column MOCK_REQUEST_RECORD.query
+ is 'the request param after url';
+comment on column MOCK_REQUEST_RECORD.header
+ is 'the request param in header';
+comment on column MOCK_REQUEST_RECORD.body
+ is 'the request body';
+comment on column MOCK_REQUEST_RECORD.date_created
+ is 'create time';
+comment on column MOCK_REQUEST_RECORD.date_updated
+ is 'update time';
+-- create mock_request_record table end
\ No newline at end of file
diff --git a/db/upgrade/2.5.0-upgrade-2.5.1-pg.sql
b/db/upgrade/2.5.0-upgrade-2.5.1-pg.sql
index 001d83d28..b25f04261 100644
--- a/db/upgrade/2.5.0-upgrade-2.5.1-pg.sql
+++ b/db/upgrade/2.5.0-upgrade-2.5.1-pg.sql
@@ -273,3 +273,33 @@ INSERT INTO "public"."plugin_handle" VALUES
('1529402613204172830', '38', 'maskS
/* insert plugin for keyAuth */
INSERT INTO "public"."plugin" VALUES ('40', 'keyAuth', NULL, 'Authentication',
150, 0, '2022-07-24 19:00:00', '2022-07-24 19:00:00');
+
+-- ----------------------------
+-- Table structure for mock_request_record
+-- ----------------------------
+DROP TABLE IF EXISTS "public"."mock_request_record";
+CREATE TABLE "public"."mock_request_record" (
+ "id" varchar(128) COLLATE "pg_catalog"."default" NOT NULL,
+ "api_id" varchar(128) COLLATE "pg_catalog"."default" NOT NULL,
+ "host" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
+ "port" int4 NOT NULL,
+ "url" varchar(1024) COLLATE "pg_catalog"."default" NOT NULL,
+ "path_variable" varchar(255) COLLATE "pg_catalog"."default" NOT NULL
DEFAULT '',
+ "query" varchar(1024) COLLATE "pg_catalog"."default" NOT NULL DEFAULT '',
+ "header" varchar(1024) COLLATE "pg_catalog"."default" NOT NULL DEFAULT '',
+ "body" text COLLATE "pg_catalog"."default",
+ "date_created" timestamp(6) NOT NULL DEFAULT timezone('UTC-8'::text,
(now())::timestamp(0) without time zone),
+ "date_updated" timestamp(6) NOT NULL DEFAULT timezone('UTC-8'::text,
(now())::timestamp(0) without time zone)
+)
+;
+COMMENT ON COLUMN "public"."mock_request_record"."id" IS 'id';
+COMMENT ON COLUMN "public"."mock_request_record"."api_id" IS 'the api id';
+COMMENT ON COLUMN "public"."mock_request_record"."host" IS 'the request host';
+COMMENT ON COLUMN "public"."mock_request_record"."port" IS 'the request port';
+COMMENT ON COLUMN "public"."mock_request_record"."url" IS 'the request url';
+COMMENT ON COLUMN "public"."mock_request_record"."path_variable" IS 'the
request param in url';
+COMMENT ON COLUMN "public"."mock_request_record"."query" IS 'the request param
after url';
+COMMENT ON COLUMN "public"."mock_request_record"."header" IS 'the request
param in header';
+COMMENT ON COLUMN "public"."mock_request_record"."body" IS 'the request body';
+COMMENT ON COLUMN "public"."mock_request_record"."date_created" IS 'create
time';
+COMMENT ON COLUMN "public"."mock_request_record"."date_updated" IS 'update
time';
\ No newline at end of file
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/mapper/MockRequestRecordMapper.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/mapper/MockRequestRecordMapper.java
new file mode 100644
index 000000000..d84ec4414
--- /dev/null
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/mapper/MockRequestRecordMapper.java
@@ -0,0 +1,107 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.admin.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.shenyu.admin.model.entity.MockRequestRecordDO;
+import org.apache.shenyu.admin.validation.ExistProvider;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * This is Mock Request Record Mapper.
+ */
+@Mapper
+public interface MockRequestRecordMapper extends ExistProvider {
+
+ /**
+ * exiated.
+ *
+ * @param id id
+ * @return existed
+ */
+ @Override
+ Boolean existed(@Param("id") Serializable id);
+
+ /**
+ * Select by primary key.
+ *
+ * @param id primary key
+ * @return the value of {@linkplain MockRequestRecordDO}
+ */
+ MockRequestRecordDO queryById(String id);
+
+ /**
+ * Select by condition.
+ *
+ * @param mockRequestRecordDO condition
+ * @return The value of {@linkplain List}
+ */
+ List<MockRequestRecordDO> queryAll(@Param("item") MockRequestRecordDO
mockRequestRecordDO);
+
+ /**
+ * Count with condition.
+ *
+ * @param mockRequestRecordDO condition
+ * @return The value of count result
+ */
+ long count(MockRequestRecordDO mockRequestRecordDO);
+
+ /**
+ * Insert record.
+ *
+ * @param mockRequestRecordDO record
+ * @return The value of insert count
+ */
+ int insert(MockRequestRecordDO mockRequestRecordDO);
+
+ /**
+ * Insert selective.
+ * @param mockRequestRecordDO record
+ * @return Number of rows affected
+ */
+ int insertSelective(MockRequestRecordDO mockRequestRecordDO);
+
+ /**
+ * Insert batch.
+ *
+ * @param list data list
+ * @return Number of rows affected
+ */
+ int insertBatch(@Param("list") List<MockRequestRecordDO> list);
+
+ /**
+ * Update.
+ *
+ * @param mockRequestRecordDO record
+ * @return Number of rows affected
+ */
+ int update(MockRequestRecordDO mockRequestRecordDO);
+
+ /**
+ * Delete by primary key.
+ *
+ * @param id primary key
+ * @return Number of rows affected
+ */
+ int deleteById(String id);
+
+}
+
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/MockRequestRecordDO.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/MockRequestRecordDO.java
new file mode 100644
index 000000000..a5e5a84bf
--- /dev/null
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/MockRequestRecordDO.java
@@ -0,0 +1,393 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.admin.model.entity;
+
+import java.sql.Timestamp;
+
+/**
+ * The Mock Request Record Entity.
+ */
+public class MockRequestRecordDO extends BaseDO {
+
+ private static final long serialVersionUID = -30960666013060928L;
+
+ /**
+ * the api id.
+ */
+ private String apiId;
+
+ /**
+ * the request host.
+ */
+ private String host;
+
+ /**
+ * the request port.
+ */
+ private Integer port;
+
+ /**
+ * the request url.
+ */
+ private String url;
+
+ /**
+ * the request param in url.
+ */
+ private String pathVariable;
+
+ /**
+ * the request param after url.
+ */
+ private String query;
+
+ /**
+ * the request param in header.
+ */
+ private String header;
+
+ /**
+ * the request body.
+ */
+ private String body;
+
+ /**
+ * Gets the value of apiId.
+ *
+ * @return the value of apiId
+ */
+ public String getApiId() {
+ return apiId;
+ }
+
+ /**
+ * Sets the apiId.
+ *
+ * @param apiId apiId
+ */
+ public void setApiId(final String apiId) {
+ this.apiId = apiId;
+ }
+
+ /**
+ * Gets the value of host.
+ *
+ * @return the value of host
+ */
+ public String getHost() {
+ return host;
+ }
+
+ /**
+ * Sets the host.
+ *
+ * @param host host
+ */
+ public void setHost(final String host) {
+ this.host = host;
+ }
+
+ /**
+ * Gets the value of port.
+ *
+ * @return the value of port
+ */
+ public Integer getPort() {
+ return port;
+ }
+
+ /**
+ * Sets the port.
+ *
+ * @param port port
+ */
+ public void setPort(final Integer port) {
+ this.port = port;
+ }
+
+ /**
+ * Gets the value of url.
+ *
+ * @return the value of url
+ */
+ public String getUrl() {
+ return url;
+ }
+
+ /**
+ * Sets the url.
+ *
+ * @param url url
+ */
+ public void setUrl(final String url) {
+ this.url = url;
+ }
+
+ /**
+ * Gets the value of pathVariable.
+ *
+ * @return the value of pathVariable
+ */
+ public String getPathVariable() {
+ return pathVariable;
+ }
+
+ /**
+ * Sets the pathVariable.
+ *
+ * @param pathVariable pathVariable
+ */
+ public void setPathVariable(final String pathVariable) {
+ this.pathVariable = pathVariable;
+ }
+
+ /**
+ * Gets the value of query.
+ *
+ * @return the value of query
+ */
+ public String getQuery() {
+ return query;
+ }
+
+ /**
+ * Sets the query.
+ *
+ * @param query query
+ */
+ public void setQuery(final String query) {
+ this.query = query;
+ }
+
+ /**
+ * Gets the value of header.
+ *
+ * @return the value of header
+ */
+ public String getHeader() {
+ return header;
+ }
+
+ /**
+ * Sets the header.
+ *
+ * @param header header
+ */
+ public void setHeader(final String header) {
+ this.header = header;
+ }
+
+ /**
+ * Gets the value of body.
+ *
+ * @return the value of body
+ */
+ public String getBody() {
+ return body;
+ }
+
+ /**
+ * Sets the body.
+ *
+ * @param body body
+ */
+ public void setBody(final String body) {
+ this.body = body;
+ }
+
+ /**
+ * builder.
+ *
+ * @return {@linkplain MockRequestRecordDOBuilder}
+ */
+ public static MockRequestRecordDOBuilder builder() {
+ return new MockRequestRecordDOBuilder();
+ }
+
+ public static final class MockRequestRecordDOBuilder {
+
+ private String id;
+
+ private String apiId;
+
+ private String host;
+
+ private Integer port;
+
+ private String url;
+
+ private String pathVariable;
+
+ private String query;
+
+ private String header;
+
+ private String body;
+
+ private Timestamp dateCreated;
+
+ private Timestamp dateUpdated;
+
+ public MockRequestRecordDOBuilder() {
+ }
+
+ /**
+ * id.
+ *
+ * @param id the id.
+ * @return MockRequestRecordDOBuilder.
+ */
+ public MockRequestRecordDOBuilder id(final String id) {
+ this.id = id;
+ return this;
+ }
+
+ /**
+ * dateCreated.
+ *
+ * @param dateCreated the dateCreated.
+ * @return MockRequestRecordDOBuilder.
+ */
+ public MockRequestRecordDOBuilder dateCreated(final Timestamp
dateCreated) {
+ this.dateCreated = dateCreated;
+ return this;
+ }
+
+ /**
+ * dateUpdated.
+ *
+ * @param dateUpdated the dateUpdated.
+ * @return MockRequestRecordDOBuilder.
+ */
+ public MockRequestRecordDOBuilder dateUpdated(final Timestamp
dateUpdated) {
+ this.dateUpdated = dateUpdated;
+ return this;
+ }
+
+ /**
+ * Sets the apiId.
+ *
+ * @param apiId apiId
+ * @return MockRequestRecordDOBuilder.
+ */
+ public MockRequestRecordDOBuilder apiId(final String apiId) {
+ this.apiId = apiId;
+ return this;
+ }
+
+ /**
+ * Sets the host.
+ *
+ * @param host host
+ * @return MockRequestRecordDOBuilder.
+ */
+ public MockRequestRecordDOBuilder host(final String host) {
+ this.host = host;
+ return this;
+ }
+
+ /**
+ * Sets the port.
+ *
+ * @param port port
+ * @return MockRequestRecordDOBuilder.
+ */
+ public MockRequestRecordDOBuilder port(final Integer port) {
+ this.port = port;
+ return this;
+ }
+
+ /**
+ * Sets the url.
+ *
+ * @param url url
+ * @return MockRequestRecordDOBuilder.
+ */
+ public MockRequestRecordDOBuilder url(final String url) {
+ this.url = url;
+ return this;
+ }
+
+ /**
+ * Sets the pathVariable.
+ *
+ * @param pathVariable pathVariable
+ * @return MockRequestRecordDOBuilder.
+ */
+ public MockRequestRecordDOBuilder pathVariable(final String
pathVariable) {
+ this.pathVariable = pathVariable;
+ return this;
+ }
+
+ /**
+ * Sets the query.
+ *
+ * @param query query
+ * @return MockRequestRecordDOBuilder.
+ */
+ public MockRequestRecordDOBuilder query(final String query) {
+ this.query = query;
+ return this;
+ }
+
+ /**
+ * Sets the header.
+ *
+ * @param header header
+ * @return MockRequestRecordDOBuilder.
+ */
+ public MockRequestRecordDOBuilder header(final String header) {
+ this.header = header;
+ return this;
+ }
+
+ /**
+ * Sets the body.
+ *
+ * @param body body
+ * @return MockRequestRecordDOBuilder.
+ */
+ public MockRequestRecordDOBuilder body(final String body) {
+ this.body = body;
+ return this;
+ }
+
+ /**
+ * build MockRequestRecordDO.
+ *
+ * @return {@linkplain MockRequestRecordDO}
+ */
+ public MockRequestRecordDO build() {
+ MockRequestRecordDO mockRequestRecordDO = new
MockRequestRecordDO();
+ mockRequestRecordDO.setId(id);
+ mockRequestRecordDO.setApiId(apiId);
+ mockRequestRecordDO.setBody(body);
+ mockRequestRecordDO.setHeader(header);
+ mockRequestRecordDO.setHost(host);
+ mockRequestRecordDO.setPort(port);
+ mockRequestRecordDO.setUrl(url);
+ mockRequestRecordDO.setPathVariable(pathVariable);
+ mockRequestRecordDO.setQuery(query);
+ mockRequestRecordDO.setDateCreated(dateCreated);
+ mockRequestRecordDO.setDateUpdated(dateUpdated);
+ return mockRequestRecordDO;
+ }
+ }
+
+}
+
diff --git
a/shenyu-admin/src/main/resources/mappers/mock-request-record-sqlmap.xml
b/shenyu-admin/src/main/resources/mappers/mock-request-record-sqlmap.xml
new file mode 100644
index 000000000..48a4f64e5
--- /dev/null
+++ b/shenyu-admin/src/main/resources/mappers/mock-request-record-sqlmap.xml
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.apache.shenyu.admin.mapper.MockRequestRecordMapper">
+ <resultMap id="MockRequestRecordMap"
type="org.apache.shenyu.admin.model.entity.MockRequestRecordDO">
+ <id property="id" column="id" jdbcType="VARCHAR"/>
+ <result property="apiId" column="api_id" jdbcType="VARCHAR"/>
+ <result property="host" column="host" jdbcType="VARCHAR"/>
+ <result property="port" column="port" jdbcType="INTEGER"/>
+ <result property="pathVariable" column="path_variable"
jdbcType="VARCHAR"/>
+ <result property="query" column="query" jdbcType="VARCHAR"/>
+ <result property="header" column="header" jdbcType="VARCHAR"/>
+ <result property="body" column="body" jdbcType="VARCHAR"/>
+ <result property="dateCreated" column="date_created"
jdbcType="TIMESTAMP"/>
+ <result property="dateUpdated" column="date_updated"
jdbcType="TIMESTAMP"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id, api_id, host, port, url, path_variable, query, header, body,
date_created, date_updated
+ </sql>
+
+ <select id="queryById" resultMap="MockRequestRecordMap">
+ select
+ <include refid="Base_Column_List"/>
+ from mock_request_record
+ where id = #{id}
+ </select>
+
+ <select id="queryAll" resultMap="MockRequestRecordMap">
+ select
+ <include refid="Base_Column_List"/>
+ from mock_request_record
+ <where>
+ <if test="item.id != null and item.id != ''">
+ and id = #{item.id}
+ </if>
+ <if test="item.apiId != null and item.apiId != ''">
+ and api_id = #{item.apiId}
+ </if>
+ <if test="item.host != null and item.host != ''">
+ and host = #{item.host}
+ </if>
+ <if test="item.port != null">
+ and port = #{item.port}
+ </if>
+ <if test="item.url != null and item.url != ''">
+ and url = #{item.url}
+ </if>
+ <if test="item.pathVariable != null and item.pathVariable != ''">
+ and path_variable = #{item.pathVariable}
+ </if>
+ <if test="item.query != null and item.query != ''">
+ and query = #{item.query}
+ </if>
+ <if test="item.header != null and item.header != ''">
+ and header = #{item.header}
+ </if>
+ <if test="item.body != null and item.body != ''">
+ and body = #{item.body}
+ </if>
+ <if test="item.dateCreated != null">
+ and date_created = #{item.dateCreated}
+ </if>
+ <if test="item.dateUpdated != null">
+ and date_updated = #{item.dateUpdated}
+ </if>
+ </where>
+ </select>
+
+ <select id="count" resultType="java.lang.Long">
+ select count(1)
+ from mock_request_record
+ <where>
+ <if test="id != null and id != ''">
+ and id = #{id}
+ </if>
+ <if test="apiId != null and apiId != ''">
+ and api_id = #{apiId}
+ </if>
+ <if test="host != null and host != ''">
+ and host = #{host}
+ </if>
+ <if test="port != null">
+ and port = #{port}
+ </if>
+ <if test="url != null and url != ''">
+ and url = #{url}
+ </if>
+ <if test="pathVariable != null and pathVariable != ''">
+ and path_variable = #{pathVariable}
+ </if>
+ <if test="query != null and query != ''">
+ and query = #{query}
+ </if>
+ <if test="header != null and header != ''">
+ and header = #{header}
+ </if>
+ <if test="body != null and body != ''">
+ and body = #{body}
+ </if>
+ <if test="dateCreated != null">
+ and date_created = #{dateCreated}
+ </if>
+ <if test="dateUpdated != null">
+ and date_updated = #{dateUpdated}
+ </if>
+ </where>
+ </select>
+
+ <select id="existed" resultType="java.lang.Boolean">
+ SELECT true
+ FROM mock_request_record
+ WHERE id = #{id}
+ LIMIT 1
+ </select>
+
+ <insert id="insert" keyProperty="id" useGeneratedKeys="true">
+ insert into mock_request_record(
+ id,
+ api_id,
+ host,
+ port,
+ url,
+ path_variable,
+ query,
+ header,
+ body,
+ date_created,
+ date_updated
+ )
+ values (
+ #{id},
+ #{apiId},
+ #{host},
+ #{port},
+ #{url},
+ #{pathVariable},
+ #{query},
+ #{header},
+ #{body},
+ #{dateCreated},
+ #{dateUpdated}
+ )
+ </insert>
+
+ <insert id="insertSelective" keyColumn="id" keyProperty="id"
useGeneratedKeys="true">
+ insert into mock_request_record
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ id,
+ api_id,
+ host,
+ port,
+ url,
+ <if test="pathVariable != null">path_variable,</if>
+ <if test="query != null">query,</if>
+ <if test="header != null">header,</if>
+ <if test="body != null">body,</if>
+ <if test="dateCreated != null">date_created,</if>
+ <if test="dateUpdated != null">date_updated,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ #{id,jdbcType=VARCHAR},
+ #{apiId,jdbcType=VARCHAR},
+ #{host,jdbcType=VARCHAR},
+ #{port,jdbcType=INTEGER},
+ #{url,jdbcType=VARCHAR},
+ <if test="pathVariable !=
null">#{pathVariable,jdbcType=VARCHAR},</if>
+ <if test="query != null">#{query,jdbcType=VARCHAR},</if>
+ <if test="header != null">#{header,jdbcType=VARCHAR},</if>
+ <if test="body != null">#{body,jdbcType=VARCHAR},</if>
+ <if test="dateCreated !=
null">#{dateCreated,jdbcType=TIMESTAMP},</if>
+ <if test="dateUpdated !=
null">#{dateUpdated,jdbcType=TIMESTAMP},</if>
+ </trim>
+ </insert>
+
+ <insert id="insertBatch" keyProperty="id" useGeneratedKeys="true">
+ insert into mock_request_record(
+ id,
+ api_id,
+ host,
+ port,
+ url,
+ path_variable,
+ query,
+ header,
+ body,
+ date_created,
+ date_updated
+ )
+ values
+ <foreach collection="list" item="item" separator=",">
+ (
+ #{item.id},
+ #{item.apiId},
+ #{item.host},
+ #{item.port},
+ #{item.url},
+ #{item.pathVariable},
+ #{item.query},
+ #{item.header},
+ #{item.body},
+ #{item.dateCreated},
+ #{item.dateUpdated}
+ )
+ </foreach>
+ </insert>
+
+ <update id="update">
+ update mock_request_record
+ <set>
+ <if test="apiId != null and apiId != ''">
+ api_id = #{apiId},
+ </if>
+ <if test="host != null and host != ''">
+ host = #{host},
+ </if>
+ <if test="port != null">
+ port = #{port},
+ </if>
+ <if test="url != null and url != ''">
+ url = #{url},
+ </if>
+ <if test="pathVariable != null and pathVariable != ''">
+ path_variable = #{pathVariable},
+ </if>
+ <if test="query != null and query != ''">
+ query = #{query},
+ </if>
+ <if test="header != null and header != ''">
+ header = #{header},
+ </if>
+ <if test="body != null and body != ''">
+ body = #{body},
+ </if>
+ <if test="dateCreated != null">
+ date_created = #{dateCreated},
+ </if>
+ <if test="dateUpdated != null">
+ date_updated = #{dateUpdated},
+ </if>
+ </set>
+ where id = #{id}
+ </update>
+
+ <delete id="deleteById">
+ delete from mock_request_record where id = #{id}
+ </delete>
+
+</mapper>
+
diff --git a/shenyu-admin/src/main/resources/sql-script/h2/schema.sql
b/shenyu-admin/src/main/resources/sql-script/h2/schema.sql
index 3eef9394b..7c1fd2168 100755
--- a/shenyu-admin/src/main/resources/sql-script/h2/schema.sql
+++ b/shenyu-admin/src/main/resources/sql-script/h2/schema.sql
@@ -129,10 +129,11 @@ CREATE TABLE IF NOT EXISTS `mock_request_record` (
`api_id` varchar(128) NOT NULL COMMENT 'the api id',
`host` varchar(32) NOT NULL COMMENT 'the request host',
`port` int(5) NOT NULL COMMENT 'the request port',
- `path_variable` varchar(255) NOT NULL COMMENT 'the request param in url',
- `query` varchar(1024) NOT NULL COMMENT 'the request param after url',
- `header` varchar(1024) NOT NULL COMMENT 'the request param in header',
- `body` text NOT NULL COMMENT 'the request body',
+ `url` varchar(1024) NOT NULL COMMENT 'the request url',
+ `path_variable` varchar(255) NOT NULL DEFAULT '' COMMENT 'the request param
in url',
+ `query` varchar(1024) NOT NULL DEFAULT '' COMMENT 'the request param after
url',
+ `header` varchar(1024) NOT NULL DEFAULT '' COMMENT 'the request param in
header',
+ `body` text COMMENT 'the request body',
`date_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'create
time',
`date_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP COMMENT 'update time',
PRIMARY KEY (`id`)
diff --git
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/mapper/MockRequestRecordMapperTest.java
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/mapper/MockRequestRecordMapperTest.java
new file mode 100644
index 000000000..ae6011a2e
--- /dev/null
+++
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/mapper/MockRequestRecordMapperTest.java
@@ -0,0 +1,180 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.admin.mapper;
+
+import org.apache.shenyu.admin.AbstractSpringIntegrationTest;
+import org.apache.shenyu.admin.model.entity.MockRequestRecordDO;
+import org.apache.shenyu.common.utils.UUIDUtils;
+import org.junit.jupiter.api.Test;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.sql.Timestamp;
+import java.util.Arrays;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * Test cases for ShenyuDictMapper.
+ */
+public class MockRequestRecordMapperTest extends AbstractSpringIntegrationTest
{
+
+ @Resource
+ private MockRequestRecordMapper mockRequestRecordMapper;
+
+ @Test
+ @Transactional
+ public void insert() {
+ assertEquals(mockRequestRecordMapper.insert(buildTagDO()), 1);
+ }
+
+ @Test
+ @Transactional
+ public void insertSelective() {
+ MockRequestRecordDO mockRequestRecordDO = buildTagDO();
+ mockRequestRecordDO.setPathVariable(null);
+ mockRequestRecordDO.setQuery(null);
+ mockRequestRecordDO.setHeader(null);
+ mockRequestRecordDO.setBody(null);
+
assertEquals(mockRequestRecordMapper.insertSelective(mockRequestRecordDO), 1);
+ MockRequestRecordDO queryResult =
mockRequestRecordMapper.queryById(mockRequestRecordDO.getId());
+ assertEquals(queryResult.getPathVariable(), "");
+ assertEquals(queryResult.getQuery(), "");
+ assertEquals(queryResult.getHeader(), "");
+ assertEquals(queryResult.getBody(), null);
+ }
+
+ @Test
+ @Transactional
+ public void insertBatch() {
+ List<MockRequestRecordDO> mockRequestRecordDOS =
Arrays.asList(buildTagDO(), buildTagDO(), buildTagDO());
+
assertEquals(mockRequestRecordMapper.insertBatch(mockRequestRecordDOS), 3);
+ }
+
+ @Test
+ @Transactional
+ public void deleteById() {
+ MockRequestRecordDO mockRequestRecordDO = buildTagDO();
+ assertEquals(mockRequestRecordMapper.insert(mockRequestRecordDO), 1);
+
assertEquals(mockRequestRecordMapper.deleteById(mockRequestRecordDO.getId()),
1);
+ assertEquals(mockRequestRecordMapper.count(mockRequestRecordDO), 0);
+ }
+
+ @Test
+ @Transactional
+ public void queryById() {
+ MockRequestRecordDO mockRequestRecordDO = buildTagDO();
+ assertEquals(mockRequestRecordMapper.insert(mockRequestRecordDO), 1);
+ MockRequestRecordDO queryResult =
mockRequestRecordMapper.queryById(mockRequestRecordDO.getId());
+ assertEquals(queryResult.getDateCreated(),
mockRequestRecordDO.getDateCreated());
+ assertEquals(queryResult.getDateUpdated(),
mockRequestRecordDO.getDateUpdated());
+ assertEquals(queryResult.getApiId(), mockRequestRecordDO.getApiId());
+ assertEquals(queryResult.getBody(), mockRequestRecordDO.getBody());
+ assertEquals(queryResult.getHeader(), mockRequestRecordDO.getHeader());
+ assertEquals(queryResult.getHost(), mockRequestRecordDO.getHost());
+ assertEquals(queryResult.getPathVariable(),
mockRequestRecordDO.getPathVariable());
+ assertEquals(queryResult.getPort(), mockRequestRecordDO.getPort());
+ assertEquals(queryResult.getQuery(), mockRequestRecordDO.getQuery());
+ }
+
+ @Test
+ @Transactional
+ public void queryAll() {
+ MockRequestRecordDO mockRequestRecordDO = buildTagDO();
+ assertEquals(mockRequestRecordMapper.insert(mockRequestRecordDO), 1);
+ List<MockRequestRecordDO> mockRequestRecordDOS =
mockRequestRecordMapper.queryAll(mockRequestRecordDO);
+ assertEquals(mockRequestRecordDOS.size(), 1);
+ assertEquals(mockRequestRecordDO, mockRequestRecordDOS.get(0));
+ }
+
+ @Test
+ @Transactional
+ public void existed() {
+ MockRequestRecordDO mockRequestRecordDO = buildTagDO();
+
assertNull(mockRequestRecordMapper.existed(mockRequestRecordDO.getId()));
+ int insertRows = mockRequestRecordMapper.insert(mockRequestRecordDO);
+ assertEquals(insertRows, 1);
+
assertTrue(mockRequestRecordMapper.existed(mockRequestRecordDO.getId()));
+ }
+
+ @Test
+ @Transactional
+ public void count() {
+ List<MockRequestRecordDO> mockRequestRecordDOS =
Arrays.asList(buildTagDO(), buildTagDO(), buildTagDO());
+ int insertRows =
mockRequestRecordMapper.insertBatch(mockRequestRecordDOS);
+ assertEquals(insertRows, 3);
+ MockRequestRecordDO queryRecord = buildTagDO();
+ queryRecord.setId(null);
+ queryRecord.setDateCreated(null);
+ queryRecord.setDateUpdated(null);
+ long count = mockRequestRecordMapper.count(queryRecord);
+ assertEquals(count, 3);
+ }
+
+ @Test
+ @Transactional
+ public void update() {
+ MockRequestRecordDO mockRequestRecordDO = buildTagDO();
+ int insertRows = mockRequestRecordMapper.insert(mockRequestRecordDO);
+ assertEquals(insertRows, 1);
+ MockRequestRecordDO updateRecord = MockRequestRecordDO.builder()
+ .id(mockRequestRecordDO.getId())
+ .apiId("2")
+ .body("{\"name\": \"romeo\"}")
+ .header("userId: 2;")
+ .host("192.168.1.2")
+ .pathVariable("/mock/test1")
+ .port(8081)
+ .query("test query")
+ .dateUpdated(new Timestamp(System.currentTimeMillis()))
+ .build();
+ int updateRows = mockRequestRecordMapper.update(updateRecord);
+ assertEquals(updateRows, 1);
+ MockRequestRecordDO updateAfter =
mockRequestRecordMapper.queryById(mockRequestRecordDO.getId());
+ assertEquals(updateAfter.getApiId(), updateRecord.getApiId());
+ assertEquals(updateAfter.getBody(), updateRecord.getBody());
+ assertEquals(updateAfter.getHeader(), updateRecord.getHeader());
+ assertEquals(updateAfter.getHost(), updateRecord.getHost());
+ assertEquals(updateAfter.getPathVariable(),
updateRecord.getPathVariable());
+ assertEquals(updateAfter.getPort(), updateRecord.getPort());
+ assertEquals(updateAfter.getQuery(), updateRecord.getQuery());
+ assertEquals(updateAfter.getDateUpdated(),
updateRecord.getDateUpdated());
+ }
+
+ private MockRequestRecordDO buildTagDO() {
+ Timestamp now = new Timestamp(System.currentTimeMillis());
+ String id = UUIDUtils.getInstance().generateShortUuid();
+ return MockRequestRecordDO.builder()
+ .id(id)
+ .dateCreated(now)
+ .dateUpdated(now)
+ .apiId("1")
+ .body("{\"name\": \"julia\"}")
+ .header("userId: 1;")
+ .host("192.168.1.1")
+ .url("http://192.168.1.1:8080/test")
+ .pathVariable("")
+ .port(8080)
+ .query("")
+ .build();
+ }
+
+}