From 1232ba036e7769a58db21bf8e99b7f20a353535a Mon Sep 17 00:00:00 2001
From: coolneng <akasroua@gmail.com>
Date: Wed, 24 Feb 2021 01:50:51 +0100
Subject: [PATCH] Revert "Fix pgloader database URI"

This reverts commit fcc06ae4a042fd6af76b8949c73884053823020b.
---
 shell.nix | 57 +++++++++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 49 insertions(+), 8 deletions(-)

diff --git a/shell.nix b/shell.nix
index 49c9055..d019c17 100644
--- a/shell.nix
+++ b/shell.nix
@@ -2,15 +2,56 @@
 
 with pkgs;
 
-mkShell {
-  buildInputs = [ python27 python27Packages.virtualenv ];
+let
+  psql_file = "psql_creation.sql";
+  psql_dir = "$(pwd)/.pgdata";
+  mysql_file = "mysql_creation.sql";
+  mysql_dir = "$(pwd)/.mysql";
+  socket = "${mysql_dir}/mysql.sock";
+  origin = "mysql:///odyfo";
+  destination = "postgresql:///odyfo";
+
+in mkShell {
+  buildInputs = [
+    postgresql
+    mysql57
+    pgloader
+    python38Packages.alembic
+    python38Packages.pymysql
+  ];
 
   shellHook = ''
-    # Workaround to use pip
-    SOURCE_DATE_EPOCH=$(date +%s)
-    virtualenv .venv
-    export PATH=$PWD/.venv/bin:$PATH
-    pip install etlalchemy
-    pip install psycopg2
+    trap "kill 0" EXIT
+    export PGDATA="${psql_dir}"
+    export PGHOST="${psql_dir}"
+
+    # Initialize PostgreSQL
+    if [ ! -d ${psql_dir} ]; then
+      initdb --auth-local=trust --no-locale --encoding=UTF8
+    fi
+
+    if ! pg_ctl status; then
+      pg_ctl start -o "--unix_socket_directories=${psql_dir} --listen_addresses='''"
+    fi
+
+    psql -d postgres -f ${psql_file}
+
+    # Initialize MySQL
+    if [ ! -d ${mysql_dir} ]; then
+      mysqld --datadir="${mysql_dir}" --socket="${socket}" --initialize-insecure
+    fi
+
+    mysqld --datadir="${mysql_dir}" --socket="${socket}" --skip-networking &
+    sleep 5
+
+    mysql --socket="${socket}" -u root < ${mysql_file}
+
+    alias psql='psql -d postgres'
+    alias mysql='mysql --socket="${socket}" -u root'
+    alias nuke='rm -rf ${psql_dir} ${mysql_dir}'
+
+    alembic upgrade head
+    pgloader ${origin} ${destination}
+    pg_dump odyfo > databases/migrated_db.sql
   '';
 }