[hamster-applet] rely on sqlite's autoincrement instead of self-cooked max-inserts
- From: Toms Baugis <tbaugis src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [hamster-applet] rely on sqlite's autoincrement instead of self-cooked max-inserts
- Date: Fri, 22 Jan 2010 01:05:20 +0000 (UTC)
commit 98d57048e6c46163286e38b627e156e67d5d06ec
Author: Toms Bauģis <toms baugis gmail com>
Date: Fri Jan 22 01:01:38 2010 +0000
rely on sqlite's autoincrement instead of self-cooked max-inserts
hamster/db.py | 32 ++++++++++++++++----------------
hamster/hamsterdbus.py | 3 +--
2 files changed, 17 insertions(+), 18 deletions(-)
---
diff --git a/hamster/db.py b/hamster/db.py
index f2eb481..cadb100 100644
--- a/hamster/db.py
+++ b/hamster/db.py
@@ -190,16 +190,13 @@ class Storage(storage.Storage):
return True
def __add_category(self, name):
- new_rec = self.fetchone("select max(id) +1, max(category_order) + 1 from categories")
-
- id, order = new_rec[0] or 1, new_rec[1] or 1
-
+ order = self.fetchone("select max(category_order) + 1 from categories")[0] or 1
query = """
- INSERT INTO categories (id, name, category_order)
- VALUES (?, ?, ?)
+ INSERT INTO categories (name, category_order)
+ VALUES (?, ?)
"""
- self.execute(query, (id, name, order))
- return id
+ self.execute(query, (name, order))
+ return self.__last_insert_rowid()
def __update_category(self, id, name):
if id > -1: # Update, and ignore unsorted, if that was somehow triggered
@@ -568,14 +565,18 @@ class Storage(storage.Storage):
"""
self.execute(insert, (activity_id, start_time, end_time, activity.description))
- fact_id = self.fetchone("select max(id) as max_id from facts")['max_id']
+ fact_id = self.__last_insert_rowid()
#now link tags
insert = ["insert into fact_tags(fact_id, tag_id) values(?, ?)"] * len(tags)
params = [(fact_id, tag["id"]) for tag in tags]
self.execute(insert, params)
- return self.__get_fact(fact_id)
+ return fact_id
+
+ def __last_insert_rowid(self):
+ return self.fetchone("SELECT last_insert_rowid();")[0]
+
def __get_todays_facts(self):
from configuration import conf
@@ -809,15 +810,14 @@ class Storage(storage.Storage):
#now do the create bit
category_id = category_id or -1
- new_rec = self.fetchone("select max(id) + 1 , max(activity_order) + 1 from activities")
- new_id, new_order = new_rec[0] or 1, new_rec[1] or 1
+ new_order = self.fetchone("select max(activity_order) + 1 from activities")[0] or 1
query = """
- INSERT INTO activities (id, name, category_id, activity_order)
- VALUES (?, ?, ?, ?)
+ INSERT INTO activities (name, category_id, activity_order)
+ VALUES (?, ?, ?)
"""
- self.execute(query, (new_id, name, category_id, new_order))
- return new_id
+ self.execute(query, (name, category_id, new_order))
+ return self.__last_insert_rowid()
def __update_activity(self, id, name, category_id):
query = """
diff --git a/hamster/hamsterdbus.py b/hamster/hamsterdbus.py
index a8544bb..9f43eca 100644
--- a/hamster/hamsterdbus.py
+++ b/hamster/hamsterdbus.py
@@ -183,8 +183,7 @@ class HamsterDbusController(dbus.service.Object):
if end_time:
end = datetime.datetime.utcfromtimestamp(end_time)
- fact = runtime.storage.add_fact(activity, "", start, end)
- return fact['id']
+ return runtime.storage.add_fact(activity, "", start, end)
@dbus.service.method(HAMSTER_URI, in_signature='ss')
def AddActivity(self, activity, category):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]