Added a simple database migration tool.

Gotta remember to remove it again when the old python code is gone.
This commit is contained in:
A. Svensson 2015-11-03 22:18:02 +01:00
parent 207c0a056b
commit 046b1834a4

78
tools/migration.sh Executable file
View File

@ -0,0 +1,78 @@
#!/bin/bash
# Simple script to migrate the old python database to the new one for Go.
OLDDB=""
NEWDB=""
OPTIND=1
while getopts "o:n:h?" opt; do
case "$opt" in
o)
OLDDB="$OPTARG"
;;
n)
NEWDB="$OPTARG"
;;
h|?)
echo "Usage options:"
echo -e "-h, -?\t\tShow this help and exit"
echo -e "-o <file>\tOld database file to dump data from (required)"
echo -e "-n <file>\tNew database file to insert data into (required)"
exit 0
;;
esac
done
if [[ ! -f "$OLDDB" || ! -f "$NEWDB" ]]; then
echo "Missing database files!"
exit 1
fi
TEMPFILE=$(tempfile)
read -d "" TMP << EOF
PRAGMA foreign_keys = ON;
DROP TABLE IF EXISTS "server";
DROP TABLE IF EXISTS "server_history";
CREATE TABLE "servers" ("id" integer primary key autoincrement,"last_updated" datetime,"title" varchar(64) UNIQUE,"game_url" varchar(255),"site_url" varchar(255),"players_current" integer,"players_avg" integer,"players_min" integer,"players_max" integer,"players_mon" integer,"players_tue" integer,"players_wed" integer,"players_thu" integer,"players_fri" integer,"players_sat" integer,"players_sun" integer );
CREATE TABLE "server_populations" ("id" integer primary key autoincrement,"timestamp" datetime,"players" integer,"server_id" integer REFERENCES servers(id) ON DELETE CASCADE ON UPDATE CASCADE );
CREATE INDEX idx_server_populations_server_id ON "server_populations"("server_id") ;
BEGIN TRANSACTION;
EOF
echo "$TMP" > "$TEMPFILE"
read -d "" TMP << EOF
.mode insert
select
id,
last_updated,
title,
game_url,
site_url,
players_current,
players_avg,
players_min,
players_max,
0,0,0,0,0,0,0
from gameservers_server;
EOF
echo "$TMP" | sqlite3 "$OLDDB" | sed 's/table/servers/g' >> "$TEMPFILE"
read -d "" TMP << EOF
.mode insert
select
id,
created,
players,
server_id
from gameservers_serverhistory;
EOF
echo "$TMP" | sqlite3 "$OLDDB" | sed 's/table/server_populations/g' >> "$TEMPFILE"
echo "COMMIT;" >> "$TEMPFILE"
sqlite3 "$NEWDB" < "$TEMPFILE"
rm "$TEMPFILE"