build: add project_robot

This commit is contained in:
guoyuqi 2023-08-23 16:59:14 +08:00 committed by 刘瑞斌
parent 0c85b89c0d
commit 85bfe10c69
5 changed files with 2044 additions and 0 deletions

View File

@ -0,0 +1,163 @@
package io.metersphere.project.domain;
import io.metersphere.validation.groups.*;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import lombok.Data;
@Data
public class ProjectRobot implements Serializable {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED)
@NotBlank(message = "{project_robot.id.not_blank}", groups = {Updated.class})
@Size(min = 1, max = 50, message = "{project_robot.id.length_range}", groups = {Created.class, Updated.class})
private String id;
@Schema(description = "项目ID", requiredMode = Schema.RequiredMode.REQUIRED)
@NotBlank(message = "{project_robot.project_id.not_blank}", groups = {Created.class, Updated.class})
@Size(min = 1, max = 50, message = "{project_robot.project_id.length_range}", groups = {Created.class, Updated.class})
private String projectId;
@Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED)
@NotBlank(message = "{project_robot.name.not_blank}", groups = {Created.class, Updated.class})
@Size(min = 1, max = 255, message = "{project_robot.name.length_range}", groups = {Created.class, Updated.class})
private String name;
@Schema(description = "所属平台(飞书,钉钉,企业微信,自定义)", requiredMode = Schema.RequiredMode.REQUIRED)
@NotBlank(message = "{project_robot.platform.not_blank}", groups = {Created.class, Updated.class})
@Size(min = 1, max = 50, message = "{project_robot.platform.length_range}", groups = {Created.class, Updated.class})
private String platform;
@Schema(description = "webhook", requiredMode = Schema.RequiredMode.REQUIRED)
@NotBlank(message = "{project_robot.webhook.not_blank}", groups = {Created.class, Updated.class})
@Size(min = 1, max = 255, message = "{project_robot.webhook.length_range}", groups = {Created.class, Updated.class})
private String webhook;
@Schema(description = "自定义和内部")
private String type;
@Schema(description = "钉钉AppKey")
private String appKey;
@Schema(description = "钉钉AppSecret")
private String appSecret;
@Schema(description = "是否启用")
private Boolean enable;
@Schema(description = "创建人")
private String createUser;
@Schema(description = "创建时间")
private Long createTime;
@Schema(description = "修改人")
private String updateUser;
@Schema(description = "更新时间")
private Long updateTime;
@Schema(description = "删除人")
private String deleteUser;
@Schema(description = "删除时间")
private Long deleteTime;
@Schema(description = "是否删除", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "{project_robot.deleted.not_blank}", groups = {Created.class})
private Boolean deleted;
@Schema(description = "描述")
private String description;
private static final long serialVersionUID = 1L;
public enum Column {
id("id", "id", "VARCHAR", false),
projectId("project_id", "projectId", "VARCHAR", false),
name("name", "name", "VARCHAR", true),
platform("platform", "platform", "VARCHAR", false),
webhook("webhook", "webhook", "VARCHAR", false),
type("type", "type", "VARCHAR", true),
appKey("app_key", "appKey", "VARCHAR", false),
appSecret("app_secret", "appSecret", "VARCHAR", false),
enable("enable", "enable", "BIT", true),
createUser("create_user", "createUser", "VARCHAR", false),
createTime("create_time", "createTime", "BIGINT", false),
updateUser("update_user", "updateUser", "VARCHAR", false),
updateTime("update_time", "updateTime", "BIGINT", false),
deleteUser("delete_user", "deleteUser", "VARCHAR", false),
deleteTime("delete_time", "deleteTime", "BIGINT", false),
deleted("deleted", "deleted", "BIT", false),
description("description", "description", "VARCHAR", false);
private static final String BEGINNING_DELIMITER = "`";
private static final String ENDING_DELIMITER = "`";
private final String column;
private final boolean isColumnNameDelimited;
private final String javaProperty;
private final String jdbcType;
public String value() {
return this.column;
}
public String getValue() {
return this.column;
}
public String getJavaProperty() {
return this.javaProperty;
}
public String getJdbcType() {
return this.jdbcType;
}
Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {
this.column = column;
this.javaProperty = javaProperty;
this.jdbcType = jdbcType;
this.isColumnNameDelimited = isColumnNameDelimited;
}
public String desc() {
return this.getEscapedColumnName() + " DESC";
}
public String asc() {
return this.getEscapedColumnName() + " ASC";
}
public static Column[] excludes(Column ... excludes) {
ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));
if (excludes != null && excludes.length > 0) {
columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));
}
return columns.toArray(new Column[]{});
}
public static Column[] all() {
return Column.values();
}
public String getEscapedColumnName() {
if (this.isColumnNameDelimited) {
return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();
} else {
return this.column;
}
}
public String getAliasedEscapedColumnName() {
return this.getEscapedColumnName();
}
}
}

View File

@ -0,0 +1,34 @@
package io.metersphere.project.mapper;
import io.metersphere.project.domain.ProjectRobot;
import io.metersphere.project.domain.ProjectRobotExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface ProjectRobotMapper {
long countByExample(ProjectRobotExample example);
int deleteByExample(ProjectRobotExample example);
int deleteByPrimaryKey(String id);
int insert(ProjectRobot record);
int insertSelective(ProjectRobot record);
List<ProjectRobot> selectByExample(ProjectRobotExample example);
ProjectRobot selectByPrimaryKey(String id);
int updateByExampleSelective(@Param("record") ProjectRobot record, @Param("example") ProjectRobotExample example);
int updateByExample(@Param("record") ProjectRobot record, @Param("example") ProjectRobotExample example);
int updateByPrimaryKeySelective(ProjectRobot record);
int updateByPrimaryKey(ProjectRobot record);
int batchInsert(@Param("list") List<ProjectRobot> list);
int batchInsertSelective(@Param("list") List<ProjectRobot> list, @Param("selective") ProjectRobot.Column ... selective);
}

View File

@ -0,0 +1,481 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.metersphere.project.mapper.ProjectRobotMapper">
<resultMap id="BaseResultMap" type="io.metersphere.project.domain.ProjectRobot">
<id column="id" jdbcType="VARCHAR" property="id" />
<result column="project_id" jdbcType="VARCHAR" property="projectId" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="platform" jdbcType="VARCHAR" property="platform" />
<result column="webhook" jdbcType="VARCHAR" property="webhook" />
<result column="type" jdbcType="VARCHAR" property="type" />
<result column="app_key" jdbcType="VARCHAR" property="appKey" />
<result column="app_secret" jdbcType="VARCHAR" property="appSecret" />
<result column="enable" jdbcType="BIT" property="enable" />
<result column="create_user" jdbcType="VARCHAR" property="createUser" />
<result column="create_time" jdbcType="BIGINT" property="createTime" />
<result column="update_user" jdbcType="VARCHAR" property="updateUser" />
<result column="update_time" jdbcType="BIGINT" property="updateTime" />
<result column="delete_user" jdbcType="VARCHAR" property="deleteUser" />
<result column="delete_time" jdbcType="BIGINT" property="deleteTime" />
<result column="deleted" jdbcType="BIT" property="deleted" />
<result column="description" jdbcType="VARCHAR" property="description" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
<foreach collection="oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Update_By_Example_Where_Clause">
<where>
<foreach collection="example.oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Base_Column_List">
id, project_id, `name`, platform, webhook, `type`, app_key, app_secret, `enable`,
create_user, create_time, update_user, update_time, delete_user, delete_time, deleted,
description
</sql>
<select id="selectByExample" parameterType="io.metersphere.project.domain.ProjectRobotExample" resultMap="BaseResultMap">
select
<if test="distinct">
distinct
</if>
<include refid="Base_Column_List" />
from project_robot
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
</select>
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from project_robot
where id = #{id,jdbcType=VARCHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
delete from project_robot
where id = #{id,jdbcType=VARCHAR}
</delete>
<delete id="deleteByExample" parameterType="io.metersphere.project.domain.ProjectRobotExample">
delete from project_robot
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="io.metersphere.project.domain.ProjectRobot">
insert into project_robot (id, project_id, `name`,
platform, webhook, `type`,
app_key, app_secret, `enable`,
create_user, create_time, update_user,
update_time, delete_user, delete_time,
deleted, description)
values (#{id,jdbcType=VARCHAR}, #{projectId,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR},
#{platform,jdbcType=VARCHAR}, #{webhook,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR},
#{appKey,jdbcType=VARCHAR}, #{appSecret,jdbcType=VARCHAR}, #{enable,jdbcType=BIT},
#{createUser,jdbcType=VARCHAR}, #{createTime,jdbcType=BIGINT}, #{updateUser,jdbcType=VARCHAR},
#{updateTime,jdbcType=BIGINT}, #{deleteUser,jdbcType=VARCHAR}, #{deleteTime,jdbcType=BIGINT},
#{deleted,jdbcType=BIT}, #{description,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="io.metersphere.project.domain.ProjectRobot">
insert into project_robot
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="projectId != null">
project_id,
</if>
<if test="name != null">
`name`,
</if>
<if test="platform != null">
platform,
</if>
<if test="webhook != null">
webhook,
</if>
<if test="type != null">
`type`,
</if>
<if test="appKey != null">
app_key,
</if>
<if test="appSecret != null">
app_secret,
</if>
<if test="enable != null">
`enable`,
</if>
<if test="createUser != null">
create_user,
</if>
<if test="createTime != null">
create_time,
</if>
<if test="updateUser != null">
update_user,
</if>
<if test="updateTime != null">
update_time,
</if>
<if test="deleteUser != null">
delete_user,
</if>
<if test="deleteTime != null">
delete_time,
</if>
<if test="deleted != null">
deleted,
</if>
<if test="description != null">
description,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=VARCHAR},
</if>
<if test="projectId != null">
#{projectId,jdbcType=VARCHAR},
</if>
<if test="name != null">
#{name,jdbcType=VARCHAR},
</if>
<if test="platform != null">
#{platform,jdbcType=VARCHAR},
</if>
<if test="webhook != null">
#{webhook,jdbcType=VARCHAR},
</if>
<if test="type != null">
#{type,jdbcType=VARCHAR},
</if>
<if test="appKey != null">
#{appKey,jdbcType=VARCHAR},
</if>
<if test="appSecret != null">
#{appSecret,jdbcType=VARCHAR},
</if>
<if test="enable != null">
#{enable,jdbcType=BIT},
</if>
<if test="createUser != null">
#{createUser,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
#{createTime,jdbcType=BIGINT},
</if>
<if test="updateUser != null">
#{updateUser,jdbcType=VARCHAR},
</if>
<if test="updateTime != null">
#{updateTime,jdbcType=BIGINT},
</if>
<if test="deleteUser != null">
#{deleteUser,jdbcType=VARCHAR},
</if>
<if test="deleteTime != null">
#{deleteTime,jdbcType=BIGINT},
</if>
<if test="deleted != null">
#{deleted,jdbcType=BIT},
</if>
<if test="description != null">
#{description,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="io.metersphere.project.domain.ProjectRobotExample" resultType="java.lang.Long">
select count(*) from project_robot
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map">
update project_robot
<set>
<if test="record.id != null">
id = #{record.id,jdbcType=VARCHAR},
</if>
<if test="record.projectId != null">
project_id = #{record.projectId,jdbcType=VARCHAR},
</if>
<if test="record.name != null">
`name` = #{record.name,jdbcType=VARCHAR},
</if>
<if test="record.platform != null">
platform = #{record.platform,jdbcType=VARCHAR},
</if>
<if test="record.webhook != null">
webhook = #{record.webhook,jdbcType=VARCHAR},
</if>
<if test="record.type != null">
`type` = #{record.type,jdbcType=VARCHAR},
</if>
<if test="record.appKey != null">
app_key = #{record.appKey,jdbcType=VARCHAR},
</if>
<if test="record.appSecret != null">
app_secret = #{record.appSecret,jdbcType=VARCHAR},
</if>
<if test="record.enable != null">
`enable` = #{record.enable,jdbcType=BIT},
</if>
<if test="record.createUser != null">
create_user = #{record.createUser,jdbcType=VARCHAR},
</if>
<if test="record.createTime != null">
create_time = #{record.createTime,jdbcType=BIGINT},
</if>
<if test="record.updateUser != null">
update_user = #{record.updateUser,jdbcType=VARCHAR},
</if>
<if test="record.updateTime != null">
update_time = #{record.updateTime,jdbcType=BIGINT},
</if>
<if test="record.deleteUser != null">
delete_user = #{record.deleteUser,jdbcType=VARCHAR},
</if>
<if test="record.deleteTime != null">
delete_time = #{record.deleteTime,jdbcType=BIGINT},
</if>
<if test="record.deleted != null">
deleted = #{record.deleted,jdbcType=BIT},
</if>
<if test="record.description != null">
description = #{record.description,jdbcType=VARCHAR},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map">
update project_robot
set id = #{record.id,jdbcType=VARCHAR},
project_id = #{record.projectId,jdbcType=VARCHAR},
`name` = #{record.name,jdbcType=VARCHAR},
platform = #{record.platform,jdbcType=VARCHAR},
webhook = #{record.webhook,jdbcType=VARCHAR},
`type` = #{record.type,jdbcType=VARCHAR},
app_key = #{record.appKey,jdbcType=VARCHAR},
app_secret = #{record.appSecret,jdbcType=VARCHAR},
`enable` = #{record.enable,jdbcType=BIT},
create_user = #{record.createUser,jdbcType=VARCHAR},
create_time = #{record.createTime,jdbcType=BIGINT},
update_user = #{record.updateUser,jdbcType=VARCHAR},
update_time = #{record.updateTime,jdbcType=BIGINT},
delete_user = #{record.deleteUser,jdbcType=VARCHAR},
delete_time = #{record.deleteTime,jdbcType=BIGINT},
deleted = #{record.deleted,jdbcType=BIT},
description = #{record.description,jdbcType=VARCHAR}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="io.metersphere.project.domain.ProjectRobot">
update project_robot
<set>
<if test="projectId != null">
project_id = #{projectId,jdbcType=VARCHAR},
</if>
<if test="name != null">
`name` = #{name,jdbcType=VARCHAR},
</if>
<if test="platform != null">
platform = #{platform,jdbcType=VARCHAR},
</if>
<if test="webhook != null">
webhook = #{webhook,jdbcType=VARCHAR},
</if>
<if test="type != null">
`type` = #{type,jdbcType=VARCHAR},
</if>
<if test="appKey != null">
app_key = #{appKey,jdbcType=VARCHAR},
</if>
<if test="appSecret != null">
app_secret = #{appSecret,jdbcType=VARCHAR},
</if>
<if test="enable != null">
`enable` = #{enable,jdbcType=BIT},
</if>
<if test="createUser != null">
create_user = #{createUser,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=BIGINT},
</if>
<if test="updateUser != null">
update_user = #{updateUser,jdbcType=VARCHAR},
</if>
<if test="updateTime != null">
update_time = #{updateTime,jdbcType=BIGINT},
</if>
<if test="deleteUser != null">
delete_user = #{deleteUser,jdbcType=VARCHAR},
</if>
<if test="deleteTime != null">
delete_time = #{deleteTime,jdbcType=BIGINT},
</if>
<if test="deleted != null">
deleted = #{deleted,jdbcType=BIT},
</if>
<if test="description != null">
description = #{description,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=VARCHAR}
</update>
<update id="updateByPrimaryKey" parameterType="io.metersphere.project.domain.ProjectRobot">
update project_robot
set project_id = #{projectId,jdbcType=VARCHAR},
`name` = #{name,jdbcType=VARCHAR},
platform = #{platform,jdbcType=VARCHAR},
webhook = #{webhook,jdbcType=VARCHAR},
`type` = #{type,jdbcType=VARCHAR},
app_key = #{appKey,jdbcType=VARCHAR},
app_secret = #{appSecret,jdbcType=VARCHAR},
`enable` = #{enable,jdbcType=BIT},
create_user = #{createUser,jdbcType=VARCHAR},
create_time = #{createTime,jdbcType=BIGINT},
update_user = #{updateUser,jdbcType=VARCHAR},
update_time = #{updateTime,jdbcType=BIGINT},
delete_user = #{deleteUser,jdbcType=VARCHAR},
delete_time = #{deleteTime,jdbcType=BIGINT},
deleted = #{deleted,jdbcType=BIT},
description = #{description,jdbcType=VARCHAR}
where id = #{id,jdbcType=VARCHAR}
</update>
<insert id="batchInsert" parameterType="map">
insert into project_robot
(id, project_id, `name`, platform, webhook, `type`, app_key, app_secret, `enable`,
create_user, create_time, update_user, update_time, delete_user, delete_time, deleted,
description)
values
<foreach collection="list" item="item" separator=",">
(#{item.id,jdbcType=VARCHAR}, #{item.projectId,jdbcType=VARCHAR}, #{item.name,jdbcType=VARCHAR},
#{item.platform,jdbcType=VARCHAR}, #{item.webhook,jdbcType=VARCHAR}, #{item.type,jdbcType=VARCHAR},
#{item.appKey,jdbcType=VARCHAR}, #{item.appSecret,jdbcType=VARCHAR}, #{item.enable,jdbcType=BIT},
#{item.createUser,jdbcType=VARCHAR}, #{item.createTime,jdbcType=BIGINT}, #{item.updateUser,jdbcType=VARCHAR},
#{item.updateTime,jdbcType=BIGINT}, #{item.deleteUser,jdbcType=VARCHAR}, #{item.deleteTime,jdbcType=BIGINT},
#{item.deleted,jdbcType=BIT}, #{item.description,jdbcType=VARCHAR})
</foreach>
</insert>
<insert id="batchInsertSelective" parameterType="map">
insert into project_robot (
<foreach collection="selective" item="column" separator=",">
${column.escapedColumnName}
</foreach>
)
values
<foreach collection="list" item="item" separator=",">
(
<foreach collection="selective" item="column" separator=",">
<if test="'id'.toString() == column.value">
#{item.id,jdbcType=VARCHAR}
</if>
<if test="'project_id'.toString() == column.value">
#{item.projectId,jdbcType=VARCHAR}
</if>
<if test="'name'.toString() == column.value">
#{item.name,jdbcType=VARCHAR}
</if>
<if test="'platform'.toString() == column.value">
#{item.platform,jdbcType=VARCHAR}
</if>
<if test="'webhook'.toString() == column.value">
#{item.webhook,jdbcType=VARCHAR}
</if>
<if test="'type'.toString() == column.value">
#{item.type,jdbcType=VARCHAR}
</if>
<if test="'app_key'.toString() == column.value">
#{item.appKey,jdbcType=VARCHAR}
</if>
<if test="'app_secret'.toString() == column.value">
#{item.appSecret,jdbcType=VARCHAR}
</if>
<if test="'enable'.toString() == column.value">
#{item.enable,jdbcType=BIT}
</if>
<if test="'create_user'.toString() == column.value">
#{item.createUser,jdbcType=VARCHAR}
</if>
<if test="'create_time'.toString() == column.value">
#{item.createTime,jdbcType=BIGINT}
</if>
<if test="'update_user'.toString() == column.value">
#{item.updateUser,jdbcType=VARCHAR}
</if>
<if test="'update_time'.toString() == column.value">
#{item.updateTime,jdbcType=BIGINT}
</if>
<if test="'delete_user'.toString() == column.value">
#{item.deleteUser,jdbcType=VARCHAR}
</if>
<if test="'delete_time'.toString() == column.value">
#{item.deleteTime,jdbcType=BIGINT}
</if>
<if test="'deleted'.toString() == column.value">
#{item.deleted,jdbcType=BIT}
</if>
<if test="'description'.toString() == column.value">
#{item.description,jdbcType=VARCHAR}
</if>
</foreach>
)
</foreach>
</insert>
</mapper>

View File

@ -383,6 +383,32 @@ CREATE INDEX idx_receiver_type ON notification (`receiver`, `type`);
CREATE INDEX idx_notification_create_time ON notification (`create_time`);
CREATE TABLE IF NOT EXISTS project_robot(
`id` VARCHAR(50) NOT NULL COMMENT 'id' ,
`project_id` VARCHAR(50) NOT NULL COMMENT '项目ID' ,
`name` VARCHAR(255) NOT NULL COMMENT '名称' ,
`platform` VARCHAR(50) NOT NULL COMMENT '所属平台(飞书,钉钉,企业微信,自定义)' ,
`webhook` VARCHAR(255) NOT NULL COMMENT 'webhook' ,
`type` VARCHAR(50) COMMENT '自定义和内部' ,
`app_key` VARCHAR(50) COMMENT '钉钉AppKey' ,
`app_secret` VARCHAR(255) COMMENT '钉钉AppSecret' ,
`enable` BIT COMMENT '是否启用' ,
`create_user` VARCHAR(50) COMMENT '创建人' ,
`create_time` BIGINT NOT NULL COMMENT '创建时间' ,
`update_user` VARCHAR(50) NOT NULL COMMENT '修改人' ,
`update_time` BIGINT NOT NULL COMMENT '更新时间' ,
`delete_user` VARCHAR(50) COMMENT '删除人' ,
`delete_time` BIGINT(255) COMMENT '删除时间' ,
`deleted` BIT NOT NULL DEFAULT 0 COMMENT '是否删除' ,
`description` VARCHAR(255) COMMENT '描述' ,
PRIMARY KEY (id)
) COMMENT = '项目机器人';
CREATE INDEX idx_project_id ON project_robot(project_id);
CREATE INDEX idx_platform ON project_robot(platform);
CREATE INDEX idx_webhook ON project_robot(webhook);
-- set innodb lock wait timeout to default
SET SESSION innodb_lock_wait_timeout = DEFAULT;