From 7cab63179ee7eaf9e5982973958b7fb66170ffa9 Mon Sep 17 00:00:00 2001 From: Yehonal Date: Thu, 25 Aug 2016 19:49:32 +0200 Subject: [PATCH] implemented pending workflow for sql and PR --- bin/db_pendings/import.sh | 54 +++++++++++++++++++ data/sql/updates/README.md | 2 + data/sql/updates/db_auth/2016_08_25_00.sql | 6 +++ data/sql/updates/db_auth/2016_08_25_01.sql | 13 +++++ .../updates/db_characters/2016_08_14_00.sql | 7 +++ .../updates/db_characters/2016_08_25_00.sql | 12 +++++ data/sql/updates/db_world/2016_08_13_00.sql | 7 +++ data/sql/updates/db_world/2016_08_25_00.sql | 12 +++++ .../db_auth => pending_db_auth}/.dummy | 0 .../template_for_auth_updates.txt | 38 +++++++++++++ .../.dummy | 0 .../template_for_characters_updates.txt | 38 +++++++++++++ .../db_world => pending_db_world}/.dummy | 0 .../template_for_world_updates.txt | 38 +++++++++++++ 14 files changed, 227 insertions(+) create mode 100755 bin/db_pendings/import.sh create mode 100644 data/sql/updates/db_auth/2016_08_25_00.sql create mode 100644 data/sql/updates/db_auth/2016_08_25_01.sql create mode 100644 data/sql/updates/db_characters/2016_08_14_00.sql create mode 100644 data/sql/updates/db_characters/2016_08_25_00.sql create mode 100644 data/sql/updates/db_world/2016_08_13_00.sql create mode 100644 data/sql/updates/db_world/2016_08_25_00.sql rename data/sql/updates/{pending/db_auth => pending_db_auth}/.dummy (100%) create mode 100644 data/sql/updates/pending_db_auth/template_for_auth_updates.txt rename data/sql/updates/{pending/db_characters => pending_db_characters}/.dummy (100%) create mode 100644 data/sql/updates/pending_db_characters/template_for_characters_updates.txt rename data/sql/updates/{pending/db_world => pending_db_world}/.dummy (100%) create mode 100644 data/sql/updates/pending_db_world/template_for_world_updates.txt diff --git a/bin/db_pendings/import.sh b/bin/db_pendings/import.sh new file mode 100755 index 000000000..95bce984c --- /dev/null +++ b/bin/db_pendings/import.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +CURRENT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +source "$CURRENT_PATH/../bash_shared/includes.sh" + + + +UPDATES_PATH="$AC_PATH_ROOT/data/sql/updates/" + +function import() { + folder="db_"$1 + pendingPath="$AC_PATH_ROOT/data/sql/updates/pending_$folder" + updPath="$UPDATES_PATH/$folder" + + latestUpd=`ls $updPath/ -1 | tail -n 1` + + if [ -z $latestUpd ]; then + echo "FIRST UPDATE FILE MISSING!! DID YOU ARCHIVED IT?"; + exit; + fi + + dateToday=`date +%Y_%m_%d` + counter=0 + + dateLast=$latestUpd + tmp=${dateLast#*_*_*_} + oldCnt=${tmp%.sql} + oldDate=${dateLast%_$tmp} + + if [ "$oldDate" = "$dateToday" ]; then + ((counter=$oldCnt+1)) + fi; + + for entry in "$pendingPath"/*.sql + do + if [[ -e $entry ]]; then + updHeader="ALTER TABLE db_version CHANGE COLUMN "$latestUpd" "$dateToday"_"$counter" bit;"; + cnt=$(printf -v counter "%02d" $counter ; echo $counter) + newFile="$updPath/"$dateToday"_"$cnt".sql" + echo "$updHeader" > "$newFile" + echo "--" >> "$newFile" + echo "--" >> "$newFile" + cat $entry >> "$newFile" + rm $entry + ((counter+=1)) + fi + done + +} + +import "world" +import "characters" +import "auth" diff --git a/data/sql/updates/README.md b/data/sql/updates/README.md index b17de6023..cf6ca2403 100644 --- a/data/sql/updates/README.md +++ b/data/sql/updates/README.md @@ -1 +1,3 @@ Please read [this](https://github.com/azerothcore/azerothcore-wotlk/wiki/Dealing-with-SQL-files) before adding new SQL-update files. + +Use template sql files present in this folder to build your update file diff --git a/data/sql/updates/db_auth/2016_08_25_00.sql b/data/sql/updates/db_auth/2016_08_25_00.sql new file mode 100644 index 000000000..9444ba3ad --- /dev/null +++ b/data/sql/updates/db_auth/2016_08_25_00.sql @@ -0,0 +1,6 @@ +ALTER TABLE auth_db_version CHANGE COLUMN 2016_07_10_00 2016_08_25_00 bit; + +-- +-- Do not remove this file when we archive sql under this folder +-- it is needed for pending sql importer +-- diff --git a/data/sql/updates/db_auth/2016_08_25_01.sql b/data/sql/updates/db_auth/2016_08_25_01.sql new file mode 100644 index 000000000..49b31e942 --- /dev/null +++ b/data/sql/updates/db_auth/2016_08_25_01.sql @@ -0,0 +1,13 @@ +ALTER TABLE auth_db_version CHANGE COLUMN 2016_08_25_00 2016_08_25_01 bit; + +RENAME TABLE `auth_db_version` TO `version_db_auth`; + +ALTER TABLE `version_db_auth` +ADD COLUMN `sql_rev` VARCHAR(100) NOT NULL FIRST, +ADD COLUMN `required_rev` VARCHAR(100) NULL AFTER `sql_rev`, +ADD PRIMARY KEY (`sql_rev`), +ENGINE=INNODB; + +ALTER TABLE `version_db_auth` ADD CONSTRAINT `required` FOREIGN KEY (`required_rev`) REFERENCES `version_db_auth`(`sql_rev`); + + diff --git a/data/sql/updates/db_characters/2016_08_14_00.sql b/data/sql/updates/db_characters/2016_08_14_00.sql new file mode 100644 index 000000000..69a9170de --- /dev/null +++ b/data/sql/updates/db_characters/2016_08_14_00.sql @@ -0,0 +1,7 @@ +-- uncomment and fix following line at next revision / updates archivation +-- ALTER TABLE auth_db_version CHANGE COLUMN xxxx_xx_xx_xx xxxx_xx_xx_xx bit; + +-- +-- Do not remove this file when we archive sql under this folder +-- it is needed for pending sql importer +-- diff --git a/data/sql/updates/db_characters/2016_08_25_00.sql b/data/sql/updates/db_characters/2016_08_25_00.sql new file mode 100644 index 000000000..4a55f688a --- /dev/null +++ b/data/sql/updates/db_characters/2016_08_25_00.sql @@ -0,0 +1,12 @@ +ALTER TABLE characters_db_version CHANGE COLUMN 2016_08_15_00 2016_08_25_00 bit; + +RENAME TABLE `characters_db_version` TO `version_db_characters`; + +ALTER TABLE `version_db_characters` +ADD COLUMN `sql_rev` VARCHAR(100) NOT NULL FIRST, +ADD COLUMN `required_rev` VARCHAR(100) NULL AFTER `sql_rev`, +ADD PRIMARY KEY (`sql_rev`), +ENGINE=INNODB; + +ALTER TABLE `version_db_characters` ADD CONSTRAINT `required` FOREIGN KEY (`required_rev`) REFERENCES `version_db_characters`(`sql_rev`); + diff --git a/data/sql/updates/db_world/2016_08_13_00.sql b/data/sql/updates/db_world/2016_08_13_00.sql new file mode 100644 index 000000000..69a9170de --- /dev/null +++ b/data/sql/updates/db_world/2016_08_13_00.sql @@ -0,0 +1,7 @@ +-- uncomment and fix following line at next revision / updates archivation +-- ALTER TABLE auth_db_version CHANGE COLUMN xxxx_xx_xx_xx xxxx_xx_xx_xx bit; + +-- +-- Do not remove this file when we archive sql under this folder +-- it is needed for pending sql importer +-- diff --git a/data/sql/updates/db_world/2016_08_25_00.sql b/data/sql/updates/db_world/2016_08_25_00.sql new file mode 100644 index 000000000..35c15025e --- /dev/null +++ b/data/sql/updates/db_world/2016_08_25_00.sql @@ -0,0 +1,12 @@ +ALTER TABLE world_db_version CHANGE COLUMN 2016_08_24_01 2016_08_25_00 bit; + +RENAME TABLE `world_db_version` TO `version_db_world`; + +ALTER TABLE `version_db_world` +ADD COLUMN `sql_rev` VARCHAR(100) NOT NULL FIRST, +ADD COLUMN `required_rev` VARCHAR(100) NULL AFTER `sql_rev`, +ADD PRIMARY KEY (`sql_rev`), +ENGINE=INNODB; + +ALTER TABLE `version_db_world` ADD CONSTRAINT `required` FOREIGN KEY (`required_rev`) REFERENCES `version_db_world`(`sql_rev`); + diff --git a/data/sql/updates/pending/db_auth/.dummy b/data/sql/updates/pending_db_auth/.dummy similarity index 100% rename from data/sql/updates/pending/db_auth/.dummy rename to data/sql/updates/pending_db_auth/.dummy diff --git a/data/sql/updates/pending_db_auth/template_for_auth_updates.txt b/data/sql/updates/pending_db_auth/template_for_auth_updates.txt new file mode 100644 index 000000000..cea4ff0fe --- /dev/null +++ b/data/sql/updates/pending_db_auth/template_for_auth_updates.txt @@ -0,0 +1,38 @@ +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT "FALSE"; + +-- ############################### +-- CHANGE FOLLOWING VARIABLES +-- ############################### + +-- fill new_version with result of this bash command: date +%s%N +-- you must run it for each sql updates +SET @new_version=""; +-- set previous required version, or do not touch it if you are not sure +SET @req_version=NULL; + +-- ############################### +-- DO NOT CHANGE IT +-- ############################### +SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = @new_version; IF OK <> "FALSE" THEN LEAVE proc; END IF; START TRANSACTION; INSERT INTO version_db_auth VALUES(@new_version,@req_version,NULL); + +-- ############################### +-- INSERT YOUR SQL QUERIES HERE +-- ############################### + + + + +-- ############################### +-- TERMINATE YOUR SQL QUERIES HERE +-- ############################### + +COMMIT; +END; +// +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; + diff --git a/data/sql/updates/pending/db_characters/.dummy b/data/sql/updates/pending_db_characters/.dummy similarity index 100% rename from data/sql/updates/pending/db_characters/.dummy rename to data/sql/updates/pending_db_characters/.dummy diff --git a/data/sql/updates/pending_db_characters/template_for_characters_updates.txt b/data/sql/updates/pending_db_characters/template_for_characters_updates.txt new file mode 100644 index 000000000..a73dc8a58 --- /dev/null +++ b/data/sql/updates/pending_db_characters/template_for_characters_updates.txt @@ -0,0 +1,38 @@ +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT "FALSE"; + +-- ############################### +-- CHANGE FOLLOWING VARIABLES +-- ############################### + +-- fill new_version with result of this bash command: date +%s%N +-- you must run it for each sql updates +SET @new_version=""; +-- set previous required version, or do not touch it if you are not sure +SET @req_version=NULL; + +-- ############################### +-- DO NOT CHANGE IT +-- ############################### +SELECT sql_rev INTO OK FROM version_db_characters WHERE sql_rev = @new_version; IF OK <> "FALSE" THEN LEAVE proc; END IF; START TRANSACTION; INSERT INTO version_db_characters VALUES(@new_version,@req_version,NULL); + +-- ############################### +-- INSERT YOUR SQL QUERIES HERE +-- ############################### + + + + +-- ############################### +-- TERMINATE YOUR SQL QUERIES HERE +-- ############################### + +COMMIT; +END; +// +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; + diff --git a/data/sql/updates/pending/db_world/.dummy b/data/sql/updates/pending_db_world/.dummy similarity index 100% rename from data/sql/updates/pending/db_world/.dummy rename to data/sql/updates/pending_db_world/.dummy diff --git a/data/sql/updates/pending_db_world/template_for_world_updates.txt b/data/sql/updates/pending_db_world/template_for_world_updates.txt new file mode 100644 index 000000000..5872681ff --- /dev/null +++ b/data/sql/updates/pending_db_world/template_for_world_updates.txt @@ -0,0 +1,38 @@ +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT "FALSE"; + +-- ############################### +-- CHANGE FOLLOWING VARIABLES +-- ############################### + +-- fill new_version with result of this bash command: date +%s%N +-- you must run it for each sql updates +SET @new_version=""; +-- set previous required version, or do not touch it if you are not sure +SET @req_version=NULL; + +-- ############################### +-- DO NOT CHANGE IT +-- ############################### +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = @new_version; IF OK <> "FALSE" THEN LEAVE proc; END IF; START TRANSACTION; INSERT INTO version_db_world VALUES(@new_version,@req_version,NULL); + +-- ############################### +-- INSERT YOUR SQL QUERIES HERE +-- ############################### + + + + +-- ############################### +-- TERMINATE YOUR SQL QUERIES HERE +-- ############################### + +COMMIT; +END; +// +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; +