Newer
Older
gitbucket_jkp / src / main / resources / update / gitbucket-core_4.14.xml
@Naoki Takezoe Naoki Takezoe on 3 May 2022 3 KB Refactor old migrations (#3056)
<?xml version="1.0" encoding="UTF-8"?>
<changeSet>
  <createTable tableName="PRIORITY">
    <column name="USER_NAME" type="varchar(100)" nullable="false"/>
    <column name="REPOSITORY_NAME" type="varchar(100)" nullable="false"/>
    <column name="PRIORITY_ID" type="int" nullable="false" autoIncrement="true" unique="true"/>
    <column name="PRIORITY_NAME" type="varchar(100)" nullable="false"/>
    <column name="DESCRIPTION" type="varchar(255)" nullable="true"/>
    <column name="ORDERING" type="int" nullable="false"/>
    <column name="IS_DEFAULT" type="boolean" nullable="false"/>
    <column name="COLOR" type="char(6)" nullable="false"/>
  </createTable>

  <addPrimaryKey constraintName="IDX_PRIORITY_PK" tableName="PRIORITY" columnNames="USER_NAME, REPOSITORY_NAME, PRIORITY_ID"/>
  <addForeignKeyConstraint constraintName="IDX_PRIORITY_FK0" baseTableName="PRIORITY" baseColumnNames="USER_NAME, REPOSITORY_NAME" referencedTableName="REPOSITORY" referencedColumnNames="USER_NAME, REPOSITORY_NAME"/>

  <addColumn tableName="ISSUE">
    <column name="PRIORITY_ID" type="int" nullable="true" />
  </addColumn>

  <addForeignKeyConstraint constraintName="IDX_ISSUE_FK3" baseTableName="ISSUE" baseColumnNames="PRIORITY_ID" referencedTableName="PRIORITY" referencedColumnNames="PRIORITY_ID"/>

  <createTable tableName="ACCOUNT_WEB_HOOK">
    <column name="USER_NAME" type="varchar(100)" nullable="false"/>
    <column name="URL" type="varchar(200)" nullable="false"/>
    <column name="TOKEN" type="varchar(100)" nullable="true"/>
    <column name="CTYPE" type="varchar(10)" nullable="true"/>
  </createTable>

  <addPrimaryKey constraintName="IDX_ACCOUNT_WEB_HOOK_PK" tableName="ACCOUNT_WEB_HOOK" columnNames="USER_NAME, URL"/>
  <addForeignKeyConstraint constraintName="IDX_ACCOUNT_WEB_HOOK_FK0" baseTableName="ACCOUNT_WEB_HOOK" baseColumnNames="USER_NAME" referencedTableName="ACCOUNT" referencedColumnNames="USER_NAME"/>

  <createTable tableName="ACCOUNT_WEB_HOOK_EVENT">
    <column name="USER_NAME" type="varchar(100)" nullable="false"/>
    <column name="URL" type="varchar(200)" nullable="false"/>
    <column name="EVENT" type="varchar(30)" nullable="false"/>
  </createTable>

  <sql>
    CREATE OR REPLACE VIEW ISSUE_OUTLINE_VIEW AS
      SELECT
        A.USER_NAME,
        A.REPOSITORY_NAME,
        A.ISSUE_ID,
        COALESCE(B.COMMENT_COUNT, 0) + COALESCE(C.COMMENT_COUNT, 0) AS COMMENT_COUNT,
        COALESCE(D.ORDERING, 9999) AS PRIORITY
      FROM ISSUE A
      LEFT OUTER JOIN (
        SELECT USER_NAME, REPOSITORY_NAME, ISSUE_ID, COUNT(COMMENT_ID) AS COMMENT_COUNT FROM ISSUE_COMMENT
        WHERE ACTION IN ('comment', 'close_comment', 'reopen_comment')
        GROUP BY USER_NAME, REPOSITORY_NAME, ISSUE_ID
      ) B
      ON (A.USER_NAME = B.USER_NAME AND A.REPOSITORY_NAME = B.REPOSITORY_NAME AND A.ISSUE_ID = B.ISSUE_ID)
      LEFT OUTER JOIN (
        SELECT USER_NAME, REPOSITORY_NAME, ISSUE_ID, COUNT(COMMENT_ID) AS COMMENT_COUNT FROM COMMIT_COMMENT
        GROUP BY USER_NAME, REPOSITORY_NAME, ISSUE_ID
      ) C
      ON (A.USER_NAME = C.USER_NAME AND A.REPOSITORY_NAME = C.REPOSITORY_NAME AND A.ISSUE_ID = C.ISSUE_ID)
      LEFT OUTER JOIN PRIORITY D
      ON (A.PRIORITY_ID = D.PRIORITY_ID);
  </sql>
</changeSet>