From 046b1834a431312b1e776e16f5354b510cf6a249 Mon Sep 17 00:00:00 2001 From: "A. Svensson" Date: Tue, 3 Nov 2015 22:18:02 +0100 Subject: [PATCH] Added a simple database migration tool. Gotta remember to remove it again when the old python code is gone. --- tools/migration.sh | 78 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100755 tools/migration.sh diff --git a/tools/migration.sh b/tools/migration.sh new file mode 100755 index 0000000..46f750b --- /dev/null +++ b/tools/migration.sh @@ -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 \tOld database file to dump data from (required)" + echo -e "-n \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"