From 1beb7013f5e2af33831d9dca431de1ef0cbb3ad9 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 23 Feb 2017 08:24:09 +0530 Subject: [PATCH] Also store read progress in last_read table --- resources/metadata_sqlite.sql | 2 +- src/calibre/db/cache.py | 12 ++++++------ src/calibre/db/schema_upgrades.py | 2 +- src/calibre/db/tests/metadata.db | Bin 245760 -> 245760 bytes src/calibre/db/tests/reading.py | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/resources/metadata_sqlite.sql b/resources/metadata_sqlite.sql index 6af5466041..454b271465 100644 --- a/resources/metadata_sqlite.sql +++ b/resources/metadata_sqlite.sql @@ -135,7 +135,7 @@ CREATE TABLE last_read_positions ( id INTEGER PRIMARY KEY, device TEXT NOT NULL, cfi TEXT NOT NULL, epoch REAL NOT NULL, - extra TEXT DEFAULT '', + pos_frac REAL NOT NULL DEFAULT 0, UNIQUE(user, device, book, format) ); diff --git a/src/calibre/db/cache.py b/src/calibre/db/cache.py index 3f878ed281..ff24c62655 100644 --- a/src/calibre/db/cache.py +++ b/src/calibre/db/cache.py @@ -2136,14 +2136,14 @@ class Cache(object): def get_last_read_positions(self, book_id, fmt, user): fmt = fmt.upper() ans = [] - for device, cfi, epoch in self.backend.execute( - 'SELECT device,cfi,epoch FROM last_read_positions WHERE book=? AND format=? AND user=?', + for device, cfi, epoch, pos_frac in self.backend.execute( + 'SELECT device,cfi,epoch,pos_frac FROM last_read_positions WHERE book=? AND format=? AND user=?', (book_id, fmt, user)): - ans.append({'device':device, 'cfi': cfi, 'epoch':epoch}) + ans.append({'device':device, 'cfi': cfi, 'epoch':epoch, 'pos_frac':pos_frac}) return ans @write_api - def set_last_read_position(self, book_id, fmt, user='_', device='_', cfi=None, epoch=None): + def set_last_read_position(self, book_id, fmt, user='_', device='_', cfi=None, epoch=None, pos_frac=0): fmt = fmt.upper() device = device or '_' user = user or '_' @@ -2153,8 +2153,8 @@ class Cache(object): (book_id, fmt, user, device)) else: self.backend.execute( - 'INSERT OR REPLACE INTO last_read_positions(book,format,user,device,cfi,epoch) VALUES (?,?,?,?,?,?)', - (book_id, fmt, user, device, cfi, epoch or time())) + 'INSERT OR REPLACE INTO last_read_positions(book,format,user,device,cfi,epoch,pos_frac) VALUES (?,?,?,?,?,?,?)', + (book_id, fmt, user, device, cfi, epoch or time(), pos_frac)) @read_api def export_library(self, library_key, exporter, progress=None, abort=None): diff --git a/src/calibre/db/schema_upgrades.py b/src/calibre/db/schema_upgrades.py index a32f593f16..decb6278bc 100644 --- a/src/calibre/db/schema_upgrades.py +++ b/src/calibre/db/schema_upgrades.py @@ -652,7 +652,7 @@ CREATE TABLE last_read_positions ( id INTEGER PRIMARY KEY, device TEXT NOT NULL, cfi TEXT NOT NULL, epoch REAL NOT NULL, - extra TEXT DEFAULT '', + pos_frac REAL NOT NULL DEFAULT 0, UNIQUE(user, device, book, format) ); DROP INDEX IF EXISTS lrp_idx; diff --git a/src/calibre/db/tests/metadata.db b/src/calibre/db/tests/metadata.db index 0757bc5e0ec99bf74ac1407af0ff321623e4ae8f..fb8345a10191e6466e494a103e2ed932b7ac07fa 100644 GIT binary patch delta 117 zcmZo@;BRQ)-(beX7};#j)Nani2*ga=&6$|bF6Cokn99Jc&g921mGKXQHplW)9}*E-RR0mhE9?0RXjtBdY)a delta 119 zcmZo@;BRQ)-(beX7}adf)Nani2*ga=&6$|bF6CooaA9CpXYylM!1#y3WwIcT(ex#| znPa${A{ryu#f^=bT0*xkSivmBD4JSPQk19=;u;a6;Nt4$80r(Epsv3C(n@9{J~l>% W9}EmXfV$sppR