Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar_stats_consolidation/db.py
diff options
context:
space:
mode:
Diffstat (limited to 'sugar_stats_consolidation/db.py')
-rw-r--r--sugar_stats_consolidation/db.py46
1 files changed, 33 insertions, 13 deletions
diff --git a/sugar_stats_consolidation/db.py b/sugar_stats_consolidation/db.py
index 177e157..d387ed7 100644
--- a/sugar_stats_consolidation/db.py
+++ b/sugar_stats_consolidation/db.py
@@ -106,6 +106,16 @@ class DB_Stats:
self.store_user(rrd)
cursor = self.cnx.cursor()
+ select = ("SELECT * FROM Usages WHERE "
+ "user_hash = %s AND "
+ "resource_name = %s AND "
+ "start_date = %s AND "
+ "data_type = %s")
+ update = ("UPDATE Usages SET data = %s WHERE "
+ "user_hash = %s AND "
+ "resource_name = %s AND "
+ "start_date = %s AND "
+ "data_type = %s")
insert = ("INSERT INTO Usages "
"(user_hash, "
"resource_name, "
@@ -115,11 +125,22 @@ class DB_Stats:
"VALUES (%s, %s, %s, %s ,%s) ")
for d in rrd.get_uptime_by_interval():
- info = (rrd.get_user_hash(), rrd.get_name() , datetime.fromtimestamp(float(d[0])), 'uptime', d[1])
+ info_sel = (rrd.get_user_hash(), rrd.get_name() , datetime.fromtimestamp(float(d[0])), 'uptime')
try:
- cursor.execute(insert, info)
- if self.update_last_record(rrd.get_date_last_record()) == 0:
- self.cnx.commit()
+ """Verify if this activity has an entry already at the same start_date"""
+ cursor.execute (select, info_sel)
+ result = cursor.fetchone()
+
+ if result != None:
+ log.info('Update uptime \'%s\' entry for resource \'%s\' ', d[1], rrd.get_name())
+ info_up = (d[1], rrd.get_user_hash(), rrd.get_name() , datetime.fromtimestamp(float(d[0])), 'uptime')
+ cursor.execute(update, info_up)
+ else:
+ log.info('New uptime \'%s\' entry for resource \'%s\'', d[1], rrd.get_name())
+ info_ins = (rrd.get_user_hash(), rrd.get_name() , datetime.fromtimestamp(float(d[0])), 'uptime', d[1])
+ cursor.execute(insert, info_ins)
+
+ self.cnx.commit()
except mysql.connector.Error as err:
log.error('MySQL on store_activiy_uptime: %s %s', cursor.statement, err)
@@ -134,7 +155,7 @@ class DB_Stats:
cursor.execute(op, params)
result = cursor.fetchone()
if result != None:
- log.info('Resource %s already present in DB', resource_name)
+ log.debug('Resource %s already present in DB', resource_name)
else:
insert = ("INSERT INTO Resources (name) VALUES (%s)")
info = (resource_name, )
@@ -153,7 +174,7 @@ class DB_Stats:
cursor.execute(op, params)
result = cursor.fetchone()
if result != None:
- log.info('User %s already in DB', rrd.user_hash)
+ log.debug('User %s already in DB', rrd.user_hash)
else:
insert = ("INSERT INTO Users (hash, uuid, machine_sn, age, school, sw_version) VALUES (%s, %s, %s, %s, %s, %s)")
params = (rrd.get_user_hash(), rrd.get_uuid(), rrd.get_sn(), rrd.get_age(), rrd.get_school(), "1.0.0")
@@ -166,24 +187,23 @@ class DB_Stats:
- def update_last_record (self, ts):
+ def update_last_record (self):
cursor = self.cnx.cursor()
res = 0
op = ("SELECT * FROM Runs")
- params = (datetime.fromtimestamp(float(ts)),)
try:
cursor.execute(op)
result = cursor.fetchone()
if result != None:
- op = ("UPDATE Runs SET last_ts = %s")
- cursor.execute(op, params)
+ op = ("UPDATE Runs SET last_ts = CURRENT_TIMESTAMP")
+ cursor.execute(op)
self.cnx.commit()
else:
- op = ("INSERT INTO Runs VALUES(%s)")
- cursor.execute(op, params)
+ op = ("INSERT INTO Runs VALUES(CURRENT_TIMESTAMP)")
+ cursor.execute(op)
self.cnx.commit()
-
+ log.info("Save last record");
except mysql.connector.Error as err:
log.error('MySQL on update_last_record: %s %s', cursor.statement, err)
res = -1