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

View file

@ -11,8 +11,6 @@ from anki.facts import Fact
from anki.cards import Card from anki.cards import Card
from tests.shared import getEmptyDeck from tests.shared import getEmptyDeck
#import psyco; psyco.profile()
# Local tests # Local tests
########################################################################## ##########################################################################
@ -24,8 +22,8 @@ server=None
def setup_basic(loadDecks=None): def setup_basic(loadDecks=None):
global deck1, deck2, client, server global deck1, deck2, client, server
if loadDecks: if loadDecks:
deck1 = Deck(loadDecks[0], backup=False) deck1 = Deck(loadDecks[0])
deck2 = Deck(loadDecks[1], backup=False) deck2 = Deck(loadDecks[1])
else: else:
deck1 = getEmptyDeck() deck1 = getEmptyDeck()
# add a fact to deck 1 # add a fact to deck 1
@ -126,3 +124,18 @@ def test_facts():
assert client.sync() == "success" assert client.sync() == "success"
assert not deck1.db.scalar("select 1 from facts where id = ?", fid) assert not deck1.db.scalar("select 1 from facts where id = ?", fid)
assert not deck2.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()