From a2c0961498802efa308cd3614c1bba55af5d4352 Mon Sep 17 00:00:00 2001
From: thomaswoehlke <thomas.woehlke@gmail.com>
Date: Sun, 2 May 2021 12:41:06 +0200
Subject: [PATCH] working on: 0.0.32 Release

---
 .../application/application_model.py          | 22 ++++++++++------
 src/covid19/blueprints/who/who_model.py       | 22 ++++++++++------
 .../blueprints/who/who_service_update.py      | 26 +++++++++++++------
 3 files changed, 46 insertions(+), 24 deletions(-)

diff --git a/src/covid19/blueprints/application/application_model.py b/src/covid19/blueprints/application/application_model.py
index 2faf2ae9..5392090a 100644
--- a/src/covid19/blueprints/application/application_model.py
+++ b/src/covid19/blueprints/application/application_model.py
@@ -98,10 +98,13 @@ class ApplicationDateReported(db.Model):
 
     @classmethod
     def remove_all(cls):
-        for one in cls.get_all():
-            db.session.delete(one)
-        db.session.commit()
-        return None
+        num_rows_deleted = 0
+        try:
+            num_rows_deleted = db.session.query(cls).delete()
+            db.session.commit()
+        except Exception:
+            db.session.rollback()
+        return num_rows_deleted
 
     @classmethod
     def get_all_as_page(cls, page: int):
@@ -177,10 +180,13 @@ class ApplicationRegion(db.Model):
 
     @classmethod
     def remove_all(cls):
-        for one in cls.get_all():
-            db.session.delete(one)
-        db.session.commit()
-        return None
+        num_rows_deleted = 0
+        try:
+            num_rows_deleted = db.session.query(cls).delete()
+            db.session.commit()
+        except Exception:
+            db.session.rollback()
+        return num_rows_deleted
 
     @classmethod
     def get_all(cls):
diff --git a/src/covid19/blueprints/who/who_model.py b/src/covid19/blueprints/who/who_model.py
index e3b0cb1e..475cf831 100644
--- a/src/covid19/blueprints/who/who_model.py
+++ b/src/covid19/blueprints/who/who_model.py
@@ -83,10 +83,13 @@ class WhoCountry(db.Model):
 
     @classmethod
     def remove_all(cls):
-        for one in cls.get_all():
-            db.session.delete(one)
-        db.session.commit()
-        return None
+        num_rows_deleted = 0
+        try:
+            num_rows_deleted = db.session.query(cls).delete()
+            db.session.commit()
+        except Exception:
+            db.session.rollback()
+        return num_rows_deleted
 
     @classmethod
     def get_all_as_page(cls, page):
@@ -191,10 +194,13 @@ class WhoData(db.Model):
 
     @classmethod
     def remove_all(cls):
-        for one in cls.get_all():
-            db.session.delete(one)
-        db.session.commit()
-        return None
+        num_rows_deleted = 0
+        try:
+            num_rows_deleted = db.session.query(cls).delete()
+            db.session.commit()
+        except:
+            db.session.rollback()
+        return num_rows_deleted
 
     @classmethod
     def get_all_as_page(cls, page):
diff --git a/src/covid19/blueprints/who/who_service_update.py b/src/covid19/blueprints/who/who_service_update.py
index be9747d3..82872941 100644
--- a/src/covid19/blueprints/who/who_service_update.py
+++ b/src/covid19/blueprints/who/who_service_update.py
@@ -88,6 +88,8 @@ class WhoServiceUpdateFull(WhoServiceUpdateBase):
         WhoData.remove_all()
         new_dates_reported_from_import = WhoImport.get_dates_reported_as_array()
         i = 0
+        d = 0
+        k = 0
         for my_date_reported in new_dates_reported_from_import:
             my_date = WhoDateReported.get_by_date_reported(my_date_reported)
             for result_item in WhoImport.get_for_one_day(my_date_reported):
@@ -104,9 +106,14 @@ class WhoServiceUpdateFull(WhoServiceUpdateBase):
                 result_item.row_imported = True
                 db.session.add(result_item)
                 i += 1
-            db.session.commit()
-            app.logger.info(" update WHO initial  " + str(my_date) + " ... " + str(i) + " rows")
-        app.logger.info(" update WHO initial :  "+str(i)+" total rows")
+                k += 1
+            d += 1
+            if d % 7 == 0:
+                db.session.commit()
+                app.logger.info(" full update WHO  " + str(my_date) + " ... " + str(i) + " rows ( " + str(k) + " )")
+                k = 0
+        db.session.commit()
+        app.logger.info(" full update WHO :  "+str(i)+" total rows")
         app.logger.info(" WhoServiceUpdateFull.__full_update_data [done]")
         app.logger.info("------------------------------------------------------------")
         return self
@@ -231,6 +238,8 @@ class WhoServiceUpdate(WhoServiceUpdateBase):
         app.logger.info("------------------------------------------------------------")
         new_dates_reported_from_import = self.__who_import_get_new_dates_as_array()
         i = 0
+        d = 0
+        k = 0
         for my_date_reported in new_dates_reported_from_import:
             app.logger.info(my_date_reported)
             my_date = WhoDateReported.find_by_date_reported(my_date_reported)
@@ -239,7 +248,6 @@ class WhoServiceUpdate(WhoServiceUpdateBase):
                 db.session.add(myday)
                 db.session.commit()
             my_date = WhoDateReported.get_by_date_reported(my_date_reported)
-            k = 0
             for result_item in WhoImport.get_for_one_day(my_date_reported):
                 if result_item.country_code == "":
                     my_country = WhoCountry.get_by_country(result_item.country)
@@ -256,10 +264,12 @@ class WhoServiceUpdate(WhoServiceUpdateBase):
                 db.session.add(o)
                 i += 1
                 k += 1
-                if i % 2000 == 0:
-                    app.logger.info(" update WHO incremental ... "+str(i)+" rows")
-            db.session.commit()
-            app.logger.info(" update WHO incremental ... " + str(i) + " rows [" + str(my_date) + "] (" + str(k) + ")")
+            d += 1
+            if d % 7 == 0:
+                db.session.commit()
+                app.logger.info(" update WHO  " + str(my_date) + " ... " + str(i) + " rows ( " + str(k) + " )")
+                k = 0
+        db.session.commit()
         app.logger.info(" update WHO incremental :  "+str(i)+" rows total")
         app.logger.info(" WhoServiceUpdate.__update_data [done]")
         app.logger.info("------------------------------------------------------------")
-- 
GitLab