killbill-uncached

Fix import account script

1/9/2013 5:30:21 PM

Changes

bin/import-account 95(+77 -18)

Details

bin/import-account 95(+77 -18)

diff --git a/bin/import-account b/bin/import-account
old mode 100755
new mode 100644
index 88815ad..68060b8
--- a/bin/import-account
+++ b/bin/import-account
@@ -18,30 +18,89 @@
 #                                                                                 #
 ###################################################################################
 
-set -e
+#set -x
+
 
 # Killbill server
-KILLBILL_URL=http://127.0.0.1:8080
+KILLBILL_HOST=${KILLBILL_HOST-127.0.0.1}
+KILLBILL_URL=http://${KILLBILL_HOST}:8080
+
 # Destination database
-DATABASE=killbill
-USERNAME=root
-PASSWORD=root
+DATABASE=${DATABASE-killbill}
+USERNAME=${USERNAME-root}
+PASSWORD=${PASSWORD-root}
+
 # Temporary directory
 TMP_DIR=/var/tmp
 
 WHO=`whoami`
-cd $TMP_DIR
-rm -f xa*
-curl $KILLBILL_URL/1.0/kb/export/$1 -H"X-Killbill-CreatedBy: $WHO" | split -p '--'  --
-for i in `ls xa*`; do
-    table_name=$(cat $i | head -1 | awk '{print $2}')
-    # Put \N for empty columns to set values to NULL, not ''
-    tmp=${table_name}.tmp
-    grep ',,' $table_name > /dev/null
+
+
+function fill_empty_columns() {
+
+    local filename=$1
+    local tmp=${filename}.tmp
+    grep ',,' $filename > /dev/null
     while [[ $? = 0 ]]; do
-        cat $table_name | sed s/,,/,\\\\N,/ > $tmp
-        mv $tmp $table_name
-        grep ',,' $table_name > /dev/null
+        cat $filename | sed s/,,/,\\\\N,/ > $tmp
+        mv $tmp $filename
+        grep ',,' $filename > /dev/null
     done
-    mysqlimport --ignore-lines=1 --fields-terminated-by=, --fields-enclosed-by=\" --verbose -u$USERNAME -p$PASSWORD $DATABASE $TMP_DIR/$table_name
-done
+}
+
+function replace_boolean() {
+
+    local filename=$1
+    local tmp=${filename}.tmp
+
+    cat $filename | sed s/,true/,1/g > $tmp
+    mv $tmp $filename
+
+    cat $filename | sed s/true,/1,/g > $tmp
+    mv $tmp $filename
+
+    cat $filename | sed s/,false/,0/g > $tmp
+    mv $tmp $filename
+
+    cat $filename | sed s/false,/0,/g > $tmp
+    mv $tmp $filename
+}
+
+function export_data() {
+    local account_id=$1
+    curl $KILLBILL_URL/1.0/kb/export/$1 -H"X-Killbill-CreatedBy: $WHO" | split -p '--'  --
+}
+
+
+function import_data() {
+    local filename=$1
+     mysqlimport --ignore-lines=1 --fields-terminated-by=, --fields-enclosed-by=\" --verbose -u$USERNAME -p$PASSWORD $DATABASE $TMP_DIR/$filename
+}
+
+function main() {
+
+    local account_id=$1
+    export_data $account_id
+
+    for i in `ls x*`; do
+
+        # Extract table name and move temp file with that name
+        table_name=$(cat $i | head -1 | awk '{print $2}')
+        rm -f $table_name
+        mv $i $table_name
+
+        # Fill empty column with '\N'
+        fill_empty_columns $table_name
+
+        replace_boolean $table_name
+
+        import_data $table_name
+     done
+}
+
+# Setup
+
+cd $TMP_DIR
+rm -f xa*
+main $1
+