mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-02-24 02:51:18 +00:00
Remove magic-folder db code from backupdb.py
This commit is contained in:
parent
f819aa5b5d
commit
c82f977fb7
@ -68,27 +68,6 @@ UPDATERS = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# magic-folder db schema version 3
|
|
||||||
MAGIC_FOLDER_SCHEMA_v3 = """
|
|
||||||
CREATE TABLE version
|
|
||||||
(
|
|
||||||
version INTEGER -- contains one row, set to %s
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE local_files
|
|
||||||
(
|
|
||||||
path VARCHAR(1024) PRIMARY KEY, -- index, this is an absolute UTF-8-encoded local filename
|
|
||||||
-- note that size is before mtime and ctime here, but after in function parameters
|
|
||||||
size INTEGER, -- os.stat(fn)[stat.ST_SIZE] (NULL if the file has been deleted)
|
|
||||||
mtime NUMBER, -- os.stat(fn)[stat.ST_MTIME]
|
|
||||||
ctime NUMBER, -- os.stat(fn)[stat.ST_CTIME]
|
|
||||||
version INTEGER,
|
|
||||||
last_downloaded_uri VARCHAR(256) UNIQUE, -- URI:CHK:...
|
|
||||||
last_downloaded_timestamp NUMBER
|
|
||||||
);
|
|
||||||
""" % (3,)
|
|
||||||
|
|
||||||
|
|
||||||
def get_backupdb(dbfile, stderr=sys.stderr,
|
def get_backupdb(dbfile, stderr=sys.stderr,
|
||||||
create_version=(SCHEMA_v2, 2), just_create=False):
|
create_version=(SCHEMA_v2, 2), just_create=False):
|
||||||
# Open or create the given backupdb file. The parent directory must
|
# Open or create the given backupdb file. The parent directory must
|
||||||
@ -98,8 +77,6 @@ def get_backupdb(dbfile, stderr=sys.stderr,
|
|||||||
just_create=just_create, dbname="backupdb")
|
just_create=just_create, dbname="backupdb")
|
||||||
if create_version[1] in (1, 2):
|
if create_version[1] in (1, 2):
|
||||||
return BackupDB(sqlite3, db)
|
return BackupDB(sqlite3, db)
|
||||||
elif create_version[1] == 3:
|
|
||||||
return MagicFolderDB(sqlite3, db)
|
|
||||||
else:
|
else:
|
||||||
print >>stderr, "invalid db schema version specified"
|
print >>stderr, "invalid db schema version specified"
|
||||||
return None
|
return None
|
||||||
@ -384,103 +361,3 @@ class BackupDB:
|
|||||||
" WHERE dircap=?",
|
" WHERE dircap=?",
|
||||||
(now, dircap))
|
(now, dircap))
|
||||||
self.connection.commit()
|
self.connection.commit()
|
||||||
|
|
||||||
|
|
||||||
class MagicFolderDB():
|
|
||||||
VERSION = 3
|
|
||||||
|
|
||||||
def __init__(self, sqlite_module, connection):
|
|
||||||
self.sqlite_module = sqlite_module
|
|
||||||
self.connection = connection
|
|
||||||
self.cursor = connection.cursor()
|
|
||||||
|
|
||||||
def check_file_db_exists(self, path):
|
|
||||||
"""I will tell you if a given file has an entry in my database or not
|
|
||||||
by returning True or False.
|
|
||||||
"""
|
|
||||||
c = self.cursor
|
|
||||||
c.execute("SELECT size,mtime,ctime"
|
|
||||||
" FROM local_files"
|
|
||||||
" WHERE path=?",
|
|
||||||
(path,))
|
|
||||||
row = self.cursor.fetchone()
|
|
||||||
if not row:
|
|
||||||
return False
|
|
||||||
else:
|
|
||||||
return True
|
|
||||||
|
|
||||||
def get_all_relpaths(self):
|
|
||||||
"""
|
|
||||||
Retrieve a set of all relpaths of files that have had an entry in magic folder db
|
|
||||||
(i.e. that have been downloaded at least once).
|
|
||||||
"""
|
|
||||||
self.cursor.execute("SELECT path FROM local_files")
|
|
||||||
rows = self.cursor.fetchall()
|
|
||||||
return set([r[0] for r in rows])
|
|
||||||
|
|
||||||
def get_last_downloaded_uri(self, relpath_u):
|
|
||||||
"""
|
|
||||||
Return the last downloaded uri recorded in the magic folder db.
|
|
||||||
If none are found then return None.
|
|
||||||
"""
|
|
||||||
c = self.cursor
|
|
||||||
c.execute("SELECT last_downloaded_uri"
|
|
||||||
" FROM local_files"
|
|
||||||
" WHERE path=?",
|
|
||||||
(relpath_u,))
|
|
||||||
row = self.cursor.fetchone()
|
|
||||||
if not row:
|
|
||||||
return None
|
|
||||||
else:
|
|
||||||
return row[0]
|
|
||||||
|
|
||||||
def get_local_file_version(self, relpath_u):
|
|
||||||
"""
|
|
||||||
Return the version of a local file tracked by our magic folder db.
|
|
||||||
If no db entry is found then return None.
|
|
||||||
"""
|
|
||||||
c = self.cursor
|
|
||||||
c.execute("SELECT version"
|
|
||||||
" FROM local_files"
|
|
||||||
" WHERE path=?",
|
|
||||||
(relpath_u,))
|
|
||||||
row = self.cursor.fetchone()
|
|
||||||
if not row:
|
|
||||||
return None
|
|
||||||
else:
|
|
||||||
return row[0]
|
|
||||||
|
|
||||||
def did_upload_version(self, filecap, relpath_u, version, pathinfo):
|
|
||||||
print "did_upload_version(%r, %r, %r, %r)" % (filecap, relpath_u, version, pathinfo)
|
|
||||||
now = time.time()
|
|
||||||
try:
|
|
||||||
print "insert"
|
|
||||||
self.cursor.execute("INSERT INTO local_files VALUES (?,?,?,?,?,?)",
|
|
||||||
(relpath_u, pathinfo.size, pathinfo.mtime, pathinfo.ctime, version, filecap, pathinfo.mtime))
|
|
||||||
except (self.sqlite_module.IntegrityError, self.sqlite_module.OperationalError):
|
|
||||||
print "err... update"
|
|
||||||
try:
|
|
||||||
self.cursor.execute("UPDATE local_files"
|
|
||||||
" SET size=?, mtime=?, ctime=?, version=?, last_downloaded_uri=?, last_downloaded_timestamp=?"
|
|
||||||
" WHERE path=?",
|
|
||||||
(pathinfo.size, pathinfo.mtime, pathinfo.ctime, version, filecap, pathinfo.mtime, relpath_u))
|
|
||||||
except (self.sqlite_module.IntegrityError, self.sqlite_module.OperationalError):
|
|
||||||
print "WTF BBQ OMG"
|
|
||||||
self.connection.commit()
|
|
||||||
print "commited"
|
|
||||||
|
|
||||||
def is_new_file(self, pathinfo, relpath_u):
|
|
||||||
"""
|
|
||||||
Returns true if the file's current pathinfo (size, mtime, and ctime) has
|
|
||||||
changed from the pathinfo previously stored in the db.
|
|
||||||
"""
|
|
||||||
#print "is_new_file(%r, %r)" % (pathinfo, relpath_u)
|
|
||||||
c = self.cursor
|
|
||||||
c.execute("SELECT size, mtime, ctime"
|
|
||||||
" FROM local_files"
|
|
||||||
" WHERE path=?",
|
|
||||||
(relpath_u,))
|
|
||||||
row = self.cursor.fetchone()
|
|
||||||
if not row:
|
|
||||||
return True
|
|
||||||
return (pathinfo.size, pathinfo.mtime, pathinfo.ctime) != row
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user