Browse Source

Haal gegevens op sinds laatst bekende datum

Stan Jansen 4 years ago
parent
commit
16af11a456
1 changed files with 23 additions and 3 deletions
  1. 23 3
      voedingscentrum.py

+ 23 - 3
voedingscentrum.py

@@ -19,8 +19,8 @@ parser.add_argument('--dbpassword', type=str, default=None, help="Je PostgreSQL
 parser.add_argument('--dbport', type=int, default=5432, help="Je PostgreSQL poort (standaard 5432)")
 parser.add_argument('--dbname', type=str, default='voeding', help="De naam van je PostgreSQL database (standaard voeding)")
 
-parser.add_argument('--from-date', type=str, help="Datum vanaf wanneer je gegevens wilt ophalen (standaard vandaag)")
-parser.add_argument('--to-date', type=str, help="Datum tot wanneer je gegevens wilt ophalen (standaard vandaag)")
+parser.add_argument('--from-date', type=str, help="Datum vanaf wanneer je gegevens wilt ophalen")
+parser.add_argument('--to-date', type=str, help="Datum tot wanneer je gegevens wilt ophalen")
 args = parser.parse_args()
 
 def parse_date(date_string):
@@ -114,8 +114,28 @@ DATABASE = {'host': args.dbhost,
             'password': args.dbpassword,
             'dbname': args.dbname,
             'port': args.dbport}
-DATE_FROM = parse_date(args.from_date) if args.from_date else date.today()
+
+conn = psycopg2.connect(**DATABASE)
+cursor = conn.cursor()
+
+# Controleer van welke datum we voor het laatst gegevens hebben
+cursor.execute(f"SELECT MAX(datum) FROM consumpties_{args.dbuser}")
+if cursor.rowcount == 1:
+    last_known_date = cursor.fetchone()[0]
+else:
+    last_known_date = None
+
+# Bepaal de datum range waarbinnen we gaan zoeken
+if args.from_date:
+    DATE_FROM = parse_date(args.from_date)
+elif last_known_date and last_known_date <= date.today():
+    DATE_FROM = last_known_date
+else:
+    DATE_FROM = date.today()
+
 DATE_TO = parse_date(args.to_date) if args.to_date else date.today()
+if DATE_TO < DATE_FROM:
+    DATE_TO = DATE_FROM
 
 data = download_data()
 if not data: