mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-31 07:57:47 +01:00
* Ckey Linkage Migration * Lets try make mariaDB work * Does this work? * AAAAAAAAAAA * Apply suggestion from @AffectedArc07 Signed-off-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> --------- Signed-off-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
92 lines
3.7 KiB
Python
92 lines
3.7 KiB
Python
# Python script for SQL validation
|
|
# For Python 3!, not 2
|
|
# Basically, this script reads through every SQL update file and prepares it for testing against the SQL server
|
|
# This ensures that SQL files have correct syntax, and are not malformed
|
|
# -AA07
|
|
import glob, os, shutil, stat
|
|
os.chdir("SQL/updates")
|
|
sqlFiles = glob.glob("*.sql")
|
|
sqlFiles += glob.glob("*.py")
|
|
orderedSqlFiles = []
|
|
# These need to be ordered properly, so begin awful hacky code
|
|
for fileName in sqlFiles:
|
|
prev = fileName.split("-")[0]
|
|
orderedSqlFiles.append(int(prev))
|
|
|
|
orderedSqlFiles = sorted(orderedSqlFiles)
|
|
|
|
for index in orderedSqlFiles:
|
|
# Yes I know half of the casts below this are probably not necassary, but python is very picky
|
|
# AND YES I KNOW THIS IS SNOWFLAKEY AS HELL, BUT IT MUST BE DONE FOR PROPER CI
|
|
if index in [16, 17, 31, 38]:
|
|
orderedSqlFiles[index] = f"{index}-{index+1}.py"
|
|
else:
|
|
orderedSqlFiles[index] = f"{index}-{index+1}.sql"
|
|
|
|
print(f"Found {len(orderedSqlFiles)} SQL update files to validate")
|
|
|
|
# FROM THIS POINT ON, DO NOT SORT THAT LIST
|
|
# Go back up two directories
|
|
os.chdir("../../")
|
|
|
|
# Delete the testing directory IF it exists.
|
|
# This is what I mean by python being picky
|
|
if os.path.exists("tools/ci/sql_tmp") and os.path.isdir("tools/ci/sql_tmp"):
|
|
shutil.rmtree("tools/ci/sql_tmp")
|
|
|
|
# Now make the dir
|
|
os.mkdir("tools/ci/sql_tmp")
|
|
|
|
# These lines will be used to generate a file which runs all the SQL scripts
|
|
# First we test from schema 0 all the way up to latest
|
|
# Then the prefixed schema
|
|
# Then the main schema, which the server will use
|
|
scriptLines = [
|
|
"#!/bin/bash\n",
|
|
"set -euo pipefail\n"
|
|
"python3 -m pip install setuptools\n" # Yes I know you can PIP multiple things but they need to happen in this order
|
|
"python3 -m pip install mysql-connector-python\n"
|
|
"mysql -h 127.0.0.1 -u root -proot < tools/ci/sql_v0.sql\n"
|
|
]
|
|
|
|
# And write the files and tell them to be used
|
|
for file in orderedSqlFiles:
|
|
if file.endswith(".py"):
|
|
# Begin snowflakery
|
|
if file == "16-17.py":
|
|
scriptLines.append(f"python3 SQL/updates/{file} 127.0.0.1 root root paradise_gamedb feedback round\n")
|
|
elif file == "17-18.py":
|
|
scriptLines.append(f"python3 SQL/updates/{file} 127.0.0.1 root root paradise_gamedb feedback feedback_2\n")
|
|
elif file == "31-32.py":
|
|
scriptLines.append(f"python3 SQL/updates/{file} 127.0.0.1 root root paradise_gamedb\n")
|
|
elif file == "38-39.py":
|
|
scriptLines.append(f"python3 SQL/updates/{file} 127.0.0.1 root root paradise_gamedb\n")
|
|
else:
|
|
print("ERROR: CI failed due to invalid python file in SQL/updates")
|
|
exit(1)
|
|
else:
|
|
inFile = open(f"SQL/updates/{file}", "r")
|
|
fileLines = inFile.readlines()
|
|
inFile.close()
|
|
# Add in a line which tells it to use the paradise DB
|
|
fileLines.insert(0, "USE `paradise_gamedb`;\n")
|
|
|
|
# Write new files to be used by the testing script
|
|
outFile = open(f"tools/ci/sql_tmp/{file}", "w+")
|
|
outFile.writelines(fileLines)
|
|
outFile.close()
|
|
|
|
# Add a line to the script being made that tells it to use this SQL file
|
|
scriptLines.append(f"mysql -h 127.0.0.1 -u root -proot < tools/ci/sql_tmp/{file}\n")
|
|
|
|
scriptLines.append("mysql -h 127.0.0.1 -u root -proot -e 'DROP DATABASE paradise_gamedb;'\n")
|
|
scriptLines.append("mysql -h 127.0.0.1 -u root -proot < SQL/paradise_schema.sql\n")
|
|
|
|
outputScript = open("tools/ci/validate_sql.sh", "w+")
|
|
outputScript.writelines(scriptLines)
|
|
outputScript.close()
|
|
|
|
st = os.stat('tools/ci/validate_sql.sh')
|
|
os.chmod('tools/ci/validate_sql.sh', st.st_mode | stat.S_IEXEC)
|
|
print("SQL validation script written successfully")
|