revlog timestamp is ms based; should fetch facts/cards by mod not id

This commit is contained in:
Damien Elmes 2011-09-09 21:11:11 +09:00
parent af2b2373b9
commit 85a2bb6193
2 changed files with 20 additions and 7 deletions

View file

@ -184,7 +184,7 @@ class Syncer(object):
def getRevlog(self):
r = self.deck.db.all("select * from revlog where id > ? limit ?",
self.ls, self.MAX_REVLOG)
self.ls*1000, self.MAX_REVLOG)
if len(r) == self.MAX_REVLOG:
raise SyncTooLarge
return r
@ -198,7 +198,7 @@ class Syncer(object):
##########################################################################
def getFacts(self):
f = self.deck.db.all("select * from facts where id > ? limit ?",
f = self.deck.db.all("select * from facts where mod > ? limit ?",
self.ls, self.MAX_FACTS)
if len(f) == self.MAX_FACTS:
raise SyncTooLarge
@ -225,7 +225,7 @@ class Syncer(object):
##########################################################################
def getCards(self):
c = self.deck.db.all("select * from cards where id > ? limit ?",
c = self.deck.db.all("select * from cards where mod > ? limit ?",
self.ls, self.MAX_CARDS)
if len(c) == self.MAX_CARDS:
raise SyncTooLarge

View file

@ -11,8 +11,6 @@ from anki.facts import Fact
from anki.cards import Card
from tests.shared import getEmptyDeck
#import psyco; psyco.profile()
# Local tests
##########################################################################
@ -24,8 +22,8 @@ server=None
def setup_basic(loadDecks=None):
global deck1, deck2, client, server
if loadDecks:
deck1 = Deck(loadDecks[0], backup=False)
deck2 = Deck(loadDecks[1], backup=False)
deck1 = Deck(loadDecks[0])
deck2 = Deck(loadDecks[1])
else:
deck1 = getEmptyDeck()
# add a fact to deck 1
@ -126,3 +124,18 @@ def test_facts():
assert client.sync() == "success"
assert not deck1.db.scalar("select 1 from facts where id = ?", fid)
assert not deck2.db.scalar("select 1 from facts where id = ?", fid)
def _test_speed():
t = time.time()
setup_basic([os.path.expanduser("~/rapid.anki"),
os.path.expanduser("~/rapid2.anki")])
print "load %d" % ((time.time() - t)*1000); t = time.time()
deck2.save(mod=intTime()+1)
# 3000 revlog entries: ~128ms
# 3000 cards: ~200ms
# 3000 facts: ~500ms
assert client.sync() != "fullSync"
print "sync %d" % ((time.time() - t)*1000); t = time.time()