diff --git a/.circleci/config.yml b/.circleci/config.yml index 798673c779..c52a7f2f1f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -344,8 +344,8 @@ jobs: mkdir -p mattermost-server/client/plugins echo "Creating databases" docker-compose --no-ansi exec -T postgres sh -c 'exec echo "CREATE DATABASE migrated; CREATE DATABASE latest;" | exec psql -U mmuser mattermost_test' - echo "Importing postgres dump from version 5.0" - docker-compose --no-ansi exec -T postgres psql -U mmuser -d migrated < ../scripts/mattermost-postgresql-5.0.sql + echo "Importing postgres dump from version 6.0" + docker-compose --no-ansi exec -T postgres psql -U mmuser -d migrated < ../scripts/mattermost-postgresql-6.0.sql docker run -it --net circleci_mm-test \ --env-file="dotenv/test-schema-validation.env" \ --env MM_SQLSETTINGS_DATASOURCE="postgres://mmuser:mostest@postgres:5432/migrated?sslmode=disable&connect_timeout=10" \ @@ -355,15 +355,6 @@ jobs: mattermost/mattermost-build-server:20210810_golang-1.16.7 \ bash -c "ulimit -n 8096; make ARGS='version' run-cli && make MM_SQLSETTINGS_DATASOURCE='postgres://mmuser:mostest@postgres:5432/latest?sslmode=disable&connect_timeout=10' ARGS='version' run-cli" - echo "Ignoring known mismatch: ChannelMembers.MentionCountRoot" - docker-compose --no-ansi exec -T postgres sh -c 'exec echo "ALTER TABLE ChannelMembers DROP COLUMN MentionCountRoot;" | exec psql -U mmuser -d migrated' - docker-compose --no-ansi exec -T postgres sh -c 'exec echo "ALTER TABLE ChannelMembers DROP COLUMN MentionCountRoot;" | exec psql -U mmuser -d latest' - echo "Ignoring known mismatch: ChannelMembers.MsgCountRoot and Channels.TotalMsgCountRoot" - docker-compose --no-ansi exec -T postgres sh -c 'exec echo "ALTER TABLE ChannelMembers DROP COLUMN MsgCountRoot;" | exec psql -U mmuser -d migrated' - docker-compose --no-ansi exec -T postgres sh -c 'exec echo "ALTER TABLE ChannelMembers DROP COLUMN MsgCountRoot;" | exec psql -U mmuser -d latest' - docker-compose --no-ansi exec -T postgres sh -c 'exec echo "ALTER TABLE Channels DROP COLUMN TotalMsgCountRoot;" | exec psql -U mmuser -d migrated' - docker-compose --no-ansi exec -T postgres sh -c 'exec echo "ALTER TABLE Channels DROP COLUMN TotalMsgCountRoot;" | exec psql -U mmuser -d latest' - echo "Generating dump" docker-compose --no-ansi exec -T postgres pg_dump --schema-only -d migrated -U mmuser > migrated.sql docker-compose --no-ansi exec -T postgres pg_dump --schema-only -d latest -U mmuser > latest.sql @@ -381,8 +372,8 @@ jobs: mkdir -p mattermost-server/client/plugins echo "Creating databases" docker-compose --no-ansi exec -T mysql mysql -uroot -pmostest -e "CREATE DATABASE migrated; CREATE DATABASE latest; GRANT ALL PRIVILEGES ON migrated.* TO mmuser; GRANT ALL PRIVILEGES ON latest.* TO mmuser" - echo "Importing mysql dump from version 5.0" - docker-compose --no-ansi exec -T mysql mysql -D migrated -uroot -pmostest < ../scripts/mattermost-mysql-5.0.sql + echo "Importing mysql dump from version 6.0" + docker-compose --no-ansi exec -T mysql mysql -D migrated -uroot -pmostest < ../scripts/mattermost-mysql-6.0.sql docker run -it --net circleci_mm-test \ --env-file="dotenv/test-schema-validation.env" \ @@ -393,19 +384,6 @@ jobs: mattermost/mattermost-build-server:20210810_golang-1.16.7 \ bash -c "ulimit -n 8096; make ARGS='version' run-cli && make MM_SQLSETTINGS_DATASOURCE='mmuser:mostest@tcp(mysql:3306)/latest?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s' ARGS='version' run-cli" - - echo "Ignoring known MySQL mismatch: ChannelMembers.SchemeGuest" - docker-compose --no-ansi exec -T mysql mysql -D migrated -uroot -pmostest -e "ALTER TABLE ChannelMembers DROP COLUMN SchemeGuest;" - docker-compose --no-ansi exec -T mysql mysql -D latest -uroot -pmostest -e "ALTER TABLE ChannelMembers DROP COLUMN SchemeGuest;" - echo "Ignoring known MySQL mismatch: ChannelMembers.MentionCountRoot and MsgCountRoot" - docker-compose --no-ansi exec -T mysql mysql -D migrated -uroot -pmostest -e "ALTER TABLE ChannelMembers DROP COLUMN MentionCountRoot;" - docker-compose --no-ansi exec -T mysql mysql -D latest -uroot -pmostest -e "ALTER TABLE ChannelMembers DROP COLUMN MentionCountRoot;" - docker-compose --no-ansi exec -T mysql mysql -D migrated -uroot -pmostest -e "ALTER TABLE ChannelMembers DROP COLUMN MsgCountRoot;" - docker-compose --no-ansi exec -T mysql mysql -D latest -uroot -pmostest -e "ALTER TABLE ChannelMembers DROP COLUMN MsgCountRoot;" - echo "Ignoring known MySQL mismatch: Channels.TotalMsgCountRoot" - docker-compose --no-ansi exec -T mysql mysql -D migrated -uroot -pmostest -e "ALTER TABLE Channels DROP COLUMN TotalMsgCountRoot;" - docker-compose --no-ansi exec -T mysql mysql -D latest -uroot -pmostest -e "ALTER TABLE Channels DROP COLUMN TotalMsgCountRoot;" - echo "Generating dump" docker-compose --no-ansi exec -T mysql mysqldump --skip-opt --no-data --compact -u root -pmostest migrated > migrated.sql docker-compose --no-ansi exec -T mysql mysqldump --skip-opt --no-data --compact -u root -pmostest latest > latest.sql diff --git a/.gitlab-ci/scripts/test-schema/mysql.sh b/.gitlab-ci/scripts/test-schema/mysql.sh index 44a7817e07..3cb017e98d 100755 --- a/.gitlab-ci/scripts/test-schema/mysql.sh +++ b/.gitlab-ci/scripts/test-schema/mysql.sh @@ -15,8 +15,8 @@ docker run --net ${DOCKER_NETWORK} ${CI_REGISTRY}/mattermost/ci/images/curl:7.59 echo "Creating databases" docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T mysql mysql -uroot -pmostest -e "CREATE DATABASE migrated; CREATE DATABASE latest; GRANT ALL PRIVILEGES ON migrated.* TO mmuser; GRANT ALL PRIVILEGES ON latest.* TO mmuser" -echo "Importing mysql dump from version 5.0" -docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T mysql mysql -D migrated -uroot -pmostest < ${CI_PROJECT_DIR}/scripts/mattermost-mysql-5.0.sql +echo "Importing mysql dump from version 6.0" +docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T mysql mysql -D migrated -uroot -pmostest < ${CI_PROJECT_DIR}/scripts/mattermost-mysql-6.0.sql docker run -d -it --rm --name "${CONTAINER_SERVER}" --net ${DOCKER_NETWORK} \ --env-file="dotenv/test-schema-validation.env" \ --env MM_SQLSETTINGS_DATASOURCE="mmuser:mostest@tcp(mysql:3306)/migrated?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s" \ @@ -27,18 +27,6 @@ docker run -d -it --rm --name "${CONTAINER_SERVER}" --net ${DOCKER_NETWORK} \ bash -c "ulimit -n 8096; make ARGS='version' run-cli && make MM_SQLSETTINGS_DATASOURCE='mmuser:mostest@tcp(mysql:3306)/latest?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s' ARGS='version' run-cli" docker logs -f "${CONTAINER_SERVER}" -echo "Ignoring known MySQL mismatch: ChannelMembers.SchemeGuest" -docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T mysql mysql -D migrated -uroot -pmostest -e "ALTER TABLE ChannelMembers DROP COLUMN SchemeGuest;" -docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T mysql mysql -D latest -uroot -pmostest -e "ALTER TABLE ChannelMembers DROP COLUMN SchemeGuest;" -echo "Ignoring known MySQL mismatch: ChannelMembers.MentionCountRoot and MsgCountRoot" -docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T mysql mysql -D migrated -uroot -pmostest -e "ALTER TABLE ChannelMembers DROP COLUMN MentionCountRoot;" -docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T mysql mysql -D latest -uroot -pmostest -e "ALTER TABLE ChannelMembers DROP COLUMN MentionCountRoot;" -docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T mysql mysql -D migrated -uroot -pmostest -e "ALTER TABLE ChannelMembers DROP COLUMN MsgCountRoot;" -docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T mysql mysql -D latest -uroot -pmostest -e "ALTER TABLE ChannelMembers DROP COLUMN MsgCountRoot;" -echo "Ignoring known MySQL mismatch: Channels.TotalMsgCountRoot" -docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T mysql mysql -D migrated -uroot -pmostest -e "ALTER TABLE Channels DROP COLUMN TotalMsgCountRoot;" -docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T mysql mysql -D latest -uroot -pmostest -e "ALTER TABLE Channels DROP COLUMN TotalMsgCountRoot;" - echo "Generating dump" docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T mysql mysqldump --skip-opt --no-data --compact -u root -pmostest migrated > migrated.sql docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T mysql mysqldump --skip-opt --no-data --compact -u root -pmostest latest > latest.sql diff --git a/.gitlab-ci/scripts/test-schema/postgres.sh b/.gitlab-ci/scripts/test-schema/postgres.sh index 98efbb7290..5a26231b25 100755 --- a/.gitlab-ci/scripts/test-schema/postgres.sh +++ b/.gitlab-ci/scripts/test-schema/postgres.sh @@ -14,8 +14,8 @@ timeout 90s bash -c "until docker exec ${COMPOSE_PROJECT_NAME}_postgres_1 pg_isr echo "Creating databases" docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T postgres sh -c 'exec echo "CREATE DATABASE migrated; CREATE DATABASE latest;" | exec psql -U mmuser mattermost_test' -echo "Importing postgres dump from version 5.0" -docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T postgres psql -U mmuser -d migrated < ${CI_PROJECT_DIR}/scripts/mattermost-postgresql-5.0.sql +echo "Importing postgres dump from version 6.0" +docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T postgres psql -U mmuser -d migrated < ${CI_PROJECT_DIR}/scripts/mattermost-postgresql-6.0.sql docker run -d -it --rm --name "${CONTAINER_SERVER}" --net ${DOCKER_NETWORK} \ --env-file="dotenv/test-schema-validation.env" \ --env MM_SQLSETTINGS_DATASOURCE="postgres://mmuser:mostest@postgres:5432/migrated?sslmode=disable&connect_timeout=10" \ @@ -26,15 +26,6 @@ docker run -d -it --rm --name "${CONTAINER_SERVER}" --net ${DOCKER_NETWORK} \ bash -c "ulimit -n 8096; make ARGS='version' run-cli && make MM_SQLSETTINGS_DATASOURCE='postgres://mmuser:mostest@postgres:5432/latest?sslmode=disable&connect_timeout=10' ARGS='version' run-cli" docker logs -f "${CONTAINER_SERVER}" -echo "Ignoring known mismatch: ChannelMembers.MentionCountRoot" -docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T postgres sh -c 'exec echo "ALTER TABLE ChannelMembers DROP COLUMN MentionCountRoot;" | exec psql -U mmuser -d migrated' -docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T postgres sh -c 'exec echo "ALTER TABLE ChannelMembers DROP COLUMN MentionCountRoot;" | exec psql -U mmuser -d latest' -echo "Ignoring known mismatch: ChannelMembers.MsgCountRoot and Channels.TotalMsgCountRoot" -docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T postgres sh -c 'exec echo "ALTER TABLE ChannelMembers DROP COLUMN MsgCountRoot;" | exec psql -U mmuser -d migrated' -docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T postgres sh -c 'exec echo "ALTER TABLE ChannelMembers DROP COLUMN MsgCountRoot;" | exec psql -U mmuser -d latest' -docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T postgres sh -c 'exec echo "ALTER TABLE Channels DROP COLUMN TotalMsgCountRoot;" | exec psql -U mmuser -d migrated' -docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T postgres sh -c 'exec echo "ALTER TABLE Channels DROP COLUMN TotalMsgCountRoot;" | exec psql -U mmuser -d latest' - echo "Generating dump" docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T postgres pg_dump --schema-only -d migrated -U mmuser > migrated.sql docker-compose -f $DOCKER_COMPOSE_FILE exec -d -T postgres pg_dump --schema-only -d latest -U mmuser > latest.sql diff --git a/Makefile b/Makefile index e2798cdcc1..7b7304d2e3 100644 --- a/Makefile +++ b/Makefile @@ -350,8 +350,12 @@ test-compile: ## Compile tests. done test-db-migration: start-docker ## Gets diff of upgrade vs new instance schemas. - ./scripts/mysql-migration-test.sh - ./scripts/psql-migration-test.sh + ./scripts/mysql-migration-test.sh 6.0 + ./scripts/psql-migration-test.sh 6.0 + +test-db-migration-v5: start-docker ## Gets diff of upgrade vs new instance schemas. + ./scripts/mysql-migration-v5-test.sh 5.0 + ./scripts/psql-migration-v5-test.sh 5.0 gomodtidy: @cp go.mod go.mod.orig diff --git a/scripts/mattermost-mysql-6.0.sql b/scripts/mattermost-mysql-6.0.sql new file mode 100644 index 0000000000..1d68f43055 --- /dev/null +++ b/scripts/mattermost-mysql-6.0.sql @@ -0,0 +1,914 @@ +-- MySQL dump 10.13 Distrib 5.7.35, for Linux (x86_64) +-- +-- Host: claudiolt-mysql-instance-1.c0gzspkyf2r5.us-east-1.rds.amazonaws.com Database: mattermost +-- ------------------------------------------------------ +-- Server version 5.7.12 +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Audits` ( + `Id` varchar(26) NOT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `UserId` varchar(26) DEFAULT NULL, + `Action` text, + `ExtraInfo` text, + `IpAddress` varchar(64) DEFAULT NULL, + `SessionId` varchar(26) DEFAULT NULL, + PRIMARY KEY (`Id`), + KEY `idx_audits_user_id` (`UserId`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Bots` ( + `UserId` varchar(26) NOT NULL, + `Description` text, + `OwnerId` varchar(190) DEFAULT NULL, + `LastIconUpdate` bigint(20) DEFAULT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `UpdateAt` bigint(20) DEFAULT NULL, + `DeleteAt` bigint(20) DEFAULT NULL, + PRIMARY KEY (`UserId`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ChannelMemberHistory` ( + `ChannelId` varchar(26) NOT NULL, + `UserId` varchar(26) NOT NULL, + `JoinTime` bigint(20) NOT NULL, + `LeaveTime` bigint(20) DEFAULT NULL, + PRIMARY KEY (`ChannelId`,`UserId`,`JoinTime`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ChannelMembers` ( + `ChannelId` varchar(26) NOT NULL, + `UserId` varchar(26) NOT NULL, + `Roles` varchar(64) DEFAULT NULL, + `LastViewedAt` bigint(20) DEFAULT NULL, + `MsgCount` bigint(20) DEFAULT NULL, + `MentionCount` bigint(20) DEFAULT NULL, + `NotifyProps` json DEFAULT NULL, + `LastUpdateAt` bigint(20) DEFAULT NULL, + `SchemeUser` tinyint(4) DEFAULT NULL, + `SchemeAdmin` tinyint(4) DEFAULT NULL, + `SchemeGuest` tinyint(4) DEFAULT NULL, + `MentionCountRoot` bigint(20) DEFAULT NULL, + `MsgCountRoot` bigint(20) DEFAULT NULL, + PRIMARY KEY (`ChannelId`,`UserId`), + KEY `idx_channelmembers_user_id` (`UserId`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Channels` ( + `Id` varchar(26) NOT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `UpdateAt` bigint(20) DEFAULT NULL, + `DeleteAt` bigint(20) DEFAULT NULL, + `TeamId` varchar(26) DEFAULT NULL, + `Type` varchar(1) DEFAULT NULL, + `DisplayName` varchar(64) DEFAULT NULL, + `Name` varchar(64) DEFAULT NULL, + `Header` text, + `Purpose` varchar(250) DEFAULT NULL, + `LastPostAt` bigint(20) DEFAULT NULL, + `TotalMsgCount` bigint(20) DEFAULT NULL, + `ExtraUpdateAt` bigint(20) DEFAULT NULL, + `CreatorId` varchar(26) DEFAULT NULL, + `SchemeId` varchar(26) DEFAULT NULL, + `GroupConstrained` tinyint(1) DEFAULT NULL, + `Shared` tinyint(1) DEFAULT NULL, + `TotalMsgCountRoot` bigint(20) DEFAULT NULL, + PRIMARY KEY (`Id`), + UNIQUE KEY `Name` (`Name`,`TeamId`), + KEY `idx_channels_team_id` (`TeamId`), + KEY `idx_channels_update_at` (`UpdateAt`), + KEY `idx_channels_create_at` (`CreateAt`), + KEY `idx_channels_delete_at` (`DeleteAt`), + KEY `idx_channels_scheme_id` (`SchemeId`), + FULLTEXT KEY `idx_channel_search_txt` (`Name`,`DisplayName`,`Purpose`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ClusterDiscovery` ( + `Id` varchar(26) NOT NULL, + `Type` varchar(64) DEFAULT NULL, + `ClusterName` varchar(64) DEFAULT NULL, + `Hostname` text, + `GossipPort` int(11) DEFAULT NULL, + `Port` int(11) DEFAULT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `LastPingAt` bigint(20) DEFAULT NULL, + PRIMARY KEY (`Id`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `CommandWebhooks` ( + `Id` varchar(26) NOT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `CommandId` varchar(26) DEFAULT NULL, + `UserId` varchar(26) DEFAULT NULL, + `ChannelId` varchar(26) DEFAULT NULL, + `RootId` varchar(26) DEFAULT NULL, + `UseCount` int(11) DEFAULT NULL, + PRIMARY KEY (`Id`), + KEY `idx_command_webhook_create_at` (`CreateAt`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Commands` ( + `Id` varchar(26) NOT NULL, + `Token` varchar(26) DEFAULT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `UpdateAt` bigint(20) DEFAULT NULL, + `DeleteAt` bigint(20) DEFAULT NULL, + `CreatorId` varchar(26) DEFAULT NULL, + `TeamId` varchar(26) DEFAULT NULL, + `Trigger` varchar(128) DEFAULT NULL, + `Method` varchar(1) DEFAULT NULL, + `Username` varchar(64) DEFAULT NULL, + `IconURL` text, + `AutoComplete` tinyint(1) DEFAULT NULL, + `AutoCompleteDesc` text, + `AutoCompleteHint` text, + `DisplayName` varchar(64) DEFAULT NULL, + `Description` varchar(128) DEFAULT NULL, + `URL` text, + `PluginId` varchar(190) DEFAULT NULL, + PRIMARY KEY (`Id`), + KEY `idx_command_team_id` (`TeamId`), + KEY `idx_command_update_at` (`UpdateAt`), + KEY `idx_command_create_at` (`CreateAt`), + KEY `idx_command_delete_at` (`DeleteAt`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Compliances` ( + `Id` varchar(26) NOT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `UserId` varchar(26) DEFAULT NULL, + `Status` varchar(64) DEFAULT NULL, + `Count` int(11) DEFAULT NULL, + `Desc` text, + `Type` varchar(64) DEFAULT NULL, + `StartAt` bigint(20) DEFAULT NULL, + `EndAt` bigint(20) DEFAULT NULL, + `Keywords` text, + `Emails` text, + PRIMARY KEY (`Id`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Emoji` ( + `Id` varchar(26) NOT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `UpdateAt` bigint(20) DEFAULT NULL, + `DeleteAt` bigint(20) DEFAULT NULL, + `CreatorId` varchar(26) DEFAULT NULL, + `Name` varchar(64) DEFAULT NULL, + PRIMARY KEY (`Id`), + UNIQUE KEY `Name` (`Name`,`DeleteAt`), + KEY `idx_emoji_update_at` (`UpdateAt`), + KEY `idx_emoji_create_at` (`CreateAt`), + KEY `idx_emoji_delete_at` (`DeleteAt`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `FileInfo` ( + `Id` varchar(26) NOT NULL, + `CreatorId` varchar(26) DEFAULT NULL, + `PostId` varchar(26) DEFAULT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `UpdateAt` bigint(20) DEFAULT NULL, + `DeleteAt` bigint(20) DEFAULT NULL, + `Path` text, + `ThumbnailPath` text, + `PreviewPath` text, + `Name` text, + `Extension` varchar(64) DEFAULT NULL, + `Size` bigint(20) DEFAULT NULL, + `MimeType` text, + `Width` int(11) DEFAULT NULL, + `Height` int(11) DEFAULT NULL, + `HasPreviewImage` tinyint(1) DEFAULT NULL, + `MiniPreview` mediumblob, + `Content` longtext, + `RemoteId` varchar(26) DEFAULT NULL, + PRIMARY KEY (`Id`), + KEY `idx_fileinfo_update_at` (`UpdateAt`), + KEY `idx_fileinfo_create_at` (`CreateAt`), + KEY `idx_fileinfo_delete_at` (`DeleteAt`), + KEY `idx_fileinfo_postid_at` (`PostId`), + KEY `idx_fileinfo_extension_at` (`Extension`), + FULLTEXT KEY `idx_fileinfo_name_txt` (`Name`), + FULLTEXT KEY `idx_fileinfo_content_txt` (`Content`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `GroupChannels` ( + `GroupId` varchar(26) NOT NULL, + `AutoAdd` tinyint(1) DEFAULT NULL, + `SchemeAdmin` tinyint(1) DEFAULT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `DeleteAt` bigint(20) DEFAULT NULL, + `UpdateAt` bigint(20) DEFAULT NULL, + `ChannelId` varchar(26) NOT NULL, + PRIMARY KEY (`GroupId`,`ChannelId`), + KEY `idx_groupchannels_channelid` (`ChannelId`), + KEY `idx_groupchannels_schemeadmin` (`SchemeAdmin`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `GroupMembers` ( + `GroupId` varchar(26) NOT NULL, + `UserId` varchar(26) NOT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `DeleteAt` bigint(20) DEFAULT NULL, + PRIMARY KEY (`GroupId`,`UserId`), + KEY `idx_groupmembers_create_at` (`CreateAt`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `GroupTeams` ( + `GroupId` varchar(26) NOT NULL, + `AutoAdd` tinyint(1) DEFAULT NULL, + `SchemeAdmin` tinyint(1) DEFAULT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `DeleteAt` bigint(20) DEFAULT NULL, + `UpdateAt` bigint(20) DEFAULT NULL, + `TeamId` varchar(26) NOT NULL, + PRIMARY KEY (`GroupId`,`TeamId`), + KEY `idx_groupteams_teamid` (`TeamId`), + KEY `idx_groupteams_schemeadmin` (`SchemeAdmin`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `IncomingWebhooks` ( + `Id` varchar(26) NOT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `UpdateAt` bigint(20) DEFAULT NULL, + `DeleteAt` bigint(20) DEFAULT NULL, + `UserId` varchar(26) DEFAULT NULL, + `ChannelId` varchar(26) DEFAULT NULL, + `TeamId` varchar(26) DEFAULT NULL, + `DisplayName` varchar(64) DEFAULT NULL, + `Description` text, + `Username` varchar(255) DEFAULT NULL, + `IconURL` text, + `ChannelLocked` tinyint(1) DEFAULT NULL, + PRIMARY KEY (`Id`), + KEY `idx_incoming_webhook_user_id` (`UserId`), + KEY `idx_incoming_webhook_team_id` (`TeamId`), + KEY `idx_incoming_webhook_update_at` (`UpdateAt`), + KEY `idx_incoming_webhook_create_at` (`CreateAt`), + KEY `idx_incoming_webhook_delete_at` (`DeleteAt`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Jobs` ( + `Id` varchar(26) NOT NULL, + `Type` varchar(32) DEFAULT NULL, + `Priority` bigint(20) DEFAULT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `StartAt` bigint(20) DEFAULT NULL, + `LastActivityAt` bigint(20) DEFAULT NULL, + `Status` varchar(32) DEFAULT NULL, + `Progress` bigint(20) DEFAULT NULL, + `Data` json DEFAULT NULL, + PRIMARY KEY (`Id`), + KEY `idx_jobs_type` (`Type`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Licenses` ( + `Id` varchar(26) NOT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `Bytes` text, + PRIMARY KEY (`Id`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `LinkMetadata` ( + `Hash` bigint(20) NOT NULL, + `URL` text, + `Timestamp` bigint(20) DEFAULT NULL, + `Type` varchar(16) DEFAULT NULL, + `Data` json DEFAULT NULL, + PRIMARY KEY (`Hash`), + KEY `idx_link_metadata_url_timestamp` (`URL`(512),`Timestamp`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `OAuthAccessData` ( + `ClientId` varchar(26) DEFAULT NULL, + `UserId` varchar(26) DEFAULT NULL, + `Token` varchar(26) NOT NULL, + `RefreshToken` varchar(26) DEFAULT NULL, + `RedirectUri` text, + `ExpiresAt` bigint(20) DEFAULT NULL, + `Scope` varchar(128) DEFAULT NULL, + PRIMARY KEY (`Token`), + UNIQUE KEY `ClientId` (`ClientId`,`UserId`), + KEY `idx_oauthaccessdata_user_id` (`UserId`), + KEY `idx_oauthaccessdata_refresh_token` (`RefreshToken`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `OAuthApps` ( + `Id` varchar(26) NOT NULL, + `CreatorId` varchar(26) DEFAULT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `UpdateAt` bigint(20) DEFAULT NULL, + `ClientSecret` varchar(128) DEFAULT NULL, + `Name` varchar(64) DEFAULT NULL, + `Description` text, + `IconURL` text, + `CallbackUrls` text, + `Homepage` text, + `IsTrusted` tinyint(1) DEFAULT NULL, + PRIMARY KEY (`Id`), + KEY `idx_oauthapps_creator_id` (`CreatorId`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `OAuthAuthData` ( + `ClientId` varchar(26) DEFAULT NULL, + `UserId` varchar(26) DEFAULT NULL, + `Code` varchar(128) NOT NULL, + `ExpiresIn` int(11) DEFAULT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `RedirectUri` text, + `State` text, + `Scope` varchar(128) DEFAULT NULL, + PRIMARY KEY (`Code`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `OutgoingWebhooks` ( + `Id` varchar(26) NOT NULL, + `Token` varchar(26) DEFAULT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `UpdateAt` bigint(20) DEFAULT NULL, + `DeleteAt` bigint(20) DEFAULT NULL, + `CreatorId` varchar(26) DEFAULT NULL, + `ChannelId` varchar(26) DEFAULT NULL, + `TeamId` varchar(26) DEFAULT NULL, + `TriggerWords` text, + `TriggerWhen` int(11) DEFAULT NULL, + `CallbackURLs` text, + `DisplayName` varchar(64) DEFAULT NULL, + `Description` text, + `ContentType` varchar(128) DEFAULT NULL, + `Username` varchar(64) DEFAULT NULL, + `IconURL` text, + PRIMARY KEY (`Id`), + KEY `idx_outgoing_webhook_team_id` (`TeamId`), + KEY `idx_outgoing_webhook_update_at` (`UpdateAt`), + KEY `idx_outgoing_webhook_create_at` (`CreateAt`), + KEY `idx_outgoing_webhook_delete_at` (`DeleteAt`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `PluginKeyValueStore` ( + `PluginId` varchar(190) NOT NULL, + `PKey` varchar(50) NOT NULL, + `PValue` mediumblob, + `ExpireAt` bigint(20) DEFAULT NULL, + PRIMARY KEY (`PluginId`,`PKey`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Posts` ( + `Id` varchar(26) NOT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `UpdateAt` bigint(20) DEFAULT NULL, + `EditAt` bigint(20) DEFAULT NULL, + `DeleteAt` bigint(20) DEFAULT NULL, + `IsPinned` tinyint(1) DEFAULT NULL, + `UserId` varchar(26) DEFAULT NULL, + `ChannelId` varchar(26) DEFAULT NULL, + `RootId` varchar(26) DEFAULT NULL, + `OriginalId` varchar(26) DEFAULT NULL, + `Message` text, + `Type` varchar(26) DEFAULT NULL, + `Props` json DEFAULT NULL, + `Hashtags` text, + `Filenames` text, + `FileIds` text, + `HasReactions` tinyint(1) DEFAULT NULL, + `RemoteId` varchar(26) DEFAULT NULL, + PRIMARY KEY (`Id`), + KEY `idx_posts_update_at` (`UpdateAt`), + KEY `idx_posts_create_at` (`CreateAt`), + KEY `idx_posts_delete_at` (`DeleteAt`), + KEY `idx_posts_root_id` (`RootId`), + KEY `idx_posts_user_id` (`UserId`), + KEY `idx_posts_is_pinned` (`IsPinned`), + KEY `idx_posts_channel_id_update_at` (`ChannelId`,`UpdateAt`), + KEY `idx_posts_channel_id_delete_at_create_at` (`ChannelId`,`DeleteAt`,`CreateAt`), + FULLTEXT KEY `idx_posts_message_txt` (`Message`), + FULLTEXT KEY `idx_posts_hashtags_txt` (`Hashtags`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Preferences` ( + `UserId` varchar(26) NOT NULL, + `Category` varchar(32) NOT NULL, + `Name` varchar(32) NOT NULL, + `Value` text, + PRIMARY KEY (`UserId`,`Category`,`Name`), + KEY `idx_preferences_category` (`Category`), + KEY `idx_preferences_name` (`Name`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ProductNoticeViewState` ( + `UserId` varchar(26) NOT NULL, + `NoticeId` varchar(26) NOT NULL, + `Viewed` int(11) DEFAULT NULL, + `Timestamp` bigint(20) DEFAULT NULL, + PRIMARY KEY (`UserId`,`NoticeId`), + KEY `idx_notice_views_timestamp` (`Timestamp`), + KEY `idx_notice_views_notice_id` (`NoticeId`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `PublicChannels` ( + `Id` varchar(26) NOT NULL, + `DeleteAt` bigint(20) DEFAULT NULL, + `TeamId` varchar(26) DEFAULT NULL, + `DisplayName` varchar(64) DEFAULT NULL, + `Name` varchar(64) DEFAULT NULL, + `Header` text, + `Purpose` varchar(250) DEFAULT NULL, + PRIMARY KEY (`Id`), + UNIQUE KEY `Name` (`Name`,`TeamId`), + KEY `idx_publicchannels_team_id` (`TeamId`), + KEY `idx_publicchannels_delete_at` (`DeleteAt`), + FULLTEXT KEY `idx_publicchannels_search_txt` (`Name`,`DisplayName`,`Purpose`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Reactions` ( + `UserId` varchar(26) NOT NULL, + `PostId` varchar(26) NOT NULL, + `EmojiName` varchar(64) NOT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `UpdateAt` bigint(20) DEFAULT NULL, + `DeleteAt` bigint(20) DEFAULT NULL, + `RemoteId` varchar(26) DEFAULT NULL, + PRIMARY KEY (`PostId`,`UserId`,`EmojiName`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `RemoteClusters` ( + `RemoteId` varchar(26) NOT NULL, + `RemoteTeamId` varchar(26) DEFAULT NULL, + `Name` varchar(64) NOT NULL, + `DisplayName` varchar(64) DEFAULT NULL, + `SiteURL` text, + `CreateAt` bigint(20) DEFAULT NULL, + `LastPingAt` bigint(20) DEFAULT NULL, + `Token` varchar(26) DEFAULT NULL, + `RemoteToken` varchar(26) DEFAULT NULL, + `Topics` text, + `CreatorId` varchar(26) DEFAULT NULL, + PRIMARY KEY (`RemoteId`,`Name`), + UNIQUE KEY `remote_clusters_site_url_unique` (`RemoteTeamId`,`SiteURL`(168)) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `RetentionPolicies` ( + `Id` varchar(26) NOT NULL, + `DisplayName` varchar(64) DEFAULT NULL, + `PostDuration` bigint(20) DEFAULT NULL, + PRIMARY KEY (`Id`), + KEY `IDX_RetentionPolicies_DisplayName` (`DisplayName`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `RetentionPoliciesChannels` ( + `PolicyId` varchar(26) DEFAULT NULL, + `ChannelId` varchar(26) NOT NULL, + PRIMARY KEY (`ChannelId`), + KEY `IDX_RetentionPoliciesChannels_PolicyId` (`PolicyId`), + CONSTRAINT `FK_RetentionPoliciesChannels_RetentionPolicies` FOREIGN KEY (`PolicyId`) REFERENCES `RetentionPolicies` (`Id`) ON DELETE CASCADE +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `RetentionPoliciesTeams` ( + `PolicyId` varchar(26) DEFAULT NULL, + `TeamId` varchar(26) NOT NULL, + PRIMARY KEY (`TeamId`), + KEY `IDX_RetentionPoliciesTeams_PolicyId` (`PolicyId`), + CONSTRAINT `FK_RetentionPoliciesTeams_RetentionPolicies` FOREIGN KEY (`PolicyId`) REFERENCES `RetentionPolicies` (`Id`) ON DELETE CASCADE +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Roles` ( + `Id` varchar(26) NOT NULL, + `Name` varchar(64) DEFAULT NULL, + `DisplayName` varchar(128) DEFAULT NULL, + `Description` text, + `CreateAt` bigint(20) DEFAULT NULL, + `UpdateAt` bigint(20) DEFAULT NULL, + `DeleteAt` bigint(20) DEFAULT NULL, + `Permissions` longtext, + `SchemeManaged` tinyint(1) DEFAULT NULL, + `BuiltIn` tinyint(1) DEFAULT NULL, + PRIMARY KEY (`Id`), + UNIQUE KEY `Name` (`Name`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Schemes` ( + `Id` varchar(26) NOT NULL, + `Name` varchar(64) DEFAULT NULL, + `DisplayName` varchar(128) DEFAULT NULL, + `Description` text, + `CreateAt` bigint(20) DEFAULT NULL, + `UpdateAt` bigint(20) DEFAULT NULL, + `DeleteAt` bigint(20) DEFAULT NULL, + `Scope` varchar(32) DEFAULT NULL, + `DefaultTeamAdminRole` varchar(64) DEFAULT NULL, + `DefaultTeamUserRole` varchar(64) DEFAULT NULL, + `DefaultChannelAdminRole` varchar(64) DEFAULT NULL, + `DefaultChannelUserRole` varchar(64) DEFAULT NULL, + `DefaultTeamGuestRole` varchar(64) DEFAULT NULL, + `DefaultChannelGuestRole` varchar(64) DEFAULT NULL, + PRIMARY KEY (`Id`), + UNIQUE KEY `Name` (`Name`), + KEY `idx_schemes_channel_guest_role` (`DefaultChannelGuestRole`), + KEY `idx_schemes_channel_user_role` (`DefaultChannelUserRole`), + KEY `idx_schemes_channel_admin_role` (`DefaultChannelAdminRole`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Sessions` ( + `Id` varchar(26) NOT NULL, + `Token` varchar(26) DEFAULT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `ExpiresAt` bigint(20) DEFAULT NULL, + `LastActivityAt` bigint(20) DEFAULT NULL, + `UserId` varchar(26) DEFAULT NULL, + `DeviceId` text, + `Roles` varchar(64) DEFAULT NULL, + `IsOAuth` tinyint(1) DEFAULT NULL, + `ExpiredNotify` tinyint(1) DEFAULT NULL, + `Props` json DEFAULT NULL, + PRIMARY KEY (`Id`), + KEY `idx_sessions_user_id` (`UserId`), + KEY `idx_sessions_token` (`Token`), + KEY `idx_sessions_expires_at` (`ExpiresAt`), + KEY `idx_sessions_create_at` (`CreateAt`), + KEY `idx_sessions_last_activity_at` (`LastActivityAt`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `SharedChannelAttachments` ( + `Id` varchar(26) NOT NULL, + `FileId` varchar(26) DEFAULT NULL, + `RemoteId` varchar(26) DEFAULT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `LastSyncAt` bigint(20) DEFAULT NULL, + PRIMARY KEY (`Id`), + UNIQUE KEY `FileId` (`FileId`,`RemoteId`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `SharedChannelRemotes` ( + `Id` varchar(26) NOT NULL, + `ChannelId` varchar(26) NOT NULL, + `CreatorId` varchar(26) DEFAULT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `UpdateAt` bigint(20) DEFAULT NULL, + `IsInviteAccepted` tinyint(1) DEFAULT NULL, + `IsInviteConfirmed` tinyint(1) DEFAULT NULL, + `RemoteId` varchar(26) DEFAULT NULL, + `LastPostUpdateAt` bigint(20) DEFAULT NULL, + `LastPostId` varchar(26) DEFAULT NULL, + PRIMARY KEY (`Id`,`ChannelId`), + UNIQUE KEY `ChannelId` (`ChannelId`,`RemoteId`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `SharedChannelUsers` ( + `Id` varchar(26) NOT NULL, + `UserId` varchar(26) DEFAULT NULL, + `ChannelId` varchar(26) DEFAULT NULL, + `RemoteId` varchar(26) DEFAULT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `LastSyncAt` bigint(20) DEFAULT NULL, + PRIMARY KEY (`Id`), + UNIQUE KEY `UserId` (`UserId`,`ChannelId`,`RemoteId`), + KEY `idx_sharedchannelusers_remote_id` (`RemoteId`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `SharedChannels` ( + `ChannelId` varchar(26) NOT NULL, + `TeamId` varchar(26) DEFAULT NULL, + `Home` tinyint(1) DEFAULT NULL, + `ReadOnly` tinyint(1) DEFAULT NULL, + `ShareName` varchar(64) DEFAULT NULL, + `ShareDisplayName` varchar(64) DEFAULT NULL, + `SharePurpose` varchar(250) DEFAULT NULL, + `ShareHeader` text, + `CreatorId` varchar(26) DEFAULT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `UpdateAt` bigint(20) DEFAULT NULL, + `RemoteId` varchar(26) DEFAULT NULL, + PRIMARY KEY (`ChannelId`), + UNIQUE KEY `ShareName` (`ShareName`,`TeamId`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `SidebarCategories` ( + `Id` varchar(128) NOT NULL, + `UserId` varchar(26) DEFAULT NULL, + `TeamId` varchar(26) DEFAULT NULL, + `SortOrder` bigint(20) DEFAULT NULL, + `Sorting` varchar(64) DEFAULT NULL, + `Type` varchar(64) DEFAULT NULL, + `DisplayName` varchar(64) DEFAULT NULL, + `Muted` tinyint(1) DEFAULT NULL, + `Collapsed` tinyint(1) DEFAULT NULL, + PRIMARY KEY (`Id`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `SidebarChannels` ( + `ChannelId` varchar(26) NOT NULL, + `UserId` varchar(26) NOT NULL, + `CategoryId` varchar(128) NOT NULL, + `SortOrder` bigint(20) DEFAULT NULL, + PRIMARY KEY (`ChannelId`,`UserId`,`CategoryId`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Status` ( + `UserId` varchar(26) NOT NULL, + `Status` varchar(32) DEFAULT NULL, + `Manual` tinyint(1) DEFAULT NULL, + `LastActivityAt` bigint(20) DEFAULT NULL, + `DNDEndTime` bigint(20) DEFAULT NULL, + `PrevStatus` varchar(32) DEFAULT NULL, + PRIMARY KEY (`UserId`), + KEY `idx_status_status` (`Status`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Systems` ( + `Name` varchar(64) NOT NULL, + `Value` text, + PRIMARY KEY (`Name`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `TeamMembers` ( + `TeamId` varchar(26) NOT NULL, + `UserId` varchar(26) NOT NULL, + `Roles` varchar(64) DEFAULT NULL, + `DeleteAt` bigint(20) DEFAULT NULL, + `SchemeUser` tinyint(4) DEFAULT NULL, + `SchemeAdmin` tinyint(4) DEFAULT NULL, + `SchemeGuest` tinyint(4) DEFAULT NULL, + PRIMARY KEY (`TeamId`,`UserId`), + KEY `idx_teammembers_user_id` (`UserId`), + KEY `idx_teammembers_delete_at` (`DeleteAt`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Teams` ( + `Id` varchar(26) NOT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `UpdateAt` bigint(20) DEFAULT NULL, + `DeleteAt` bigint(20) DEFAULT NULL, + `DisplayName` varchar(64) DEFAULT NULL, + `Name` varchar(64) DEFAULT NULL, + `Description` varchar(255) DEFAULT NULL, + `Email` varchar(128) DEFAULT NULL, + `Type` varchar(255) DEFAULT NULL, + `CompanyName` varchar(64) DEFAULT NULL, + `AllowedDomains` text, + `InviteId` varchar(32) DEFAULT NULL, + `SchemeId` varchar(26) DEFAULT NULL, + `AllowOpenInvite` tinyint(1) DEFAULT NULL, + `LastTeamIconUpdate` bigint(20) DEFAULT NULL, + `GroupConstrained` tinyint(1) DEFAULT NULL, + PRIMARY KEY (`Id`), + UNIQUE KEY `Name` (`Name`), + KEY `idx_teams_invite_id` (`InviteId`), + KEY `idx_teams_update_at` (`UpdateAt`), + KEY `idx_teams_create_at` (`CreateAt`), + KEY `idx_teams_delete_at` (`DeleteAt`), + KEY `idx_teams_scheme_id` (`SchemeId`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `TermsOfService` ( + `Id` varchar(26) NOT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `UserId` varchar(26) DEFAULT NULL, + `Text` text, + PRIMARY KEY (`Id`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ThreadMemberships` ( + `PostId` varchar(26) NOT NULL, + `UserId` varchar(26) NOT NULL, + `Following` tinyint(1) DEFAULT NULL, + `LastViewed` bigint(20) DEFAULT NULL, + `LastUpdated` bigint(20) DEFAULT NULL, + `UnreadMentions` bigint(20) DEFAULT NULL, + PRIMARY KEY (`PostId`,`UserId`), + KEY `idx_thread_memberships_last_update_at` (`LastUpdated`), + KEY `idx_thread_memberships_last_view_at` (`LastViewed`), + KEY `idx_thread_memberships_user_id` (`UserId`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Threads` ( + `PostId` varchar(26) NOT NULL, + `ChannelId` varchar(26) DEFAULT NULL, + `ReplyCount` bigint(20) DEFAULT NULL, + `LastReplyAt` bigint(20) DEFAULT NULL, + `Participants` json DEFAULT NULL, + PRIMARY KEY (`PostId`), + KEY `idx_threads_channel_id` (`ChannelId`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Tokens` ( + `Token` varchar(64) NOT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `Type` varchar(64) DEFAULT NULL, + `Extra` text, + PRIMARY KEY (`Token`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `UploadSessions` ( + `Id` varchar(26) NOT NULL, + `Type` varchar(32) DEFAULT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `UserId` varchar(26) DEFAULT NULL, + `ChannelId` varchar(26) DEFAULT NULL, + `Filename` text, + `Path` text, + `FileSize` bigint(20) DEFAULT NULL, + `FileOffset` bigint(20) DEFAULT NULL, + `RemoteId` varchar(26) DEFAULT NULL, + `ReqFileId` varchar(26) DEFAULT NULL, + PRIMARY KEY (`Id`), + KEY `idx_uploadsessions_user_id` (`Type`), + KEY `idx_uploadsessions_create_at` (`CreateAt`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `UserAccessTokens` ( + `Id` varchar(26) NOT NULL, + `Token` varchar(26) DEFAULT NULL, + `UserId` varchar(26) DEFAULT NULL, + `Description` text, + `IsActive` tinyint(1) DEFAULT NULL, + PRIMARY KEY (`Id`), + UNIQUE KEY `Token` (`Token`), + KEY `idx_user_access_tokens_user_id` (`UserId`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `UserGroups` ( + `Id` varchar(26) NOT NULL, + `Name` varchar(64) DEFAULT NULL, + `DisplayName` varchar(128) DEFAULT NULL, + `Description` text, + `Source` varchar(64) DEFAULT NULL, + `RemoteId` varchar(48) DEFAULT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `UpdateAt` bigint(20) DEFAULT NULL, + `DeleteAt` bigint(20) DEFAULT NULL, + `AllowReference` tinyint(1) DEFAULT NULL, + PRIMARY KEY (`Id`), + UNIQUE KEY `Name` (`Name`), + UNIQUE KEY `Source` (`Source`,`RemoteId`), + KEY `idx_usergroups_remote_id` (`RemoteId`), + KEY `idx_usergroups_delete_at` (`DeleteAt`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `UserTermsOfService` ( + `UserId` varchar(26) NOT NULL, + `TermsOfServiceId` varchar(26) DEFAULT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + PRIMARY KEY (`UserId`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Users` ( + `Id` varchar(26) NOT NULL, + `CreateAt` bigint(20) DEFAULT NULL, + `UpdateAt` bigint(20) DEFAULT NULL, + `DeleteAt` bigint(20) DEFAULT NULL, + `Username` varchar(64) DEFAULT NULL, + `Password` varchar(128) DEFAULT NULL, + `AuthData` varchar(128) DEFAULT NULL, + `AuthService` varchar(32) DEFAULT NULL, + `Email` varchar(128) DEFAULT NULL, + `EmailVerified` tinyint(1) DEFAULT NULL, + `Nickname` varchar(64) DEFAULT NULL, + `FirstName` varchar(64) DEFAULT NULL, + `LastName` varchar(64) DEFAULT NULL, + `Position` varchar(128) DEFAULT NULL, + `Roles` text, + `AllowMarketing` tinyint(1) DEFAULT NULL, + `Props` json DEFAULT NULL, + `NotifyProps` json DEFAULT NULL, + `LastPasswordUpdate` bigint(20) DEFAULT NULL, + `LastPictureUpdate` bigint(20) DEFAULT NULL, + `FailedAttempts` int(11) DEFAULT NULL, + `Locale` varchar(5) DEFAULT NULL, + `Timezone` json DEFAULT NULL, + `MfaActive` tinyint(1) DEFAULT NULL, + `MfaSecret` varchar(128) DEFAULT NULL, + `RemoteId` varchar(26) DEFAULT NULL, + PRIMARY KEY (`Id`), + UNIQUE KEY `Username` (`Username`), + UNIQUE KEY `AuthData` (`AuthData`), + UNIQUE KEY `Email` (`Email`), + KEY `idx_users_update_at` (`UpdateAt`), + KEY `idx_users_create_at` (`CreateAt`), + KEY `idx_users_delete_at` (`DeleteAt`), + FULLTEXT KEY `idx_users_all_txt` (`Username`,`FirstName`,`LastName`,`Nickname`,`Email`), + FULLTEXT KEY `idx_users_all_no_full_name_txt` (`Username`,`Nickname`,`Email`), + FULLTEXT KEY `idx_users_names_txt` (`Username`,`FirstName`,`LastName`,`Nickname`), + FULLTEXT KEY `idx_users_names_no_full_name_txt` (`Username`,`Nickname`) +); +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `schema_migrations` ( + `version` bigint(20) NOT NULL, + `dirty` tinyint(1) NOT NULL, + PRIMARY KEY (`version`) +); +/*!40101 SET character_set_client = @saved_cs_client */; diff --git a/scripts/mattermost-postgresql-6.0.sql b/scripts/mattermost-postgresql-6.0.sql new file mode 100644 index 0000000000..c423b8250e --- /dev/null +++ b/scripts/mattermost-postgresql-6.0.sql @@ -0,0 +1,2377 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 11.7 +-- Dumped by pg_dump version 11.10 (Ubuntu 11.10-1.pgdg18.04+1) + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: audits; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.audits ( + id character varying(26) NOT NULL, + createat bigint, + userid character varying(26), + action character varying(512), + extrainfo character varying(1024), + ipaddress character varying(64), + sessionid character varying(26) +); + + +ALTER TABLE public.audits OWNER TO mmuser; + +-- +-- Name: bots; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.bots ( + userid character varying(26) NOT NULL, + description character varying(1024), + ownerid character varying(190), + lasticonupdate bigint, + createat bigint, + updateat bigint, + deleteat bigint +); + + +ALTER TABLE public.bots OWNER TO mmuser; + +-- +-- Name: channelmemberhistory; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.channelmemberhistory ( + channelid character varying(26) NOT NULL, + userid character varying(26) NOT NULL, + jointime bigint NOT NULL, + leavetime bigint +); + + +ALTER TABLE public.channelmemberhistory OWNER TO mmuser; + +-- +-- Name: channelmembers; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.channelmembers ( + channelid character varying(26) NOT NULL, + userid character varying(26) NOT NULL, + roles character varying(64), + lastviewedat bigint, + msgcount bigint, + mentioncount bigint, + notifyprops jsonb, + lastupdateat bigint, + schemeuser boolean, + schemeadmin boolean, + schemeguest boolean, + mentioncountroot bigint, + msgcountroot bigint +); + + +ALTER TABLE public.channelmembers OWNER TO mmuser; + +-- +-- Name: channels; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.channels ( + id character varying(26) NOT NULL, + createat bigint, + updateat bigint, + deleteat bigint, + teamid character varying(26), + type character varying(1), + displayname character varying(64), + name character varying(64), + header character varying(1024), + purpose character varying(250), + lastpostat bigint, + totalmsgcount bigint, + extraupdateat bigint, + creatorid character varying(26), + schemeid character varying(26), + groupconstrained boolean, + shared boolean, + totalmsgcountroot bigint +); + + +ALTER TABLE public.channels OWNER TO mmuser; + +-- +-- Name: clusterdiscovery; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.clusterdiscovery ( + id character varying(26) NOT NULL, + type character varying(64), + clustername character varying(64), + hostname character varying(512), + gossipport integer, + port integer, + createat bigint, + lastpingat bigint +); + + +ALTER TABLE public.clusterdiscovery OWNER TO mmuser; + +-- +-- Name: commands; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.commands ( + id character varying(26) NOT NULL, + token character varying(26), + createat bigint, + updateat bigint, + deleteat bigint, + creatorid character varying(26), + teamid character varying(26), + trigger character varying(128), + method character varying(1), + username character varying(64), + iconurl character varying(1024), + autocomplete boolean, + autocompletedesc character varying(1024), + autocompletehint character varying(1024), + displayname character varying(64), + description character varying(128), + url character varying(1024), + pluginid character varying(190) +); + + +ALTER TABLE public.commands OWNER TO mmuser; + +-- +-- Name: commandwebhooks; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.commandwebhooks ( + id character varying(26) NOT NULL, + createat bigint, + commandid character varying(26), + userid character varying(26), + channelid character varying(26), + rootid character varying(26), + usecount integer +); + + +ALTER TABLE public.commandwebhooks OWNER TO mmuser; + +-- +-- Name: compliances; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.compliances ( + id character varying(26) NOT NULL, + createat bigint, + userid character varying(26), + status character varying(64), + count integer, + "desc" character varying(512), + type character varying(64), + startat bigint, + endat bigint, + keywords character varying(512), + emails character varying(1024) +); + + +ALTER TABLE public.compliances OWNER TO mmuser; + +-- +-- Name: emoji; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.emoji ( + id character varying(26) NOT NULL, + createat bigint, + updateat bigint, + deleteat bigint, + creatorid character varying(26), + name character varying(64) +); + + +ALTER TABLE public.emoji OWNER TO mmuser; + +-- +-- Name: fileinfo; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.fileinfo ( + id character varying(26) NOT NULL, + creatorid character varying(26), + postid character varying(26), + createat bigint, + updateat bigint, + deleteat bigint, + path character varying(512), + thumbnailpath character varying(512), + previewpath character varying(512), + name character varying(256), + extension character varying(64), + size bigint, + mimetype character varying(256), + width integer, + height integer, + haspreviewimage boolean, + minipreview bytea, + content text, + remoteid character varying(26) +); + + +ALTER TABLE public.fileinfo OWNER TO mmuser; + +-- +-- Name: groupchannels; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.groupchannels ( + groupid character varying(26) NOT NULL, + autoadd boolean, + schemeadmin boolean, + createat bigint, + deleteat bigint, + updateat bigint, + channelid character varying(26) NOT NULL +); + + +ALTER TABLE public.groupchannels OWNER TO mmuser; + +-- +-- Name: groupmembers; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.groupmembers ( + groupid character varying(26) NOT NULL, + userid character varying(26) NOT NULL, + createat bigint, + deleteat bigint +); + + +ALTER TABLE public.groupmembers OWNER TO mmuser; + +-- +-- Name: groupteams; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.groupteams ( + groupid character varying(26) NOT NULL, + autoadd boolean, + schemeadmin boolean, + createat bigint, + deleteat bigint, + updateat bigint, + teamid character varying(26) NOT NULL +); + + +ALTER TABLE public.groupteams OWNER TO mmuser; + +-- +-- Name: incomingwebhooks; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.incomingwebhooks ( + id character varying(26) NOT NULL, + createat bigint, + updateat bigint, + deleteat bigint, + userid character varying(26), + channelid character varying(26), + teamid character varying(26), + displayname character varying(64), + description character varying(500), + username character varying(255), + iconurl character varying(1024), + channellocked boolean +); + + +ALTER TABLE public.incomingwebhooks OWNER TO mmuser; + +-- +-- Name: jobs; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.jobs ( + id character varying(26) NOT NULL, + type character varying(32), + priority bigint, + createat bigint, + startat bigint, + lastactivityat bigint, + status character varying(32), + progress bigint, + data jsonb +); + + +ALTER TABLE public.jobs OWNER TO mmuser; + +-- +-- Name: licenses; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.licenses ( + id character varying(26) NOT NULL, + createat bigint, + bytes character varying(10000) +); + + +ALTER TABLE public.licenses OWNER TO mmuser; + +-- +-- Name: linkmetadata; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.linkmetadata ( + hash bigint NOT NULL, + url character varying(2048), + "timestamp" bigint, + type character varying(16), + data jsonb +); + + +ALTER TABLE public.linkmetadata OWNER TO mmuser; + +-- +-- Name: oauthaccessdata; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.oauthaccessdata ( + clientid character varying(26), + userid character varying(26), + token character varying(26) NOT NULL, + refreshtoken character varying(26), + redirecturi character varying(256), + expiresat bigint, + scope character varying(128) +); + + +ALTER TABLE public.oauthaccessdata OWNER TO mmuser; + +-- +-- Name: oauthapps; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.oauthapps ( + id character varying(26) NOT NULL, + creatorid character varying(26), + createat bigint, + updateat bigint, + clientsecret character varying(128), + name character varying(64), + description character varying(512), + iconurl character varying(512), + callbackurls character varying(1024), + homepage character varying(256), + istrusted boolean +); + + +ALTER TABLE public.oauthapps OWNER TO mmuser; + +-- +-- Name: oauthauthdata; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.oauthauthdata ( + clientid character varying(26), + userid character varying(26), + code character varying(128) NOT NULL, + expiresin integer, + createat bigint, + redirecturi character varying(256), + state character varying(1024), + scope character varying(128) +); + + +ALTER TABLE public.oauthauthdata OWNER TO mmuser; + +-- +-- Name: outgoingwebhooks; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.outgoingwebhooks ( + id character varying(26) NOT NULL, + token character varying(26), + createat bigint, + updateat bigint, + deleteat bigint, + creatorid character varying(26), + channelid character varying(26), + teamid character varying(26), + triggerwords character varying(1024), + triggerwhen integer, + callbackurls character varying(1024), + displayname character varying(64), + description character varying(500), + contenttype character varying(128), + username character varying(64), + iconurl character varying(1024) +); + + +ALTER TABLE public.outgoingwebhooks OWNER TO mmuser; + +-- +-- Name: pluginkeyvaluestore; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.pluginkeyvaluestore ( + pluginid character varying(190) NOT NULL, + pkey character varying(50) NOT NULL, + pvalue bytea, + expireat bigint +); + + +ALTER TABLE public.pluginkeyvaluestore OWNER TO mmuser; + +-- +-- Name: posts; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.posts ( + id character varying(26) NOT NULL, + createat bigint, + updateat bigint, + editat bigint, + deleteat bigint, + ispinned boolean, + userid character varying(26), + channelid character varying(26), + rootid character varying(26), + originalid character varying(26), + message character varying(65535), + type character varying(26), + props jsonb, + hashtags character varying(1000), + filenames character varying(4000), + fileids character varying(300), + hasreactions boolean, + remoteid character varying(26) +); + + +ALTER TABLE public.posts OWNER TO mmuser; + +-- +-- Name: preferences; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.preferences ( + userid character varying(26) NOT NULL, + category character varying(32) NOT NULL, + name character varying(32) NOT NULL, + value character varying(2000) +); + + +ALTER TABLE public.preferences OWNER TO mmuser; + +-- +-- Name: productnoticeviewstate; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.productnoticeviewstate ( + userid character varying(26) NOT NULL, + noticeid character varying(26) NOT NULL, + viewed integer, + "timestamp" bigint +); + + +ALTER TABLE public.productnoticeviewstate OWNER TO mmuser; + +-- +-- Name: publicchannels; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.publicchannels ( + id character varying(26) NOT NULL, + deleteat bigint, + teamid character varying(26), + displayname character varying(64), + name character varying(64), + header character varying(1024), + purpose character varying(250) +); + + +ALTER TABLE public.publicchannels OWNER TO mmuser; + +-- +-- Name: reactions; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.reactions ( + userid character varying(26) NOT NULL, + postid character varying(26) NOT NULL, + emojiname character varying(64) NOT NULL, + createat bigint, + updateat bigint, + deleteat bigint, + remoteid character varying(26) +); + + +ALTER TABLE public.reactions OWNER TO mmuser; + +-- +-- Name: remoteclusters; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.remoteclusters ( + remoteid character varying(26) NOT NULL, + remoteteamid character varying(26), + name character varying(64) NOT NULL, + displayname character varying(64), + siteurl character varying(512), + createat bigint, + lastpingat bigint, + token character varying(26), + remotetoken character varying(26), + topics character varying(512), + creatorid character varying(26) +); + + +ALTER TABLE public.remoteclusters OWNER TO mmuser; + +-- +-- Name: retentionpolicies; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.retentionpolicies ( + id character varying(26) NOT NULL, + displayname character varying(64), + postduration bigint +); + + +ALTER TABLE public.retentionpolicies OWNER TO mmuser; + +-- +-- Name: retentionpolicieschannels; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.retentionpolicieschannels ( + policyid character varying(26), + channelid character varying(26) NOT NULL +); + + +ALTER TABLE public.retentionpolicieschannels OWNER TO mmuser; + +-- +-- Name: retentionpoliciesteams; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.retentionpoliciesteams ( + policyid character varying(26), + teamid character varying(26) NOT NULL +); + + +ALTER TABLE public.retentionpoliciesteams OWNER TO mmuser; + +-- +-- Name: roles; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.roles ( + id character varying(26) NOT NULL, + name character varying(64), + displayname character varying(128), + description character varying(1024), + createat bigint, + updateat bigint, + deleteat bigint, + permissions text, + schememanaged boolean, + builtin boolean +); + + +ALTER TABLE public.roles OWNER TO mmuser; + +-- +-- Name: schema_migrations; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.schema_migrations ( + version bigint NOT NULL, + dirty boolean NOT NULL +); + + +ALTER TABLE public.schema_migrations OWNER TO mmuser; + +-- +-- Name: schemes; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.schemes ( + id character varying(26) NOT NULL, + name character varying(64), + displayname character varying(128), + description character varying(1024), + createat bigint, + updateat bigint, + deleteat bigint, + scope character varying(32), + defaultteamadminrole character varying(64), + defaultteamuserrole character varying(64), + defaultchanneladminrole character varying(64), + defaultchanneluserrole character varying(64), + defaultteamguestrole character varying(64), + defaultchannelguestrole character varying(64) +); + + +ALTER TABLE public.schemes OWNER TO mmuser; + +-- +-- Name: sessions; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.sessions ( + id character varying(26) NOT NULL, + token character varying(26), + createat bigint, + expiresat bigint, + lastactivityat bigint, + userid character varying(26), + deviceid character varying(512), + roles character varying(64), + isoauth boolean, + expirednotify boolean, + props jsonb +); + + +ALTER TABLE public.sessions OWNER TO mmuser; + +-- +-- Name: sharedchannelattachments; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.sharedchannelattachments ( + id character varying(26) NOT NULL, + fileid character varying(26), + remoteid character varying(26), + createat bigint, + lastsyncat bigint +); + + +ALTER TABLE public.sharedchannelattachments OWNER TO mmuser; + +-- +-- Name: sharedchannelremotes; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.sharedchannelremotes ( + id character varying(26) NOT NULL, + channelid character varying(26) NOT NULL, + creatorid character varying(26), + createat bigint, + updateat bigint, + isinviteaccepted boolean, + isinviteconfirmed boolean, + remoteid character varying(26), + lastpostupdateat bigint, + lastpostid character varying(26) +); + + +ALTER TABLE public.sharedchannelremotes OWNER TO mmuser; + +-- +-- Name: sharedchannels; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.sharedchannels ( + channelid character varying(26) NOT NULL, + teamid character varying(26), + home boolean, + readonly boolean, + sharename character varying(64), + sharedisplayname character varying(64), + sharepurpose character varying(250), + shareheader character varying(1024), + creatorid character varying(26), + createat bigint, + updateat bigint, + remoteid character varying(26) +); + + +ALTER TABLE public.sharedchannels OWNER TO mmuser; + +-- +-- Name: sharedchannelusers; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.sharedchannelusers ( + id character varying(26) NOT NULL, + userid character varying(26), + channelid character varying(26), + remoteid character varying(26), + createat bigint, + lastsyncat bigint +); + + +ALTER TABLE public.sharedchannelusers OWNER TO mmuser; + +-- +-- Name: sidebarcategories; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.sidebarcategories ( + id character varying(128) NOT NULL, + userid character varying(26), + teamid character varying(26), + sortorder bigint, + sorting character varying(64), + type character varying(64), + displayname character varying(64), + muted boolean, + collapsed boolean +); + + +ALTER TABLE public.sidebarcategories OWNER TO mmuser; + +-- +-- Name: sidebarchannels; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.sidebarchannels ( + channelid character varying(26) NOT NULL, + userid character varying(26) NOT NULL, + categoryid character varying(128) NOT NULL, + sortorder bigint +); + + +ALTER TABLE public.sidebarchannels OWNER TO mmuser; + +-- +-- Name: status; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.status ( + userid character varying(26) NOT NULL, + status character varying(32), + manual boolean, + lastactivityat bigint, + dndendtime bigint, + prevstatus character varying(32) +); + + +ALTER TABLE public.status OWNER TO mmuser; + +-- +-- Name: systems; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.systems ( + name character varying(64) NOT NULL, + value character varying(1024) +); + + +ALTER TABLE public.systems OWNER TO mmuser; + +-- +-- Name: teammembers; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.teammembers ( + teamid character varying(26) NOT NULL, + userid character varying(26) NOT NULL, + roles character varying(64), + deleteat bigint, + schemeuser boolean, + schemeadmin boolean, + schemeguest boolean +); + + +ALTER TABLE public.teammembers OWNER TO mmuser; + +-- +-- Name: teams; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.teams ( + id character varying(26) NOT NULL, + createat bigint, + updateat bigint, + deleteat bigint, + displayname character varying(64), + name character varying(64), + description character varying(255), + email character varying(128), + type character varying(255), + companyname character varying(64), + alloweddomains character varying(1000), + inviteid character varying(32), + schemeid character varying(26), + allowopeninvite boolean, + lastteamiconupdate bigint, + groupconstrained boolean +); + + +ALTER TABLE public.teams OWNER TO mmuser; + +-- +-- Name: termsofservice; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.termsofservice ( + id character varying(26) NOT NULL, + createat bigint, + userid character varying(26), + text character varying(65535) +); + + +ALTER TABLE public.termsofservice OWNER TO mmuser; + +-- +-- Name: threadmemberships; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.threadmemberships ( + postid character varying(26) NOT NULL, + userid character varying(26) NOT NULL, + following boolean, + lastviewed bigint, + lastupdated bigint, + unreadmentions bigint +); + + +ALTER TABLE public.threadmemberships OWNER TO mmuser; + +-- +-- Name: threads; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.threads ( + postid character varying(26) NOT NULL, + channelid character varying(26), + replycount bigint, + lastreplyat bigint, + participants jsonb +); + + +ALTER TABLE public.threads OWNER TO mmuser; + +-- +-- Name: tokens; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.tokens ( + token character varying(64) NOT NULL, + createat bigint, + type character varying(64), + extra character varying(2048) +); + + +ALTER TABLE public.tokens OWNER TO mmuser; + +-- +-- Name: uploadsessions; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.uploadsessions ( + id character varying(26) NOT NULL, + type character varying(32), + createat bigint, + userid character varying(26), + channelid character varying(26), + filename character varying(256), + path character varying(512), + filesize bigint, + fileoffset bigint, + remoteid character varying(26), + reqfileid character varying(26) +); + + +ALTER TABLE public.uploadsessions OWNER TO mmuser; + +-- +-- Name: useraccesstokens; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.useraccesstokens ( + id character varying(26) NOT NULL, + token character varying(26), + userid character varying(26), + description character varying(512), + isactive boolean +); + + +ALTER TABLE public.useraccesstokens OWNER TO mmuser; + +-- +-- Name: usergroups; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.usergroups ( + id character varying(26) NOT NULL, + name character varying(64), + displayname character varying(128), + description character varying(1024), + source character varying(64), + remoteid character varying(48), + createat bigint, + updateat bigint, + deleteat bigint, + allowreference boolean +); + + +ALTER TABLE public.usergroups OWNER TO mmuser; + +-- +-- Name: users; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.users ( + id character varying(26) NOT NULL, + createat bigint, + updateat bigint, + deleteat bigint, + username character varying(64), + password character varying(128), + authdata character varying(128), + authservice character varying(32), + email character varying(128), + emailverified boolean, + nickname character varying(64), + firstname character varying(64), + lastname character varying(64), + "position" character varying(128), + roles character varying(256), + allowmarketing boolean, + props jsonb, + notifyprops jsonb, + lastpasswordupdate bigint, + lastpictureupdate bigint, + failedattempts integer, + locale character varying(5), + timezone jsonb, + mfaactive boolean, + mfasecret character varying(128), + remoteid character varying(26) +); + + +ALTER TABLE public.users OWNER TO mmuser; + +-- +-- Name: usertermsofservice; Type: TABLE; Schema: public; Owner: mmuser +-- + +CREATE TABLE public.usertermsofservice ( + userid character varying(26) NOT NULL, + termsofserviceid character varying(26), + createat bigint +); + + +ALTER TABLE public.usertermsofservice OWNER TO mmuser; + +-- +-- Name: audits audits_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.audits + ADD CONSTRAINT audits_pkey PRIMARY KEY (id); + + +-- +-- Name: bots bots_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.bots + ADD CONSTRAINT bots_pkey PRIMARY KEY (userid); + + +-- +-- Name: channelmemberhistory channelmemberhistory_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.channelmemberhistory + ADD CONSTRAINT channelmemberhistory_pkey PRIMARY KEY (channelid, userid, jointime); + + +-- +-- Name: channelmembers channelmembers_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.channelmembers + ADD CONSTRAINT channelmembers_pkey PRIMARY KEY (channelid, userid); + + +-- +-- Name: channels channels_name_teamid_key; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.channels + ADD CONSTRAINT channels_name_teamid_key UNIQUE (name, teamid); + + +-- +-- Name: channels channels_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.channels + ADD CONSTRAINT channels_pkey PRIMARY KEY (id); + + +-- +-- Name: clusterdiscovery clusterdiscovery_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.clusterdiscovery + ADD CONSTRAINT clusterdiscovery_pkey PRIMARY KEY (id); + + +-- +-- Name: commands commands_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.commands + ADD CONSTRAINT commands_pkey PRIMARY KEY (id); + + +-- +-- Name: commandwebhooks commandwebhooks_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.commandwebhooks + ADD CONSTRAINT commandwebhooks_pkey PRIMARY KEY (id); + + +-- +-- Name: compliances compliances_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.compliances + ADD CONSTRAINT compliances_pkey PRIMARY KEY (id); + + +-- +-- Name: emoji emoji_name_deleteat_key; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.emoji + ADD CONSTRAINT emoji_name_deleteat_key UNIQUE (name, deleteat); + + +-- +-- Name: emoji emoji_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.emoji + ADD CONSTRAINT emoji_pkey PRIMARY KEY (id); + + +-- +-- Name: fileinfo fileinfo_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.fileinfo + ADD CONSTRAINT fileinfo_pkey PRIMARY KEY (id); + + +-- +-- Name: groupchannels groupchannels_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.groupchannels + ADD CONSTRAINT groupchannels_pkey PRIMARY KEY (groupid, channelid); + + +-- +-- Name: groupmembers groupmembers_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.groupmembers + ADD CONSTRAINT groupmembers_pkey PRIMARY KEY (groupid, userid); + + +-- +-- Name: groupteams groupteams_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.groupteams + ADD CONSTRAINT groupteams_pkey PRIMARY KEY (groupid, teamid); + + +-- +-- Name: incomingwebhooks incomingwebhooks_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.incomingwebhooks + ADD CONSTRAINT incomingwebhooks_pkey PRIMARY KEY (id); + + +-- +-- Name: jobs jobs_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.jobs + ADD CONSTRAINT jobs_pkey PRIMARY KEY (id); + + +-- +-- Name: licenses licenses_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.licenses + ADD CONSTRAINT licenses_pkey PRIMARY KEY (id); + + +-- +-- Name: linkmetadata linkmetadata_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.linkmetadata + ADD CONSTRAINT linkmetadata_pkey PRIMARY KEY (hash); + + +-- +-- Name: oauthaccessdata oauthaccessdata_clientid_userid_key; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.oauthaccessdata + ADD CONSTRAINT oauthaccessdata_clientid_userid_key UNIQUE (clientid, userid); + + +-- +-- Name: oauthaccessdata oauthaccessdata_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.oauthaccessdata + ADD CONSTRAINT oauthaccessdata_pkey PRIMARY KEY (token); + + +-- +-- Name: oauthapps oauthapps_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.oauthapps + ADD CONSTRAINT oauthapps_pkey PRIMARY KEY (id); + + +-- +-- Name: oauthauthdata oauthauthdata_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.oauthauthdata + ADD CONSTRAINT oauthauthdata_pkey PRIMARY KEY (code); + + +-- +-- Name: outgoingwebhooks outgoingwebhooks_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.outgoingwebhooks + ADD CONSTRAINT outgoingwebhooks_pkey PRIMARY KEY (id); + + +-- +-- Name: pluginkeyvaluestore pluginkeyvaluestore_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.pluginkeyvaluestore + ADD CONSTRAINT pluginkeyvaluestore_pkey PRIMARY KEY (pluginid, pkey); + + +-- +-- Name: posts posts_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.posts + ADD CONSTRAINT posts_pkey PRIMARY KEY (id); + + +-- +-- Name: preferences preferences_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.preferences + ADD CONSTRAINT preferences_pkey PRIMARY KEY (userid, category, name); + + +-- +-- Name: productnoticeviewstate productnoticeviewstate_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.productnoticeviewstate + ADD CONSTRAINT productnoticeviewstate_pkey PRIMARY KEY (userid, noticeid); + + +-- +-- Name: publicchannels publicchannels_name_teamid_key; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.publicchannels + ADD CONSTRAINT publicchannels_name_teamid_key UNIQUE (name, teamid); + + +-- +-- Name: publicchannels publicchannels_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.publicchannels + ADD CONSTRAINT publicchannels_pkey PRIMARY KEY (id); + + +-- +-- Name: reactions reactions_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.reactions + ADD CONSTRAINT reactions_pkey PRIMARY KEY (postid, userid, emojiname); + + +-- +-- Name: remoteclusters remoteclusters_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.remoteclusters + ADD CONSTRAINT remoteclusters_pkey PRIMARY KEY (remoteid, name); + + +-- +-- Name: retentionpolicies retentionpolicies_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.retentionpolicies + ADD CONSTRAINT retentionpolicies_pkey PRIMARY KEY (id); + + +-- +-- Name: retentionpolicieschannels retentionpolicieschannels_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.retentionpolicieschannels + ADD CONSTRAINT retentionpolicieschannels_pkey PRIMARY KEY (channelid); + + +-- +-- Name: retentionpoliciesteams retentionpoliciesteams_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.retentionpoliciesteams + ADD CONSTRAINT retentionpoliciesteams_pkey PRIMARY KEY (teamid); + + +-- +-- Name: roles roles_name_key; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.roles + ADD CONSTRAINT roles_name_key UNIQUE (name); + + +-- +-- Name: roles roles_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.roles + ADD CONSTRAINT roles_pkey PRIMARY KEY (id); + + +-- +-- Name: schema_migrations schema_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.schema_migrations + ADD CONSTRAINT schema_migrations_pkey PRIMARY KEY (version); + + +-- +-- Name: schemes schemes_name_key; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.schemes + ADD CONSTRAINT schemes_name_key UNIQUE (name); + + +-- +-- Name: schemes schemes_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.schemes + ADD CONSTRAINT schemes_pkey PRIMARY KEY (id); + + +-- +-- Name: sessions sessions_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.sessions + ADD CONSTRAINT sessions_pkey PRIMARY KEY (id); + + +-- +-- Name: sharedchannelattachments sharedchannelattachments_fileid_remoteid_key; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.sharedchannelattachments + ADD CONSTRAINT sharedchannelattachments_fileid_remoteid_key UNIQUE (fileid, remoteid); + + +-- +-- Name: sharedchannelattachments sharedchannelattachments_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.sharedchannelattachments + ADD CONSTRAINT sharedchannelattachments_pkey PRIMARY KEY (id); + + +-- +-- Name: sharedchannelremotes sharedchannelremotes_channelid_remoteid_key; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.sharedchannelremotes + ADD CONSTRAINT sharedchannelremotes_channelid_remoteid_key UNIQUE (channelid, remoteid); + + +-- +-- Name: sharedchannelremotes sharedchannelremotes_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.sharedchannelremotes + ADD CONSTRAINT sharedchannelremotes_pkey PRIMARY KEY (id, channelid); + + +-- +-- Name: sharedchannels sharedchannels_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.sharedchannels + ADD CONSTRAINT sharedchannels_pkey PRIMARY KEY (channelid); + + +-- +-- Name: sharedchannels sharedchannels_sharename_teamid_key; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.sharedchannels + ADD CONSTRAINT sharedchannels_sharename_teamid_key UNIQUE (sharename, teamid); + + +-- +-- Name: sharedchannelusers sharedchannelusers_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.sharedchannelusers + ADD CONSTRAINT sharedchannelusers_pkey PRIMARY KEY (id); + + +-- +-- Name: sharedchannelusers sharedchannelusers_userid_channelid_remoteid_key; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.sharedchannelusers + ADD CONSTRAINT sharedchannelusers_userid_channelid_remoteid_key UNIQUE (userid, channelid, remoteid); + + +-- +-- Name: sidebarcategories sidebarcategories_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.sidebarcategories + ADD CONSTRAINT sidebarcategories_pkey PRIMARY KEY (id); + + +-- +-- Name: sidebarchannels sidebarchannels_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.sidebarchannels + ADD CONSTRAINT sidebarchannels_pkey PRIMARY KEY (channelid, userid, categoryid); + + +-- +-- Name: status status_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.status + ADD CONSTRAINT status_pkey PRIMARY KEY (userid); + + +-- +-- Name: systems systems_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.systems + ADD CONSTRAINT systems_pkey PRIMARY KEY (name); + + +-- +-- Name: teammembers teammembers_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.teammembers + ADD CONSTRAINT teammembers_pkey PRIMARY KEY (teamid, userid); + + +-- +-- Name: teams teams_name_key; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.teams + ADD CONSTRAINT teams_name_key UNIQUE (name); + + +-- +-- Name: teams teams_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.teams + ADD CONSTRAINT teams_pkey PRIMARY KEY (id); + + +-- +-- Name: termsofservice termsofservice_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.termsofservice + ADD CONSTRAINT termsofservice_pkey PRIMARY KEY (id); + + +-- +-- Name: threadmemberships threadmemberships_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.threadmemberships + ADD CONSTRAINT threadmemberships_pkey PRIMARY KEY (postid, userid); + + +-- +-- Name: threads threads_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.threads + ADD CONSTRAINT threads_pkey PRIMARY KEY (postid); + + +-- +-- Name: tokens tokens_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.tokens + ADD CONSTRAINT tokens_pkey PRIMARY KEY (token); + + +-- +-- Name: uploadsessions uploadsessions_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.uploadsessions + ADD CONSTRAINT uploadsessions_pkey PRIMARY KEY (id); + + +-- +-- Name: useraccesstokens useraccesstokens_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.useraccesstokens + ADD CONSTRAINT useraccesstokens_pkey PRIMARY KEY (id); + + +-- +-- Name: useraccesstokens useraccesstokens_token_key; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.useraccesstokens + ADD CONSTRAINT useraccesstokens_token_key UNIQUE (token); + + +-- +-- Name: usergroups usergroups_name_key; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.usergroups + ADD CONSTRAINT usergroups_name_key UNIQUE (name); + + +-- +-- Name: usergroups usergroups_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.usergroups + ADD CONSTRAINT usergroups_pkey PRIMARY KEY (id); + + +-- +-- Name: usergroups usergroups_source_remoteid_key; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.usergroups + ADD CONSTRAINT usergroups_source_remoteid_key UNIQUE (source, remoteid); + + +-- +-- Name: users users_authdata_key; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_authdata_key UNIQUE (authdata); + + +-- +-- Name: users users_email_key; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_email_key UNIQUE (email); + + +-- +-- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_pkey PRIMARY KEY (id); + + +-- +-- Name: users users_username_key; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_username_key UNIQUE (username); + + +-- +-- Name: usertermsofservice usertermsofservice_pkey; Type: CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.usertermsofservice + ADD CONSTRAINT usertermsofservice_pkey PRIMARY KEY (userid); + + +-- +-- Name: idx_audits_user_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_audits_user_id ON public.audits USING btree (userid); + + +-- +-- Name: idx_channel_search_txt; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_channel_search_txt ON public.channels USING gin (to_tsvector('english'::regconfig, (((((name)::text || ' '::text) || (displayname)::text) || ' '::text) || (purpose)::text))); + + +-- +-- Name: idx_channelmembers_user_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_channelmembers_user_id ON public.channelmembers USING btree (userid); + + +-- +-- Name: idx_channels_create_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_channels_create_at ON public.channels USING btree (createat); + + +-- +-- Name: idx_channels_delete_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_channels_delete_at ON public.channels USING btree (deleteat); + + +-- +-- Name: idx_channels_displayname_lower; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_channels_displayname_lower ON public.channels USING btree (lower((displayname)::text)); + + +-- +-- Name: idx_channels_name_lower; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_channels_name_lower ON public.channels USING btree (lower((name)::text)); + + +-- +-- Name: idx_channels_scheme_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_channels_scheme_id ON public.channels USING btree (schemeid); + + +-- +-- Name: idx_channels_team_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_channels_team_id ON public.channels USING btree (teamid); + + +-- +-- Name: idx_channels_update_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_channels_update_at ON public.channels USING btree (updateat); + + +-- +-- Name: idx_command_create_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_command_create_at ON public.commands USING btree (createat); + + +-- +-- Name: idx_command_delete_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_command_delete_at ON public.commands USING btree (deleteat); + + +-- +-- Name: idx_command_team_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_command_team_id ON public.commands USING btree (teamid); + + +-- +-- Name: idx_command_update_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_command_update_at ON public.commands USING btree (updateat); + + +-- +-- Name: idx_command_webhook_create_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_command_webhook_create_at ON public.commandwebhooks USING btree (createat); + + +-- +-- Name: idx_emoji_create_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_emoji_create_at ON public.emoji USING btree (createat); + + +-- +-- Name: idx_emoji_delete_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_emoji_delete_at ON public.emoji USING btree (deleteat); + + +-- +-- Name: idx_emoji_update_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_emoji_update_at ON public.emoji USING btree (updateat); + + +-- +-- Name: idx_fileinfo_content_txt; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_fileinfo_content_txt ON public.fileinfo USING gin (to_tsvector('english'::regconfig, content)); + + +-- +-- Name: idx_fileinfo_create_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_fileinfo_create_at ON public.fileinfo USING btree (createat); + + +-- +-- Name: idx_fileinfo_delete_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_fileinfo_delete_at ON public.fileinfo USING btree (deleteat); + + +-- +-- Name: idx_fileinfo_extension_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_fileinfo_extension_at ON public.fileinfo USING btree (extension); + + +-- +-- Name: idx_fileinfo_name_splitted; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_fileinfo_name_splitted ON public.fileinfo USING gin (to_tsvector('english'::regconfig, translate((name)::text, '.,-'::text, ' '::text))); + + +-- +-- Name: idx_fileinfo_name_txt; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_fileinfo_name_txt ON public.fileinfo USING gin (to_tsvector('english'::regconfig, (name)::text)); + + +-- +-- Name: idx_fileinfo_postid_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_fileinfo_postid_at ON public.fileinfo USING btree (postid); + + +-- +-- Name: idx_fileinfo_update_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_fileinfo_update_at ON public.fileinfo USING btree (updateat); + + +-- +-- Name: idx_groupchannels_channelid; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_groupchannels_channelid ON public.groupchannels USING btree (channelid); + + +-- +-- Name: idx_groupchannels_schemeadmin; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_groupchannels_schemeadmin ON public.groupchannels USING btree (schemeadmin); + + +-- +-- Name: idx_groupmembers_create_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_groupmembers_create_at ON public.groupmembers USING btree (createat); + + +-- +-- Name: idx_groupteams_schemeadmin; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_groupteams_schemeadmin ON public.groupteams USING btree (schemeadmin); + + +-- +-- Name: idx_groupteams_teamid; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_groupteams_teamid ON public.groupteams USING btree (teamid); + + +-- +-- Name: idx_incoming_webhook_create_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_incoming_webhook_create_at ON public.incomingwebhooks USING btree (createat); + + +-- +-- Name: idx_incoming_webhook_delete_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_incoming_webhook_delete_at ON public.incomingwebhooks USING btree (deleteat); + + +-- +-- Name: idx_incoming_webhook_team_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_incoming_webhook_team_id ON public.incomingwebhooks USING btree (teamid); + + +-- +-- Name: idx_incoming_webhook_update_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_incoming_webhook_update_at ON public.incomingwebhooks USING btree (updateat); + + +-- +-- Name: idx_incoming_webhook_user_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_incoming_webhook_user_id ON public.incomingwebhooks USING btree (userid); + + +-- +-- Name: idx_jobs_type; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_jobs_type ON public.jobs USING btree (type); + + +-- +-- Name: idx_link_metadata_url_timestamp; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_link_metadata_url_timestamp ON public.linkmetadata USING btree (url, "timestamp"); + + +-- +-- Name: idx_notice_views_notice_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_notice_views_notice_id ON public.productnoticeviewstate USING btree (noticeid); + + +-- +-- Name: idx_notice_views_timestamp; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_notice_views_timestamp ON public.productnoticeviewstate USING btree ("timestamp"); + + +-- +-- Name: idx_oauthaccessdata_refresh_token; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_oauthaccessdata_refresh_token ON public.oauthaccessdata USING btree (refreshtoken); + + +-- +-- Name: idx_oauthaccessdata_user_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_oauthaccessdata_user_id ON public.oauthaccessdata USING btree (userid); + + +-- +-- Name: idx_oauthapps_creator_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_oauthapps_creator_id ON public.oauthapps USING btree (creatorid); + + +-- +-- Name: idx_outgoing_webhook_create_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_outgoing_webhook_create_at ON public.outgoingwebhooks USING btree (createat); + + +-- +-- Name: idx_outgoing_webhook_delete_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_outgoing_webhook_delete_at ON public.outgoingwebhooks USING btree (deleteat); + + +-- +-- Name: idx_outgoing_webhook_team_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_outgoing_webhook_team_id ON public.outgoingwebhooks USING btree (teamid); + + +-- +-- Name: idx_outgoing_webhook_update_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_outgoing_webhook_update_at ON public.outgoingwebhooks USING btree (updateat); + + +-- +-- Name: idx_posts_channel_id_delete_at_create_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_posts_channel_id_delete_at_create_at ON public.posts USING btree (channelid, deleteat, createat); + + +-- +-- Name: idx_posts_channel_id_update_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_posts_channel_id_update_at ON public.posts USING btree (channelid, updateat); + + +-- +-- Name: idx_posts_create_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_posts_create_at ON public.posts USING btree (createat); + + +-- +-- Name: idx_posts_delete_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_posts_delete_at ON public.posts USING btree (deleteat); + + +-- +-- Name: idx_posts_hashtags_txt; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_posts_hashtags_txt ON public.posts USING gin (to_tsvector('english'::regconfig, (hashtags)::text)); + + +-- +-- Name: idx_posts_is_pinned; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_posts_is_pinned ON public.posts USING btree (ispinned); + + +-- +-- Name: idx_posts_message_txt; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_posts_message_txt ON public.posts USING gin (to_tsvector('english'::regconfig, (message)::text)); + + +-- +-- Name: idx_posts_root_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_posts_root_id ON public.posts USING btree (rootid); + + +-- +-- Name: idx_posts_update_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_posts_update_at ON public.posts USING btree (updateat); + + +-- +-- Name: idx_posts_user_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_posts_user_id ON public.posts USING btree (userid); + + +-- +-- Name: idx_preferences_category; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_preferences_category ON public.preferences USING btree (category); + + +-- +-- Name: idx_preferences_name; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_preferences_name ON public.preferences USING btree (name); + + +-- +-- Name: idx_publicchannels_delete_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_publicchannels_delete_at ON public.publicchannels USING btree (deleteat); + + +-- +-- Name: idx_publicchannels_displayname_lower; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_publicchannels_displayname_lower ON public.publicchannels USING btree (lower((displayname)::text)); + + +-- +-- Name: idx_publicchannels_name_lower; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_publicchannels_name_lower ON public.publicchannels USING btree (lower((name)::text)); + + +-- +-- Name: idx_publicchannels_search_txt; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_publicchannels_search_txt ON public.publicchannels USING gin (to_tsvector('english'::regconfig, (((((name)::text || ' '::text) || (displayname)::text) || ' '::text) || (purpose)::text))); + + +-- +-- Name: idx_publicchannels_team_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_publicchannels_team_id ON public.publicchannels USING btree (teamid); + + +-- +-- Name: idx_retentionpolicies_displayname; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_retentionpolicies_displayname ON public.retentionpolicies USING btree (displayname); + + +-- +-- Name: idx_retentionpolicieschannels_policyid; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_retentionpolicieschannels_policyid ON public.retentionpolicieschannels USING btree (policyid); + + +-- +-- Name: idx_retentionpoliciesteams_policyid; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_retentionpoliciesteams_policyid ON public.retentionpoliciesteams USING btree (policyid); + + +-- +-- Name: idx_schemes_channel_admin_role; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_schemes_channel_admin_role ON public.schemes USING btree (defaultchanneladminrole); + + +-- +-- Name: idx_schemes_channel_guest_role; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_schemes_channel_guest_role ON public.schemes USING btree (defaultchannelguestrole); + + +-- +-- Name: idx_schemes_channel_user_role; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_schemes_channel_user_role ON public.schemes USING btree (defaultchanneluserrole); + + +-- +-- Name: idx_sessions_create_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_sessions_create_at ON public.sessions USING btree (createat); + + +-- +-- Name: idx_sessions_expires_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_sessions_expires_at ON public.sessions USING btree (expiresat); + + +-- +-- Name: idx_sessions_last_activity_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_sessions_last_activity_at ON public.sessions USING btree (lastactivityat); + + +-- +-- Name: idx_sessions_token; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_sessions_token ON public.sessions USING btree (token); + + +-- +-- Name: idx_sessions_user_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_sessions_user_id ON public.sessions USING btree (userid); + + +-- +-- Name: idx_sharedchannelusers_remote_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_sharedchannelusers_remote_id ON public.sharedchannelusers USING btree (remoteid); + + +-- +-- Name: idx_status_status; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_status_status ON public.status USING btree (status); + + +-- +-- Name: idx_teammembers_delete_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_teammembers_delete_at ON public.teammembers USING btree (deleteat); + + +-- +-- Name: idx_teammembers_user_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_teammembers_user_id ON public.teammembers USING btree (userid); + + +-- +-- Name: idx_teams_create_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_teams_create_at ON public.teams USING btree (createat); + + +-- +-- Name: idx_teams_delete_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_teams_delete_at ON public.teams USING btree (deleteat); + + +-- +-- Name: idx_teams_invite_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_teams_invite_id ON public.teams USING btree (inviteid); + + +-- +-- Name: idx_teams_scheme_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_teams_scheme_id ON public.teams USING btree (schemeid); + + +-- +-- Name: idx_teams_update_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_teams_update_at ON public.teams USING btree (updateat); + + +-- +-- Name: idx_thread_memberships_last_update_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_thread_memberships_last_update_at ON public.threadmemberships USING btree (lastupdated); + + +-- +-- Name: idx_thread_memberships_last_view_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_thread_memberships_last_view_at ON public.threadmemberships USING btree (lastviewed); + + +-- +-- Name: idx_thread_memberships_user_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_thread_memberships_user_id ON public.threadmemberships USING btree (userid); + + +-- +-- Name: idx_threads_channel_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_threads_channel_id ON public.threads USING btree (channelid); + + +-- +-- Name: idx_uploadsessions_create_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_uploadsessions_create_at ON public.uploadsessions USING btree (createat); + + +-- +-- Name: idx_uploadsessions_user_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_uploadsessions_user_id ON public.uploadsessions USING btree (type); + + +-- +-- Name: idx_user_access_tokens_user_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_user_access_tokens_user_id ON public.useraccesstokens USING btree (userid); + + +-- +-- Name: idx_usergroups_delete_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_usergroups_delete_at ON public.usergroups USING btree (deleteat); + + +-- +-- Name: idx_usergroups_remote_id; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_usergroups_remote_id ON public.usergroups USING btree (remoteid); + + +-- +-- Name: idx_users_all_no_full_name_txt; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_users_all_no_full_name_txt ON public.users USING gin (to_tsvector('english'::regconfig, (((((username)::text || ' '::text) || (nickname)::text) || ' '::text) || (email)::text))); + + +-- +-- Name: idx_users_all_txt; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_users_all_txt ON public.users USING gin (to_tsvector('english'::regconfig, (((((((((username)::text || ' '::text) || (firstname)::text) || ' '::text) || (lastname)::text) || ' '::text) || (nickname)::text) || ' '::text) || (email)::text))); + + +-- +-- Name: idx_users_create_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_users_create_at ON public.users USING btree (createat); + + +-- +-- Name: idx_users_delete_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_users_delete_at ON public.users USING btree (deleteat); + + +-- +-- Name: idx_users_email_lower_textpattern; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_users_email_lower_textpattern ON public.users USING btree (lower((email)::text) text_pattern_ops); + + +-- +-- Name: idx_users_firstname_lower_textpattern; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_users_firstname_lower_textpattern ON public.users USING btree (lower((firstname)::text) text_pattern_ops); + + +-- +-- Name: idx_users_lastname_lower_textpattern; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_users_lastname_lower_textpattern ON public.users USING btree (lower((lastname)::text) text_pattern_ops); + + +-- +-- Name: idx_users_names_no_full_name_txt; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_users_names_no_full_name_txt ON public.users USING gin (to_tsvector('english'::regconfig, (((username)::text || ' '::text) || (nickname)::text))); + + +-- +-- Name: idx_users_names_txt; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_users_names_txt ON public.users USING gin (to_tsvector('english'::regconfig, (((((((username)::text || ' '::text) || (firstname)::text) || ' '::text) || (lastname)::text) || ' '::text) || (nickname)::text))); + + +-- +-- Name: idx_users_nickname_lower_textpattern; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_users_nickname_lower_textpattern ON public.users USING btree (lower((nickname)::text) text_pattern_ops); + + +-- +-- Name: idx_users_update_at; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_users_update_at ON public.users USING btree (updateat); + + +-- +-- Name: idx_users_username_lower_textpattern; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE INDEX idx_users_username_lower_textpattern ON public.users USING btree (lower((username)::text) text_pattern_ops); + + +-- +-- Name: remote_clusters_site_url_unique; Type: INDEX; Schema: public; Owner: mmuser +-- + +CREATE UNIQUE INDEX remote_clusters_site_url_unique ON public.remoteclusters USING btree (siteurl, remoteteamid); + + +-- +-- Name: retentionpolicieschannels fk_retentionpolicieschannels_retentionpolicies; Type: FK CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.retentionpolicieschannels + ADD CONSTRAINT fk_retentionpolicieschannels_retentionpolicies FOREIGN KEY (policyid) REFERENCES public.retentionpolicies(id) ON DELETE CASCADE; + + +-- +-- Name: retentionpoliciesteams fk_retentionpoliciesteams_retentionpolicies; Type: FK CONSTRAINT; Schema: public; Owner: mmuser +-- + +ALTER TABLE ONLY public.retentionpoliciesteams + ADD CONSTRAINT fk_retentionpoliciesteams_retentionpolicies FOREIGN KEY (policyid) REFERENCES public.retentionpolicies(id) ON DELETE CASCADE; + + +-- +-- Name: SCHEMA public; Type: ACL; Schema: -; Owner: mmuser +-- + +REVOKE ALL ON SCHEMA public FROM rdsadmin; +REVOKE ALL ON SCHEMA public FROM PUBLIC; +GRANT ALL ON SCHEMA public TO mmuser; +GRANT ALL ON SCHEMA public TO PUBLIC; + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/scripts/mysql-migration-test.sh b/scripts/mysql-migration-test.sh index 7496746a9a..79293d1df2 100755 --- a/scripts/mysql-migration-test.sh +++ b/scripts/mysql-migration-test.sh @@ -2,17 +2,16 @@ TMPDIR=`mktemp -d 2>/dev/null || mktemp -d -t 'tmpConfigDir'` DUMPDIR=`mktemp -d 2>/dev/null || mktemp -d -t 'dumpDir'` - -cp config/config.json $TMPDIR +SCHEMA_VERSION=$1 echo "Creating databases" docker exec mattermost-mysql mysql -uroot -pmostest -e "CREATE DATABASE migrated; CREATE DATABASE latest; GRANT ALL PRIVILEGES ON migrated.* TO mmuser; GRANT ALL PRIVILEGES ON latest.* TO mmuser" -echo "Importing mysql dump from version 5.0" -docker exec -i mattermost-mysql mysql -D migrated -uroot -pmostest < $(pwd)/scripts/mattermost-mysql-5.0.sql +echo "Importing mysql dump from version ${SCHEMA_VERSION}" +docker exec -i mattermost-mysql mysql -D migrated -uroot -pmostest < $(pwd)/scripts/mattermost-mysql-$SCHEMA_VERSION.sql echo "Setting up config for db migration" -cat $TMPDIR/config.json | \ +cat config/config.json | \ jq '.SqlSettings.DataSource = "mmuser:mostest@tcp(localhost:3306)/migrated?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s"' | \ jq '.SqlSettings.DriverName = "mysql"' > $TMPDIR/config.json @@ -20,18 +19,21 @@ echo "Running the migration" make ARGS="version --config $TMPDIR/config.json" run-cli echo "Setting up config for fresh db setup" -cat $TMPDIR/config.json | \ - jq '.SqlSettings.DataSource = "mmuser:mostest@tcp(localhost:3306)/latest?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s"' > $TMPDIR/config.json +cat config/config.json | \ + jq '.SqlSettings.DataSource = "mmuser:mostest@tcp(localhost:3306)/latest?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s"' | \ + jq '.SqlSettings.DriverName = "mysql"' > $TMPDIR/config.json echo "Setting up fresh db" make ARGS="version --config $TMPDIR/config.json" run-cli -for i in "ChannelMembers SchemeGuest" "ChannelMembers MsgCountRoot" "ChannelMembers MentionCountRoot" "Channels TotalMsgCountRoot"; do +if [ "$SCHEMA_VERSION" == "5.0" ]; then + for i in "ChannelMembers SchemeGuest" "ChannelMembers MsgCountRoot" "ChannelMembers MentionCountRoot" "Channels TotalMsgCountRoot"; do a=( $i ); echo "Ignoring known MySQL mismatch: ${a[0]}.${a[1]}" docker exec mattermost-mysql mysql -D migrated -uroot -pmostest -e "ALTER TABLE ${a[0]} DROP COLUMN ${a[1]};" docker exec mattermost-mysql mysql -D latest -uroot -pmostest -e "ALTER TABLE ${a[0]} DROP COLUMN ${a[1]};" -done + done +fi echo "Generating dump" docker exec mattermost-mysql mysqldump --skip-opt --no-data --compact -u root -pmostest migrated > $DUMPDIR/migrated.sql diff --git a/scripts/psql-migration-test.sh b/scripts/psql-migration-test.sh index 7bf309c7c1..25b4491c29 100755 --- a/scripts/psql-migration-test.sh +++ b/scripts/psql-migration-test.sh @@ -2,17 +2,16 @@ TMPDIR=`mktemp -d 2>/dev/null || mktemp -d -t 'tmpConfigDir'` DUMPDIR=`mktemp -d 2>/dev/null || mktemp -d -t 'dumpDir'` - -cp config/config.json $TMPDIR +SCHEMA_VERSION=$1 echo "Creating databases" docker exec mattermost-postgres sh -c 'exec echo "CREATE DATABASE migrated; CREATE DATABASE latest;" | exec psql -U mmuser mattermost_test' -echo "Importing postgres dump from version 5.0" -docker exec -i mattermost-postgres psql -U mmuser -d migrated < $(pwd)/scripts/mattermost-postgresql-5.0.sql +echo "Importing postgres dump from version ${SCHEMA_VERSION}" +docker exec -i mattermost-postgres psql -U mmuser -d migrated < $(pwd)/scripts/mattermost-postgresql-$SCHEMA_VERSION.sql echo "Setting up config for db migration" -cat $TMPDIR/config.json | \ +cat config/config.json | \ jq '.SqlSettings.DataSource = "postgres://mmuser:mostest@localhost:5432/migrated?sslmode=disable&connect_timeout=10"'| \ jq '.SqlSettings.DriverName = "postgres"' > $TMPDIR/config.json @@ -20,18 +19,21 @@ echo "Running the migration" make ARGS="version --config $TMPDIR/config.json" run-cli echo "Setting up config for fresh db setup" -cat $TMPDIR/config.json | \ - jq '.SqlSettings.DataSource = "postgres://mmuser:mostest@localhost:5432/latest?sslmode=disable&connect_timeout=10"' > $TMPDIR/config.json +cat config/config.json | \ + jq '.SqlSettings.DataSource = "postgres://mmuser:mostest@localhost:5432/latest?sslmode=disable&connect_timeout=10"'| \ + jq '.SqlSettings.DriverName = "postgres"' > $TMPDIR/config.json echo "Setting up fresh db" make ARGS="version --config $TMPDIR/config.json" run-cli -for i in "ChannelMembers MentionCountRoot" "ChannelMembers MsgCountRoot" "Channels TotalMsgCountRoot"; do +if [ "$SCHEMA_VERSION" == "5.0" ]; then + for i in "ChannelMembers MentionCountRoot" "ChannelMembers MsgCountRoot" "Channels TotalMsgCountRoot"; do a=( $i ); echo "Ignoring known Postgres mismatch: ${a[0]}.${a[1]}" docker exec mattermost-postgres psql -U mmuser -d migrated -c "ALTER TABLE ${a[0]} DROP COLUMN ${a[1]};" docker exec mattermost-postgres psql -U mmuser -d latest -c "ALTER TABLE ${a[0]} DROP COLUMN ${a[1]};" -done + done +fi echo "Generating dump" docker exec mattermost-postgres pg_dump --schema-only -d migrated -U mmuser > $DUMPDIR/migrated.sql