implemented pending workflow for sql and PR

This commit is contained in:
Yehonal
2016-08-25 19:49:32 +02:00
parent cb19ac25b7
commit 7cab63179e
14 changed files with 227 additions and 0 deletions

54
bin/db_pendings/import.sh Executable file
View File

@@ -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"

View File

@@ -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

View File

@@ -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
--

View File

@@ -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`);

View File

@@ -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
--

View File

@@ -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`);

View File

@@ -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
--

View File

@@ -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`);

View File

@@ -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`;

View File

@@ -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`;

View File

@@ -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`;