From 1d43b5eebaf480e587866b2ffef29efc5b09904e Mon Sep 17 00:00:00 2001
From: Lorenz Stechauner <lorenz.stechauner@necronda.net>
Date: Thu, 9 Feb 2023 18:30:27 +0100
Subject: [PATCH] Added output argument to wgexport.py

---
 wgmaster/wgexport.py | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/wgmaster/wgexport.py b/wgmaster/wgexport.py
index 96155e3..4c2bf57 100644
--- a/wgmaster/wgexport.py
+++ b/wgmaster/wgexport.py
@@ -2,11 +2,13 @@
 
 import argparse
 import datetime
+import os
+import shutil
 import decimal
 import pypyodbc
 
 
-def convert(a) -> str:
+def convert(n, a) -> str:
     if type(a) == str:
         return f'"{a}"'
     elif type(a) == bool:
@@ -26,9 +28,13 @@ def convert(a) -> str:
 
 if __name__ == '__main__':
     parser = argparse.ArgumentParser()
+    parser.add_argument('-o', '--output', default='tables')
     parser.add_argument('wgdaten')
     args = parser.parse_args()
 
+    shutil.rmtree(args.output)
+    os.makedirs(args.output, exist_ok=True)
+
     pypyodbc.lowercase = False
     conn = pypyodbc.connect(f"Driver={{Microsoft Access Driver (*.mdb, *.accdb)}};Dbq={args.wgdaten};")
     cur = conn.cursor()
@@ -38,17 +44,19 @@ if __name__ == '__main__':
         tbls = tbls.fetchall()
         for file, _, t_name, t_type, _ in tbls:
             print(t_name)
+
             cur.execute(f"SELECT TOP 1 * FROM {t_name};")
             desc = [(t[0], t[1]) for t in cur.description]
             cur.fetchall()
             print(desc)
+
             cur.execute(f"SELECT * FROM {t_name} ORDER BY `{desc[0][0]}`;")
             cols = [t[0] for t in cur.description]
 
-            with open(f'tables/{t_name}.csv', 'wb+') as f:
+            with open(f'{args.output}/{t_name}.csv', 'wb+') as f:
                 f.write((';'.join(cols) + '\n').encode('utf-8'))
                 for row in cur:
-                    f.write((';'.join([convert(a) for a in row]) + '\n').encode('utf-8'))
+                    f.write((';'.join([convert(n, a) for n, a in zip(cols, row)]) + '\n').encode('utf-8'))
     finally:
         cur.close()
         conn.close()