From 7fa40e6c9c78ef6716a38587de9625c7168ed872 Mon Sep 17 00:00:00 2001 From: JohnE Date: Thu, 27 Aug 2015 19:48:42 -0700 Subject: [PATCH] NEW: added app name, app version, notes, to the fingerprint metadata to support multiple fingerprint files --- dbfp.py | 88 +- libs/fingerprint.py | 49 +- test-data/contacts2.db_2015-06-25_104808.json | 1208 ----------------- .../profilecache.db_2015-06-25_111026.json | 209 --- test-data/tc.db_2015-06-25_111214.json | 164 --- .../tc.db_2015-06-25_111214_UPDATED.json | 171 --- test-data/test1.db_2015-06-25_111047.json | 345 ----- 7 files changed, 103 insertions(+), 2131 deletions(-) delete mode 100644 test-data/contacts2.db_2015-06-25_104808.json delete mode 100644 test-data/profilecache.db_2015-06-25_111026.json delete mode 100644 test-data/tc.db_2015-06-25_111214.json delete mode 100644 test-data/tc.db_2015-06-25_111214_UPDATED.json delete mode 100644 test-data/test1.db_2015-06-25_111047.json diff --git a/dbfp.py b/dbfp.py index d9cbe2d..c5e6b0f 100644 --- a/dbfp.py +++ b/dbfp.py @@ -8,27 +8,61 @@ from libs import toolbox def main(): - (filein, fileout, filejson, verbose) = parseArgs() + parseArgs() + # db = fingerprint.DBSchema() + + # if (filein and filejson): + # db.scanDBFile(filein) + # db.compareDB(filejson) + # elif (filein): + # retVal = db.scanDBFile(filein) + # if (retVal > 0): + # fh = open(fileout, "w") + # if verbose: + # db.debugFingerprint() + # if title: + # db.setTitle(title) + # if notes: + # db.setNotes(notes) + # db.writeFingerprint(fh) + # fh.close() + # else: + # print db.getErrorString(retVal) + # elif (filejson): + # db.importJson(filejson) + # db.debugFingerprint() + +# +def compareFingerprintDir(filein, filejson, fpdir): db = fingerprint.DBSchema() - if (filein and filejson): - db.scanDBFile(filein) - db.compareDB(filejson) - elif (filein): - retVal = db.scanDBFile(filein) - if (retVal > 0): - fh = open(fileout, "w") +# +def compareFingerprint(filein, filejson): + db = fingerprint.DBSchema() + db.scanDBFile(filein) + db.compareDB(filejson) + +# +def createFingerprint(filein, fileout, verbose, app_name, app_ver, notes): + db = fingerprint.DBSchema() + retVal = db.scanDBFile(filein) + if (retVal > 0): + fh = open(fileout, "w") + if verbose: db.debugFingerprint() - db.writeFingerprint(fh) - fh.close() - else: - print db.getErrorString(retVal) - elif (filejson): - db.importJson(filejson) - db.debugFingerprint() - + if app_name: + db.setAppName(app_name) + if app_ver: + db.setAppVer(app_ver) + if notes: + db.setNotes(notes) + db.writeFingerprint(fh) + fh.close() + else: + print db.getErrorString(retVal) +# def parseArgs(): print '***** ***** ***** *****' print ' DB Fingerprint' @@ -37,19 +71,33 @@ def parseArgs(): timestr = time.strftime('%Y-%m-%d_%H%M%S', time.localtime(time.time())) parser = argparse.ArgumentParser(description='Fingerprint a sqlite database based on its schema') parser.add_argument('-f', '--file', required=False) + parser.add_argument('-fd', '--fpdir', required=False) parser.add_argument('-j', '--json', required=False) + parser.add_argument('-an', '--app_name', required=False) + parser.add_argument('-av', '--app_version', required=False) + parser.add_argument('-n', '--notes', required=False) parser.add_argument('-v', '--verbose', action='store_true') + # parser.add_argument('-t', '--title', required=False) args = parser.parse_args() if (args.file is None) and (args.json is None): parser.print_help() exit() - if (args.file): - filename = toolbox.ToolBox.parseFilename(args.file) - fileout = filename + "_" + timestr + '.json' - return (args.file, fileout, args.json, args.verbose) + # compare a sqlite database file to all fingerprints + if (args.json and args.fpdir): + compareFingerprints(args.file, args.json, args.fpdir) + # compare a sqlite database file to a fingerprint + if (args.json): + compareFingerprint(args.file, args.json) + # create a fingerprint from the sqlite file + filename = toolbox.ToolBox.parseFilename(args.file) + fileout = filename + "_" + timestr + '.json' + createFingerprint(args.file, fileout, args.verbose, args.app_name, args.app_version, args.notes) + + # return (args.file, fileout, args.json, args.verbose, args.title, args.notes, + # args.fpdir) if __name__ == "__main__": diff --git a/libs/fingerprint.py b/libs/fingerprint.py index 0e94fdb..bd4ebdd 100644 --- a/libs/fingerprint.py +++ b/libs/fingerprint.py @@ -42,6 +42,9 @@ class DBSchema: self.tableNames = [] self.tables = {} self.tablesJson = {} + self.app_name = "" + self.app_ver = "" + self.notes = "" # self.jsonData = None return @@ -68,16 +71,17 @@ class DBSchema: return 1 + # import fingerprint from a json file def importJson(self, filejson): self.tablesJson = self.__importJsonDBSchema(filejson) - + # def compareDB(self, filejson): self.tablesJson = self.__importJsonDBSchema(filejson) result = self.__DBSchemaCompare() return result - + # import fingerprint from a json file def __importJsonDBSchema(self, filejson): tables = {} try: @@ -85,12 +89,12 @@ class DBSchema: jsonData = json.load(fh) dbmt = jsonData['db-metadata'] tb = jsonData['tables'] - keys = tb.keys() - for key in keys: - print "[[ Table <" + key + "> imported ]]" + all_tables = tb.keys() + for table_name in all_tables: + print "[[ Table <" + table_name + "> imported ]]" newTable = TableDefinition() - newTable.importTable(key, dbmt[key], tb[key]) - tables[key] = newTable + newTable.importTable(table_name, dbmt[table_name], tb[table_name]) + tables[table_name] = newTable except Exception, e: print "ERROR: problem loading json file: " + filein @@ -158,7 +162,8 @@ class DBSchema: cur = conn.cursor() return (conn, cur) - + # read a sqlite database by parsing the create table strings + # sqlmaster = "SELECT name, sql FROM sqlite_master WHERE type='table'" def __readDatabase(self): for row in self.cur.execute(self.sqlmaster): newTable = TableDefinition() @@ -190,10 +195,10 @@ class DBSchema: dmhash = {} shash = {} mhash = {} - ahash['tables'] = thash - ahash['sql-hashes'] = shash - ahash['db-metadata'] = dmhash - ahash['file-metadata'] = mhash + ahash['_file-metadata'] = mhash + ahash['db-metadata'] = dmhash + ahash['db-metadata-hashes'] = shash + ahash['tables'] = thash try: timestr = time.strftime('%Y-%m-%d_%H%M%S', time.localtime(time.time())) @@ -205,6 +210,9 @@ class DBSchema: mhash['scanner-ver'] = self.scanner_ver mhash['scanner-name'] = 'dbfp' mhash['dn-name'] = self.dbName + mhash['app-name'] = self.app_name + mhash['app-ver'] = self.app_ver + mhash['notes'] = self.notes # tables tables = self.tables.keys() @@ -215,7 +223,19 @@ class DBSchema: json.dump(ahash, filehandle, sort_keys=True, indent=4) + # + def setAppName(self, name): + self.app_name = name + # + def setAppVer(self, version): + self.app_ver = version + + # + def setNotes(self, notes): + self.notes = notes + + # def getErrorString(self, errorCode): retval = "ERROR: unknown error code: " + str(errorCode) if (errorCode == -2): @@ -247,6 +267,7 @@ class TableDefinition: self.tableName = tableName self.sqlStr = sqlStr + print "[[ TABLE: <{}> ] loading]".format(tableName) # hash the sql create string for quicker fingerprint matching try: m = hashlib.md5() @@ -262,10 +283,10 @@ class TableDefinition: for col in columns: newField = self.__parseCreateStr(col.strip()) if newField: - print "[[ TABLE: <{}> ] imported]".format(tableName) self.fields[newField['name']] = newField + del newField['name'] else: - print "[[ TABLE: <{}> ] failed]".format(tableName) + print "WARN: <{}> ] failed to parse]".format(tableName) # def importTable(self, tbName, sqlStr, fields): diff --git a/test-data/contacts2.db_2015-06-25_104808.json b/test-data/contacts2.db_2015-06-25_104808.json deleted file mode 100644 index 5650285..0000000 --- a/test-data/contacts2.db_2015-06-25_104808.json +++ /dev/null @@ -1,1208 +0,0 @@ -{ - "db-config": { - "dn-name": "test-data/contacts2.db" - }, - "db-metadata": { - "_sync_state": "CREATE TABLE _sync_state (_id INTEGER PRIMARY KEY,account_name TEXT NOT NULL,account_type TEXT NOT NULL,data TEXT,UNIQUE(account_name, account_type))", - "_sync_state_metadata": "CREATE TABLE _sync_state_metadata (version INTEGER)", - "accounts": "CREATE TABLE accounts (_id INTEGER PRIMARY KEY AUTOINCREMENT,account_name TEXT, account_type TEXT, data_set TEXT)", - "agg_exceptions": "CREATE TABLE agg_exceptions (_id INTEGER PRIMARY KEY AUTOINCREMENT,type INTEGER NOT NULL, raw_contact_id1 INTEGER REFERENCES raw_contacts(_id), raw_contact_id2 INTEGER REFERENCES raw_contacts(_id))", - "android_metadata": "CREATE TABLE android_metadata (locale TEXT)", - "calls": "CREATE TABLE calls (_id INTEGER PRIMARY KEY AUTOINCREMENT,number TEXT,presentation INTEGER NOT NULL DEFAULT 1,date INTEGER,duration INTEGER,type INTEGER,new INTEGER,name TEXT,numbertype INTEGER,numberlabel TEXT,countryiso TEXT,voicemail_uri TEXT,is_read INTEGER,geocoded_location TEXT,lookup_uri TEXT,matched_number TEXT,normalized_number TEXT,photo_id INTEGER NOT NULL DEFAULT 0,formatted_number TEXT,_data TEXT,has_content INTEGER,mime_type TEXT,source_data TEXT,source_package TEXT,state INTEGER)", - "contacts": "CREATE TABLE contacts (_id INTEGER PRIMARY KEY AUTOINCREMENT,name_raw_contact_id INTEGER REFERENCES raw_contacts(_id),photo_id INTEGER REFERENCES data(_id),photo_file_id INTEGER REFERENCES photo_files(_id),custom_ringtone TEXT,send_to_voicemail INTEGER NOT NULL DEFAULT 0,times_contacted INTEGER NOT NULL DEFAULT 0,last_time_contacted INTEGER,starred INTEGER NOT NULL DEFAULT 0,pinned INTEGER NOT NULL DEFAULT 2147483647,has_phone_number INTEGER NOT NULL DEFAULT 0,lookup TEXT,status_update_id INTEGER REFERENCES data(_id),contact_last_updated_timestamp INTEGER)", - "data": "CREATE TABLE data (_id INTEGER PRIMARY KEY AUTOINCREMENT,package_id INTEGER REFERENCES package(_id),mimetype_id INTEGER REFERENCES mimetype(_id) NOT NULL,raw_contact_id INTEGER REFERENCES raw_contacts(_id) NOT NULL,is_read_only INTEGER NOT NULL DEFAULT 0,is_primary INTEGER NOT NULL DEFAULT 0,is_super_primary INTEGER NOT NULL DEFAULT 0,data_version INTEGER NOT NULL DEFAULT 0,data1 TEXT,data2 TEXT,data3 TEXT,data4 TEXT,data5 TEXT,data6 TEXT,data7 TEXT,data8 TEXT,data9 TEXT,data10 TEXT,data11 TEXT,data12 TEXT,data13 TEXT,data14 TEXT,data15 TEXT,data_sync1 TEXT, data_sync2 TEXT, data_sync3 TEXT, data_sync4 TEXT )", - "data_usage_stat": "CREATE TABLE data_usage_stat(stat_id INTEGER PRIMARY KEY AUTOINCREMENT, data_id INTEGER NOT NULL, usage_type INTEGER NOT NULL DEFAULT 0, times_used INTEGER NOT NULL DEFAULT 0, last_time_used INTERGER NOT NULL DEFAULT 0, FOREIGN KEY(data_id) REFERENCES data(_id))", - "default_directory": "CREATE TABLE default_directory (_id INTEGER PRIMARY KEY)", - "deleted_contacts": "CREATE TABLE deleted_contacts (contact_id INTEGER PRIMARY KEY,contact_deleted_timestamp INTEGER NOT NULL default 0)", - "directories": "CREATE TABLE directories(_id INTEGER PRIMARY KEY AUTOINCREMENT,packageName TEXT NOT NULL,authority TEXT NOT NULL,typeResourceId INTEGER,typeResourceName TEXT,accountType TEXT,accountName TEXT,displayName TEXT, exportSupport INTEGER NOT NULL DEFAULT 0,shortcutSupport INTEGER NOT NULL DEFAULT 0,photoSupport INTEGER NOT NULL DEFAULT 0)", - "groups": "CREATE TABLE groups (_id INTEGER PRIMARY KEY AUTOINCREMENT,package_id INTEGER REFERENCES package(_id),account_id INTEGER REFERENCES accounts(_id),sourceid TEXT,version INTEGER NOT NULL DEFAULT 1,dirty INTEGER NOT NULL DEFAULT 0,title TEXT,title_res INTEGER,notes TEXT,system_id TEXT,deleted INTEGER NOT NULL DEFAULT 0,group_visible INTEGER NOT NULL DEFAULT 0,should_sync INTEGER NOT NULL DEFAULT 1,auto_add INTEGER NOT NULL DEFAULT 0,favorites INTEGER NOT NULL DEFAULT 0,group_is_read_only INTEGER NOT NULL DEFAULT 0,sync1 TEXT, sync2 TEXT, sync3 TEXT, sync4 TEXT )", - "mimetypes": "CREATE TABLE mimetypes (_id INTEGER PRIMARY KEY AUTOINCREMENT,mimetype TEXT NOT NULL)", - "name_lookup": "CREATE TABLE name_lookup (data_id INTEGER REFERENCES data(_id) NOT NULL,raw_contact_id INTEGER REFERENCES raw_contacts(_id) NOT NULL,normalized_name TEXT NOT NULL,name_type INTEGER NOT NULL,PRIMARY KEY (data_id, normalized_name, name_type))", - "nickname_lookup": "CREATE TABLE nickname_lookup (name TEXT,cluster TEXT)", - "packages": "CREATE TABLE packages (_id INTEGER PRIMARY KEY AUTOINCREMENT,package TEXT NOT NULL)", - "phone_lookup": "CREATE TABLE phone_lookup (data_id INTEGER REFERENCES data(_id) NOT NULL,raw_contact_id INTEGER REFERENCES raw_contacts(_id) NOT NULL,normalized_number TEXT NOT NULL,min_match TEXT NOT NULL)", - "photo_files": "CREATE TABLE photo_files (_id INTEGER PRIMARY KEY AUTOINCREMENT, height INTEGER NOT NULL, width INTEGER NOT NULL, filesize INTEGER NOT NULL)", - "properties": "CREATE TABLE properties (property_key TEXT PRIMARY KEY, property_value TEXT )", - "raw_contacts": "CREATE TABLE raw_contacts (_id INTEGER PRIMARY KEY AUTOINCREMENT,account_id INTEGER REFERENCES accounts(_id),sourceid TEXT,raw_contact_is_read_only INTEGER NOT NULL DEFAULT 0,version INTEGER NOT NULL DEFAULT 1,dirty INTEGER NOT NULL DEFAULT 0,deleted INTEGER NOT NULL DEFAULT 0,contact_id INTEGER REFERENCES contacts(_id),aggregation_mode INTEGER NOT NULL DEFAULT 0,aggregation_needed INTEGER NOT NULL DEFAULT 1,custom_ringtone TEXT,send_to_voicemail INTEGER NOT NULL DEFAULT 0,times_contacted INTEGER NOT NULL DEFAULT 0,last_time_contacted INTEGER,starred INTEGER NOT NULL DEFAULT 0,pinned INTEGER NOT NULL DEFAULT 2147483647,display_name TEXT,display_name_alt TEXT,display_name_source INTEGER NOT NULL DEFAULT 0,phonetic_name TEXT,phonetic_name_style TEXT,sort_key TEXT COLLATE PHONEBOOK,phonebook_label TEXT,phonebook_bucket INTEGER,sort_key_alt TEXT COLLATE PHONEBOOK,phonebook_label_alt TEXT,phonebook_bucket_alt INTEGER,name_verified INTEGER NOT NULL DEFAULT 0,sync1 TEXT, sync2 TEXT, sync3 TEXT, sync4 TEXT )", - "search_index": "CREATE VIRTUAL TABLE search_index USING FTS4 (contact_id INTEGER REFERENCES contacts(_id) NOT NULL,content TEXT, name TEXT, tokens TEXT)", - "search_index_content": "CREATE TABLE 'search_index_content'(docid INTEGER PRIMARY KEY, 'c0contact_id', 'c1content', 'c2name', 'c3tokens')", - "search_index_docsize": "CREATE TABLE 'search_index_docsize'(docid INTEGER PRIMARY KEY, size BLOB)", - "search_index_segdir": "CREATE TABLE 'search_index_segdir'(level INTEGER,idx INTEGER,start_block INTEGER,leaves_end_block INTEGER,end_block INTEGER,root BLOB,PRIMARY KEY(level, idx))", - "search_index_segments": "CREATE TABLE 'search_index_segments'(blockid INTEGER PRIMARY KEY, block BLOB)", - "search_index_stat": "CREATE TABLE 'search_index_stat'(id INTEGER PRIMARY KEY, value BLOB)", - "settings": "CREATE TABLE settings (account_name STRING NOT NULL,account_type STRING NOT NULL,data_set STRING,ungrouped_visible INTEGER NOT NULL DEFAULT 0,should_sync INTEGER NOT NULL DEFAULT 1)", - "sqlite_sequence": "CREATE TABLE sqlite_sequence(name,seq)", - "sqlite_stat1": "CREATE TABLE sqlite_stat1(tbl,idx,stat)", - "status_updates": "CREATE TABLE status_updates (status_update_data_id INTEGER PRIMARY KEY REFERENCES data(_id),status TEXT,status_ts INTEGER,status_res_package TEXT, status_label INTEGER, status_icon INTEGER)", - "stream_item_photos": "CREATE TABLE stream_item_photos (_id INTEGER PRIMARY KEY AUTOINCREMENT, stream_item_id INTEGER NOT NULL, sort_index INTEGER, photo_file_id INTEGER NOT NULL, stream_item_photo_sync1 TEXT, stream_item_photo_sync2 TEXT, stream_item_photo_sync3 TEXT, stream_item_photo_sync4 TEXT, FOREIGN KEY(stream_item_id) REFERENCES stream_items(_id))", - "stream_items": "CREATE TABLE stream_items (_id INTEGER PRIMARY KEY AUTOINCREMENT, raw_contact_id INTEGER NOT NULL, res_package TEXT, icon TEXT, label TEXT, text TEXT, timestamp INTEGER NOT NULL, comments TEXT, stream_item_sync1 TEXT, stream_item_sync2 TEXT, stream_item_sync3 TEXT, stream_item_sync4 TEXT, FOREIGN KEY(raw_contact_id) REFERENCES raw_contacts(_id))", - "v1_settings": "CREATE TABLE v1_settings (_id INTEGER PRIMARY KEY,_sync_account TEXT,_sync_account_type TEXT,key STRING NOT NULL,value STRING )", - "visible_contacts": "CREATE TABLE visible_contacts (_id INTEGER PRIMARY KEY)", - "voicemail_status": "CREATE TABLE voicemail_status (_id INTEGER PRIMARY KEY AUTOINCREMENT,source_package TEXT UNIQUE NOT NULL,settings_uri TEXT,voicemail_access_uri TEXT,configuration_state INTEGER,data_channel_state INTEGER,notification_channel_state INTEGER)" - }, - "file-metadata": { - "format-ver": "0.90", - "scanner-name": "dbfp", - "scanner-ver": "0.50" - }, - "tables": { - "_sync_state": { - "_id": { - "datatype": "INTEGER", - "name": "_id", - "primarykey": true - }, - "account_name": { - "datatype": "TEXT", - "name": "account_name", - "notnull": true, - "unique": true - }, - "account_type": { - "datatype": "TEXT", - "name": "account_type", - "notnull": true - }, - "data": { - "datatype": "TEXT", - "name": "data" - } - }, - "_sync_state_metadata": { - "version": { - "datatype": "INTEGER", - "name": "version" - } - }, - "accounts": { - "_id": { - "autoincrement": true, - "datatype": "INTEGER", - "name": "_id", - "primarykey": true - }, - "account_name": { - "datatype": "TEXT", - "name": "account_name" - }, - "account_type": { - "datatype": "TEXT", - "name": "account_type" - }, - "data_set": { - "datatype": "TEXT", - "name": "data_set" - } - }, - "agg_exceptions": { - "_id": { - "autoincrement": true, - "datatype": "INTEGER", - "name": "_id", - "primarykey": true - }, - "raw_contact_id1": { - "datatype": "INTEGER", - "name": "raw_contact_id1" - }, - "raw_contact_id2": { - "datatype": "INTEGER", - "name": "raw_contact_id2" - }, - "type": { - "datatype": "INTEGER", - "name": "type", - "notnull": true - } - }, - "android_metadata": { - "locale": { - "datatype": "TEXT", - "name": "locale" - } - }, - "calls": { - "_data": { - "datatype": "TEXT", - "name": "_data" - }, - "_id": { - "autoincrement": true, - "datatype": "INTEGER", - "name": "_id", - "primarykey": true - }, - "countryiso": { - "datatype": "TEXT", - "name": "countryiso" - }, - "date": { - "datatype": "INTEGER", - "name": "date" - }, - "duration": { - "datatype": "INTEGER", - "name": "duration" - }, - "formatted_number": { - "datatype": "TEXT", - "name": "formatted_number" - }, - "geocoded_location": { - "datatype": "TEXT", - "name": "geocoded_location" - }, - "has_content": { - "datatype": "INTEGER", - "name": "has_content" - }, - "is_read": { - "datatype": "INTEGER", - "name": "is_read" - }, - "lookup_uri": { - "datatype": "TEXT", - "name": "lookup_uri" - }, - "matched_number": { - "datatype": "TEXT", - "name": "matched_number" - }, - "mime_type": { - "datatype": "TEXT", - "name": "mime_type" - }, - "name": { - "datatype": "TEXT", - "name": "name" - }, - "new": { - "datatype": "INTEGER", - "name": "new" - }, - "normalized_number": { - "datatype": "TEXT", - "name": "normalized_number" - }, - "number": { - "datatype": "TEXT", - "name": "number" - }, - "numberlabel": { - "datatype": "TEXT", - "name": "numberlabel" - }, - "numbertype": { - "datatype": "INTEGER", - "name": "numbertype" - }, - "photo_id": { - "datatype": "INTEGER", - "default": "0", - "name": "photo_id", - "notnull": true - }, - "presentation": { - "datatype": "INTEGER", - "default": "1", - "name": "presentation", - "notnull": true - }, - "source_data": { - "datatype": "TEXT", - "name": "source_data" - }, - "source_package": { - "datatype": "TEXT", - "name": "source_package" - }, - "state": { - "datatype": "INTEGER", - "name": "state" - }, - "type": { - "datatype": "INTEGER", - "name": "type" - }, - "voicemail_uri": { - "datatype": "TEXT", - "name": "voicemail_uri" - } - }, - "contacts": { - "_id": { - "autoincrement": true, - "datatype": "INTEGER", - "name": "_id", - "primarykey": true - }, - "contact_last_updated_timestamp": { - "datatype": "INTEGER", - "name": "contact_last_updated_timestamp" - }, - "custom_ringtone": { - "datatype": "TEXT", - "name": "custom_ringtone" - }, - "has_phone_number": { - "datatype": "INTEGER", - "default": "0", - "name": "has_phone_number", - "notnull": true - }, - "last_time_contacted": { - "datatype": "INTEGER", - "name": "last_time_contacted" - }, - "lookup": { - "datatype": "TEXT", - "name": "lookup" - }, - "name_raw_contact_id": { - "datatype": "INTEGER", - "name": "name_raw_contact_id" - }, - "photo_file_id": { - "datatype": "INTEGER", - "name": "photo_file_id" - }, - "photo_id": { - "datatype": "INTEGER", - "name": "photo_id" - }, - "pinned": { - "datatype": "INTEGER", - "default": "2147483647", - "name": "pinned", - "notnull": true - }, - "send_to_voicemail": { - "datatype": "INTEGER", - "default": "0", - "name": "send_to_voicemail", - "notnull": true - }, - "starred": { - "datatype": "INTEGER", - "default": "0", - "name": "starred", - "notnull": true - }, - "status_update_id": { - "datatype": "INTEGER", - "name": "status_update_id" - }, - "times_contacted": { - "datatype": "INTEGER", - "default": "0", - "name": "times_contacted", - "notnull": true - } - }, - "data": { - "_id": { - "autoincrement": true, - "datatype": "INTEGER", - "name": "_id", - "primarykey": true - }, - "data1": { - "datatype": "TEXT", - "name": "data1" - }, - "data10": { - "datatype": "TEXT", - "name": "data10" - }, - "data11": { - "datatype": "TEXT", - "name": "data11" - }, - "data12": { - "datatype": "TEXT", - "name": "data12" - }, - "data13": { - "datatype": "TEXT", - "name": "data13" - }, - "data14": { - "datatype": "TEXT", - "name": "data14" - }, - "data15": { - "datatype": "TEXT", - "name": "data15" - }, - "data2": { - "datatype": "TEXT", - "name": "data2" - }, - "data3": { - "datatype": "TEXT", - "name": "data3" - }, - "data4": { - "datatype": "TEXT", - "name": "data4" - }, - "data5": { - "datatype": "TEXT", - "name": "data5" - }, - "data6": { - "datatype": "TEXT", - "name": "data6" - }, - "data7": { - "datatype": "TEXT", - "name": "data7" - }, - "data8": { - "datatype": "TEXT", - "name": "data8" - }, - "data9": { - "datatype": "TEXT", - "name": "data9" - }, - "data_sync1": { - "datatype": "TEXT", - "name": "data_sync1" - }, - "data_sync2": { - "datatype": "TEXT", - "name": "data_sync2" - }, - "data_sync3": { - "datatype": "TEXT", - "name": "data_sync3" - }, - "data_sync4": { - "datatype": "TEXT", - "name": "data_sync4" - }, - "data_version": { - "datatype": "INTEGER", - "default": "0", - "name": "data_version", - "notnull": true - }, - "is_primary": { - "datatype": "INTEGER", - "default": "0", - "name": "is_primary", - "notnull": true - }, - "is_read_only": { - "datatype": "INTEGER", - "default": "0", - "name": "is_read_only", - "notnull": true - }, - "is_super_primary": { - "datatype": "INTEGER", - "default": "0", - "name": "is_super_primary", - "notnull": true - }, - "mimetype_id": { - "datatype": "INTEGER", - "name": "mimetype_id" - }, - "package_id": { - "datatype": "INTEGER", - "name": "package_id" - }, - "raw_contact_id": { - "datatype": "INTEGER", - "name": "raw_contact_id" - } - }, - "data_usage_stat": { - "FOREIGN": { - "datatype": "KEY", - "name": "FOREIGN" - }, - "data_id": { - "datatype": "INTEGER", - "name": "data_id", - "notnull": true - }, - "last_time_used": { - "datatype": "INTERGER", - "default": "0", - "name": "last_time_used", - "notnull": true - }, - "stat_id": { - "autoincrement": true, - "datatype": "INTEGER", - "name": "stat_id", - "primarykey": true - }, - "times_used": { - "datatype": "INTEGER", - "default": "0", - "name": "times_used", - "notnull": true - }, - "usage_type": { - "datatype": "INTEGER", - "default": "0", - "name": "usage_type", - "notnull": true - } - }, - "default_directory": { - "_id": { - "datatype": "INTEGER", - "name": "_id", - "primarykey": true - } - }, - "deleted_contacts": { - "contact_deleted_timestamp": { - "datatype": "INTEGER", - "name": "contact_deleted_timestamp", - "notnull": true - }, - "contact_id": { - "datatype": "INTEGER", - "name": "contact_id", - "primarykey": true - } - }, - "directories": { - "_id": { - "autoincrement": true, - "datatype": "INTEGER", - "name": "_id", - "primarykey": true - }, - "accountName": { - "datatype": "TEXT", - "name": "accountName" - }, - "accountType": { - "datatype": "TEXT", - "name": "accountType" - }, - "authority": { - "datatype": "TEXT", - "name": "authority", - "notnull": true - }, - "displayName": { - "datatype": "TEXT", - "name": "displayName" - }, - "exportSupport": { - "datatype": "INTEGER", - "default": "0", - "name": "exportSupport", - "notnull": true - }, - "packageName": { - "datatype": "TEXT", - "name": "packageName", - "notnull": true - }, - "photoSupport": { - "datatype": "INTEGER", - "default": "0", - "name": "photoSupport", - "notnull": true - }, - "shortcutSupport": { - "datatype": "INTEGER", - "default": "0", - "name": "shortcutSupport", - "notnull": true - }, - "typeResourceId": { - "datatype": "INTEGER", - "name": "typeResourceId" - }, - "typeResourceName": { - "datatype": "TEXT", - "name": "typeResourceName" - } - }, - "groups": { - "_id": { - "autoincrement": true, - "datatype": "INTEGER", - "name": "_id", - "primarykey": true - }, - "account_id": { - "datatype": "INTEGER", - "name": "account_id" - }, - "auto_add": { - "datatype": "INTEGER", - "default": "0", - "name": "auto_add", - "notnull": true - }, - "deleted": { - "datatype": "INTEGER", - "default": "0", - "name": "deleted", - "notnull": true - }, - "dirty": { - "datatype": "INTEGER", - "default": "0", - "name": "dirty", - "notnull": true - }, - "favorites": { - "datatype": "INTEGER", - "default": "0", - "name": "favorites", - "notnull": true - }, - "group_is_read_only": { - "datatype": "INTEGER", - "default": "0", - "name": "group_is_read_only", - "notnull": true - }, - "group_visible": { - "datatype": "INTEGER", - "default": "0", - "name": "group_visible", - "notnull": true - }, - "notes": { - "datatype": "TEXT", - "name": "notes" - }, - "package_id": { - "datatype": "INTEGER", - "name": "package_id" - }, - "should_sync": { - "datatype": "INTEGER", - "default": "1", - "name": "should_sync", - "notnull": true - }, - "sourceid": { - "datatype": "TEXT", - "name": "sourceid" - }, - "sync1": { - "datatype": "TEXT", - "name": "sync1" - }, - "sync2": { - "datatype": "TEXT", - "name": "sync2" - }, - "sync3": { - "datatype": "TEXT", - "name": "sync3" - }, - "sync4": { - "datatype": "TEXT", - "name": "sync4" - }, - "system_id": { - "datatype": "TEXT", - "name": "system_id" - }, - "title": { - "datatype": "TEXT", - "name": "title" - }, - "title_res": { - "datatype": "INTEGER", - "name": "title_res" - }, - "version": { - "datatype": "INTEGER", - "default": "1", - "name": "version", - "notnull": true - } - }, - "mimetypes": { - "_id": { - "autoincrement": true, - "datatype": "INTEGER", - "name": "_id", - "primarykey": true - }, - "mimetype": { - "datatype": "TEXT", - "name": "mimetype", - "notnull": true - } - }, - "name_lookup": { - "data_id": { - "datatype": "INTEGER", - "name": "data_id", - "primarykey": true - }, - "name_type": { - "datatype": "INTEGER", - "name": "name_type", - "notnull": true - }, - "normalized_name": { - "datatype": "TEXT", - "name": "normalized_name", - "notnull": true - }, - "raw_contact_id": { - "datatype": "INTEGER", - "name": "raw_contact_id" - } - }, - "nickname_lookup": { - "cluster": { - "datatype": "TEXT", - "name": "cluster" - }, - "name": { - "datatype": "TEXT", - "name": "name" - } - }, - "packages": { - "_id": { - "autoincrement": true, - "datatype": "INTEGER", - "name": "_id", - "primarykey": true - }, - "package": { - "datatype": "TEXT", - "name": "package", - "notnull": true - } - }, - "phone_lookup": { - "data_id": { - "datatype": "INTEGER", - "name": "data_id" - }, - "min_match": { - "datatype": "TEXT", - "name": "min_match", - "notnull": true - }, - "normalized_number": { - "datatype": "TEXT", - "name": "normalized_number", - "notnull": true - }, - "raw_contact_id": { - "datatype": "INTEGER", - "name": "raw_contact_id" - } - }, - "photo_files": { - "_id": { - "autoincrement": true, - "datatype": "INTEGER", - "name": "_id", - "primarykey": true - }, - "filesize": { - "datatype": "INTEGER", - "name": "filesize", - "notnull": true - }, - "height": { - "datatype": "INTEGER", - "name": "height", - "notnull": true - }, - "width": { - "datatype": "INTEGER", - "name": "width", - "notnull": true - } - }, - "properties": { - "property_key": { - "datatype": "TEXT", - "name": "property_key", - "primarykey": true - }, - "property_value": { - "datatype": "TEXT", - "name": "property_value" - } - }, - "raw_contacts": { - "_id": { - "autoincrement": true, - "datatype": "INTEGER", - "name": "_id", - "primarykey": true - }, - "account_id": { - "datatype": "INTEGER", - "name": "account_id" - }, - "aggregation_mode": { - "datatype": "INTEGER", - "default": "0", - "name": "aggregation_mode", - "notnull": true - }, - "aggregation_needed": { - "datatype": "INTEGER", - "default": "1", - "name": "aggregation_needed", - "notnull": true - }, - "contact_id": { - "datatype": "INTEGER", - "name": "contact_id" - }, - "custom_ringtone": { - "datatype": "TEXT", - "name": "custom_ringtone" - }, - "deleted": { - "datatype": "INTEGER", - "default": "0", - "name": "deleted", - "notnull": true - }, - "dirty": { - "datatype": "INTEGER", - "default": "0", - "name": "dirty", - "notnull": true - }, - "display_name": { - "datatype": "TEXT", - "name": "display_name" - }, - "display_name_alt": { - "datatype": "TEXT", - "name": "display_name_alt" - }, - "display_name_source": { - "datatype": "INTEGER", - "default": "0", - "name": "display_name_source", - "notnull": true - }, - "last_time_contacted": { - "datatype": "INTEGER", - "name": "last_time_contacted" - }, - "name_verified": { - "datatype": "INTEGER", - "default": "0", - "name": "name_verified", - "notnull": true - }, - "phonebook_bucket": { - "datatype": "INTEGER", - "name": "phonebook_bucket" - }, - "phonebook_bucket_alt": { - "datatype": "INTEGER", - "name": "phonebook_bucket_alt" - }, - "phonebook_label": { - "datatype": "TEXT", - "name": "phonebook_label" - }, - "phonebook_label_alt": { - "datatype": "TEXT", - "name": "phonebook_label_alt" - }, - "phonetic_name": { - "datatype": "TEXT", - "name": "phonetic_name" - }, - "phonetic_name_style": { - "datatype": "TEXT", - "name": "phonetic_name_style" - }, - "pinned": { - "datatype": "INTEGER", - "default": "2147483647", - "name": "pinned", - "notnull": true - }, - "raw_contact_is_read_only": { - "datatype": "INTEGER", - "default": "0", - "name": "raw_contact_is_read_only", - "notnull": true - }, - "send_to_voicemail": { - "datatype": "INTEGER", - "default": "0", - "name": "send_to_voicemail", - "notnull": true - }, - "sort_key": { - "datatype": "TEXT", - "name": "sort_key" - }, - "sort_key_alt": { - "datatype": "TEXT", - "name": "sort_key_alt" - }, - "sourceid": { - "datatype": "TEXT", - "name": "sourceid" - }, - "starred": { - "datatype": "INTEGER", - "default": "0", - "name": "starred", - "notnull": true - }, - "sync1": { - "datatype": "TEXT", - "name": "sync1" - }, - "sync2": { - "datatype": "TEXT", - "name": "sync2" - }, - "sync3": { - "datatype": "TEXT", - "name": "sync3" - }, - "sync4": { - "datatype": "TEXT", - "name": "sync4" - }, - "times_contacted": { - "datatype": "INTEGER", - "default": "0", - "name": "times_contacted", - "notnull": true - }, - "version": { - "datatype": "INTEGER", - "default": "1", - "name": "version", - "notnull": true - } - }, - "search_index": { - "contact_id": { - "datatype": "INTEGER", - "name": "contact_id" - }, - "content": { - "datatype": "TEXT", - "name": "content" - }, - "name": { - "datatype": "TEXT", - "name": "name" - }, - "tokens": { - "datatype": "TEXT", - "name": "tokens" - } - }, - "search_index_content": { - "docid": { - "datatype": "INTEGER", - "name": "docid", - "primarykey": true - } - }, - "search_index_docsize": { - "docid": { - "datatype": "INTEGER", - "name": "docid", - "primarykey": true - }, - "size": { - "datatype": "BLOB", - "name": "size" - } - }, - "search_index_segdir": { - "PRIMARY": { - "datatype": "KEY", - "name": "PRIMARY" - }, - "end_block": { - "datatype": "INTEGER", - "name": "end_block" - }, - "idx": { - "datatype": "INTEGER", - "name": "idx" - }, - "leaves_end_block": { - "datatype": "INTEGER", - "name": "leaves_end_block" - }, - "level": { - "datatype": "INTEGER", - "name": "level" - }, - "root": { - "datatype": "BLOB", - "name": "root" - }, - "start_block": { - "datatype": "INTEGER", - "name": "start_block" - } - }, - "search_index_segments": { - "block": { - "datatype": "BLOB", - "name": "block" - }, - "blockid": { - "datatype": "INTEGER", - "name": "blockid", - "primarykey": true - } - }, - "search_index_stat": { - "id": { - "datatype": "INTEGER", - "name": "id", - "primarykey": true - }, - "value": { - "datatype": "BLOB", - "name": "value" - } - }, - "settings": { - "account_name": { - "datatype": "STRING", - "name": "account_name", - "notnull": true - }, - "account_type": { - "datatype": "STRING", - "name": "account_type", - "notnull": true - }, - "data_set": { - "datatype": "STRING", - "name": "data_set" - }, - "should_sync": { - "datatype": "INTEGER", - "default": "1", - "name": "should_sync", - "notnull": true - }, - "ungrouped_visible": { - "datatype": "INTEGER", - "default": "0", - "name": "ungrouped_visible", - "notnull": true - } - }, - "sqlite_sequence": {}, - "sqlite_stat1": {}, - "status_updates": { - "status": { - "datatype": "TEXT", - "name": "status" - }, - "status_icon": { - "datatype": "INTEGER", - "name": "status_icon" - }, - "status_label": { - "datatype": "INTEGER", - "name": "status_label" - }, - "status_res_package": { - "datatype": "TEXT", - "name": "status_res_package" - }, - "status_ts": { - "datatype": "INTEGER", - "name": "status_ts" - }, - "status_update_data_id": { - "datatype": "INTEGER", - "name": "status_update_data_id", - "primarykey": true - } - }, - "stream_item_photos": { - "FOREIGN": { - "datatype": "KEY", - "name": "FOREIGN" - }, - "_id": { - "autoincrement": true, - "datatype": "INTEGER", - "name": "_id", - "primarykey": true - }, - "photo_file_id": { - "datatype": "INTEGER", - "name": "photo_file_id", - "notnull": true - }, - "sort_index": { - "datatype": "INTEGER", - "name": "sort_index" - }, - "stream_item_id": { - "datatype": "INTEGER", - "name": "stream_item_id", - "notnull": true - }, - "stream_item_photo_sync1": { - "datatype": "TEXT", - "name": "stream_item_photo_sync1" - }, - "stream_item_photo_sync2": { - "datatype": "TEXT", - "name": "stream_item_photo_sync2" - }, - "stream_item_photo_sync3": { - "datatype": "TEXT", - "name": "stream_item_photo_sync3" - }, - "stream_item_photo_sync4": { - "datatype": "TEXT", - "name": "stream_item_photo_sync4" - } - }, - "stream_items": { - "FOREIGN": { - "datatype": "KEY", - "name": "FOREIGN" - }, - "_id": { - "autoincrement": true, - "datatype": "INTEGER", - "name": "_id", - "primarykey": true - }, - "comments": { - "datatype": "TEXT", - "name": "comments" - }, - "icon": { - "datatype": "TEXT", - "name": "icon" - }, - "label": { - "datatype": "TEXT", - "name": "label" - }, - "raw_contact_id": { - "datatype": "INTEGER", - "name": "raw_contact_id", - "notnull": true - }, - "res_package": { - "datatype": "TEXT", - "name": "res_package" - }, - "stream_item_sync1": { - "datatype": "TEXT", - "name": "stream_item_sync1" - }, - "stream_item_sync2": { - "datatype": "TEXT", - "name": "stream_item_sync2" - }, - "stream_item_sync3": { - "datatype": "TEXT", - "name": "stream_item_sync3" - }, - "stream_item_sync4": { - "datatype": "TEXT", - "name": "stream_item_sync4" - }, - "text": { - "datatype": "TEXT", - "name": "text" - }, - "timestamp": { - "datatype": "INTEGER", - "name": "timestamp", - "notnull": true - } - }, - "v1_settings": { - "_id": { - "datatype": "INTEGER", - "name": "_id", - "primarykey": true - }, - "_sync_account": { - "datatype": "TEXT", - "name": "_sync_account" - }, - "_sync_account_type": { - "datatype": "TEXT", - "name": "_sync_account_type" - }, - "key": { - "datatype": "STRING", - "name": "key", - "notnull": true - }, - "value": { - "datatype": "STRING", - "name": "value" - } - }, - "visible_contacts": { - "_id": { - "datatype": "INTEGER", - "name": "_id", - "primarykey": true - } - }, - "voicemail_status": { - "_id": { - "autoincrement": true, - "datatype": "INTEGER", - "name": "_id", - "primarykey": true - }, - "configuration_state": { - "datatype": "INTEGER", - "name": "configuration_state" - }, - "data_channel_state": { - "datatype": "INTEGER", - "name": "data_channel_state" - }, - "notification_channel_state": { - "datatype": "INTEGER", - "name": "notification_channel_state" - }, - "settings_uri": { - "datatype": "TEXT", - "name": "settings_uri" - }, - "source_package": { - "datatype": "TEXT", - "name": "source_package" - }, - "voicemail_access_uri": { - "datatype": "TEXT", - "name": "voicemail_access_uri" - } - } - } -} \ No newline at end of file diff --git a/test-data/profilecache.db_2015-06-25_111026.json b/test-data/profilecache.db_2015-06-25_111026.json deleted file mode 100644 index 2ff76b0..0000000 --- a/test-data/profilecache.db_2015-06-25_111026.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "db-config": { - "dn-name": "test-data/profilecache.db" - }, - "db-metadata": { - "profiles": "CREATE TABLE `profiles` (`key` TEXT PRIMARY KEY, `value` TEXT)", - "profiletable": "CREATE TABLE `profiletable` (`itemUserId` TEXT PRIMARY KEY, `itemFirstName` TEXT NOT NULL, `itemLastName` TEXT NOT NULL, `itemBirthday` TEXT NOT NULL, `itemGender` TEXT NOT NULL, `itemStatus` TEXT NOT NULL, `itemLongitude` DOUBLE NOT NULL, `itemLatitude` DOUBLE NOT NULL, `itemDistance` DOUBLE NOT NULL, `itemAvatarUrl` TEXT NOT NULL, `itemThumbnailUrl` TEXT NOT NULL, `itemVideoUrl` TEXT NOT NULL, `itemVideoThumbnailUrl` TEXT NOT NULL, `itemBackgroundUrl` TEXT NOT NULL, `itemPrivacy` INTEGER NOT NULL, `itemIsLocationOn` INTEGER NOT NULL, `itemIsFriend` INTEGER NOT NULL, `itemIsBlocked` INTEGER NOT NULL, `itemFriendRequestType` TEXT NOT NULL, `itemReverseRelationships` TEXT NOT NULL, `itemFeedCount` INTEGER NOT NULL, `itemRefereneCount` INTEGER NOT NULL, `itemLevel1DataSyncTime` BIGINT NOT NULL, `itemLevel2DataSyncTime` BIGINT NOT NULL, `itemLevel3DataSyncTime` BIGINT NOT NULL, `itemLevel4DataSyncTime` BIGINT NOT NULL, `itemLevel5DataSyncTime` BIGINT NOT NULL, `itemLastLocalAccessTime` BIGINT NOT NULL, `itemLastServerModifyTime` BIGINT NOT NULL, `itemLastLocationServerModifyTime` BIGINT NOT NULL, `itemLastStatusServerModifyTime` BIGINT NOT NULL, `itemFriendRequestId` TEXT NOT NULL, `itemFriendRequestMessage` TEXT NOT NULL, `itemFriendRequestTime` BIGINT NOT NULL, `itemIsNewFriendRequest` INTEGER NOT NULL, `itemFriendRequestTCMessageId` INTEGER NOT NULL)" - }, - "file-metadata": { - "format-ver": "0.90", - "scanner-name": "dbfp", - "scanner-ver": "0.50" - }, - "tables": { - "profiles": { - "key": { - "datatype": "TEXT", - "name": "key", - "primarykey": true - }, - "value": { - "datatype": "TEXT", - "name": "value" - } - }, - "profiletable": { - "itemAvatarUrl": { - "datatype": "TEXT", - "name": "itemAvatarUrl", - "notnull": true - }, - "itemBackgroundUrl": { - "datatype": "TEXT", - "name": "itemBackgroundUrl", - "notnull": true - }, - "itemBirthday": { - "datatype": "TEXT", - "name": "itemBirthday", - "notnull": true - }, - "itemDistance": { - "datatype": "DOUBLE", - "name": "itemDistance", - "notnull": true - }, - "itemFeedCount": { - "datatype": "INTEGER", - "name": "itemFeedCount", - "notnull": true - }, - "itemFirstName": { - "datatype": "TEXT", - "name": "itemFirstName", - "notnull": true - }, - "itemFriendRequestId": { - "datatype": "TEXT", - "name": "itemFriendRequestId", - "notnull": true - }, - "itemFriendRequestMessage": { - "datatype": "TEXT", - "name": "itemFriendRequestMessage", - "notnull": true - }, - "itemFriendRequestTCMessageId": { - "datatype": "INTEGER", - "name": "itemFriendRequestTCMessageId", - "notnull": true - }, - "itemFriendRequestTime": { - "datatype": "BIGINT", - "name": "itemFriendRequestTime", - "notnull": true - }, - "itemFriendRequestType": { - "datatype": "TEXT", - "name": "itemFriendRequestType", - "notnull": true - }, - "itemGender": { - "datatype": "TEXT", - "name": "itemGender", - "notnull": true - }, - "itemIsBlocked": { - "datatype": "INTEGER", - "name": "itemIsBlocked", - "notnull": true - }, - "itemIsFriend": { - "datatype": "INTEGER", - "name": "itemIsFriend", - "notnull": true - }, - "itemIsLocationOn": { - "datatype": "INTEGER", - "name": "itemIsLocationOn", - "notnull": true - }, - "itemIsNewFriendRequest": { - "datatype": "INTEGER", - "name": "itemIsNewFriendRequest", - "notnull": true - }, - "itemLastLocalAccessTime": { - "datatype": "BIGINT", - "name": "itemLastLocalAccessTime", - "notnull": true - }, - "itemLastLocationServerModifyTime": { - "datatype": "BIGINT", - "name": "itemLastLocationServerModifyTime", - "notnull": true - }, - "itemLastName": { - "datatype": "TEXT", - "name": "itemLastName", - "notnull": true - }, - "itemLastServerModifyTime": { - "datatype": "BIGINT", - "name": "itemLastServerModifyTime", - "notnull": true - }, - "itemLastStatusServerModifyTime": { - "datatype": "BIGINT", - "name": "itemLastStatusServerModifyTime", - "notnull": true - }, - "itemLatitude": { - "datatype": "DOUBLE", - "name": "itemLatitude", - "notnull": true - }, - "itemLevel1DataSyncTime": { - "datatype": "BIGINT", - "name": "itemLevel1DataSyncTime", - "notnull": true - }, - "itemLevel2DataSyncTime": { - "datatype": "BIGINT", - "name": "itemLevel2DataSyncTime", - "notnull": true - }, - "itemLevel3DataSyncTime": { - "datatype": "BIGINT", - "name": "itemLevel3DataSyncTime", - "notnull": true - }, - "itemLevel4DataSyncTime": { - "datatype": "BIGINT", - "name": "itemLevel4DataSyncTime", - "notnull": true - }, - "itemLevel5DataSyncTime": { - "datatype": "BIGINT", - "name": "itemLevel5DataSyncTime", - "notnull": true - }, - "itemLongitude": { - "datatype": "DOUBLE", - "name": "itemLongitude", - "notnull": true - }, - "itemPrivacy": { - "datatype": "INTEGER", - "name": "itemPrivacy", - "notnull": true - }, - "itemRefereneCount": { - "datatype": "INTEGER", - "name": "itemRefereneCount", - "notnull": true - }, - "itemReverseRelationships": { - "datatype": "TEXT", - "name": "itemReverseRelationships", - "notnull": true - }, - "itemStatus": { - "datatype": "TEXT", - "name": "itemStatus", - "notnull": true - }, - "itemThumbnailUrl": { - "datatype": "TEXT", - "name": "itemThumbnailUrl", - "notnull": true - }, - "itemUserId": { - "datatype": "TEXT", - "name": "itemUserId", - "primarykey": true - }, - "itemVideoThumbnailUrl": { - "datatype": "TEXT", - "name": "itemVideoThumbnailUrl", - "notnull": true - }, - "itemVideoUrl": { - "datatype": "TEXT", - "name": "itemVideoUrl", - "notnull": true - } - } - } -} \ No newline at end of file diff --git a/test-data/tc.db_2015-06-25_111214.json b/test-data/tc.db_2015-06-25_111214.json deleted file mode 100644 index 64768bc..0000000 --- a/test-data/tc.db_2015-06-25_111214.json +++ /dev/null @@ -1,164 +0,0 @@ -{ - "db-config": { - "dn-name": "test-data/tc.db" - }, - "db-metadata": { - "conversations": "CREATE TABLE `conversations` (`conv_id` TEXT PRIMARY KEY, `payload` BLOB, `last_msg_id` INTEGER, `unread_count` INTEGER, `last_read_sent_msg_id` INTEGER, `conv_type` INTEGER DEFAULT 0, `conv_del_status` INTEGER DEFAULT 0, `deleting_ts` BIGINT DEFAULT 0)", - "messages": "CREATE TABLE `messages` (`msg_id` INTEGER PRIMARY KEY, `conv_id` TEXT, `type` INTEGER, `media_id` TEXT, `share_id` TEXT, `create_time` BIGINT, `send_time` BIGINT, `direction` INTEGER, `status` INTEGER, `payload` BLOB, `del_status` INTEGER)", - "profiles": "CREATE TABLE `profiles` (`key` TEXT PRIMARY KEY, `value` TEXT)", - "receipts": "CREATE TABLE `receipts` (`conv_id` TEXT PRIMARY KEY, `msg_id` INTEGER, `sender_msg_id` INTEGER, `type` INTEGER, `create_time` BIGINT, `status` INTEGER, `payload` BLOB)", - "sms": "CREATE TABLE `sms` (`msg_id` INTEGER PRIMARY KEY, `phonenumber` TEXT, `text` TEXT)" - }, - "file-metadata": { - "format-ver": "0.90", - "scanner-name": "dbfp", - "scanner-ver": "0.50" - }, - "tables": { - "conversations": { - "conv_del_status": { - "datatype": "INTEGER", - "default": "0", - "name": "conv_del_status", - "notnull": true - }, - "conv_id": { - "datatype": "TEXT", - "name": "conv_id", - "primarykey": true - }, - "conv_type": { - "datatype": "INTEGER", - "default": "0", - "name": "conv_type", - "notnull": true - }, - "deleting_ts": { - "datatype": "BIGINT", - "default": "0", - "name": "deleting_ts", - "notnull": true - }, - "last_msg_id": { - "datatype": "INTEGER", - "name": "last_msg_id" - }, - "last_read_sent_msg_id": { - "datatype": "INTEGER", - "name": "last_read_sent_msg_id" - }, - "payload": { - "datatype": "BLOB", - "name": "payload" - }, - "unread_count": { - "datatype": "INTEGER", - "name": "unread_count" - } - }, - "messages": { - "conv_id": { - "datatype": "TEXT", - "name": "conv_id" - }, - "create_time": { - "datatype": "BIGINT", - "name": "create_time" - }, - "del_status": { - "datatype": "INTEGER", - "name": "del_status" - }, - "direction": { - "datatype": "INTEGER", - "name": "direction" - }, - "media_id": { - "datatype": "TEXT", - "name": "media_id" - }, - "msg_id": { - "datatype": "INTEGER", - "name": "msg_id", - "primarykey": true - }, - "payload": { - "datatype": "BLOB", - "name": "payload" - }, - "send_time": { - "datatype": "BIGINT", - "name": "send_time" - }, - "share_id": { - "datatype": "TEXT", - "name": "share_id" - }, - "status": { - "datatype": "INTEGER", - "name": "status" - }, - "type": { - "datatype": "INTEGER", - "name": "type" - } - }, - "profiles": { - "key": { - "datatype": "TEXT", - "name": "key", - "primarykey": true - }, - "value": { - "datatype": "TEXT", - "name": "value" - } - }, - "receipts": { - "conv_id": { - "datatype": "TEXT", - "name": "conv_id", - "primarykey": true - }, - "create_time": { - "datatype": "BIGINT", - "name": "create_time" - }, - "msg_id": { - "datatype": "INTEGER", - "name": "msg_id" - }, - "payload": { - "datatype": "BLOB", - "name": "payload" - }, - "sender_msg_id": { - "datatype": "INTEGER", - "name": "sender_msg_id" - }, - "status": { - "datatype": "INTEGER", - "name": "status" - }, - "type": { - "datatype": "INTEGER", - "name": "type" - } - }, - "sms": { - "msg_id": { - "datatype": "INTEGER", - "name": "msg_id", - "primarykey": true - }, - "phonenumber": { - "datatype": "TEXT", - "name": "phonenumber" - }, - "text": { - "datatype": "TEXT", - "name": "text" - } - } - } -} \ No newline at end of file diff --git a/test-data/tc.db_2015-06-25_111214_UPDATED.json b/test-data/tc.db_2015-06-25_111214_UPDATED.json deleted file mode 100644 index 26c51d5..0000000 --- a/test-data/tc.db_2015-06-25_111214_UPDATED.json +++ /dev/null @@ -1,171 +0,0 @@ -{ - "db-metadata": { - "conversations": "CREATE TABLE `conversations` (`conv_id` TEXT PRIMARY KEY, `payload` BLOB, `last_msg_id` INTEGER, `unread_count` INTEGER, `last_read_sent_msg_id` INTEGER, `conv_type` INTEGER DEFAULT 0, `conv_del_status` INTEGER DEFAULT 0, `deleting_ts` BIGINT DEFAULT 0)", - "messages": "CREATE TABLE `messages` (`msg_id` INTEGER PRIMARY KEY, `conv_id` TEXT, `type` INTEGER, `media_id` TEXT, `share_id` TEXT, `create_time` BIGINT, `send_time` BIGINT, `direction` INTEGER, `status` INTEGER, `payload` BLOB, `del_status` INTEGER)", - "profiles": "CREATE TABLE `profiles` (`key` TEXT PRIMARY KEY, `value` TEXT)", - "receipts": "CREATE TABLE `receipts` (`conv_id` TEXT PRIMARY KEY, `msg_id` INTEGER, `sender_msg_id` INTEGER, `type` INTEGER, `create_time` BIGINT, `status` INTEGER, `payload` BLOB)", - "sms": "CREATE TABLE `sms` (`msg_id` INTEGER PRIMARY KEY, `phonenumber` TEXT, `text` TEXT)" - }, - "file-metadata": { - "dn-name": "test-data/tc.db", - "scan-date": "2015-08-06_105953", - "format-ver": "0.90", - "scanner-name": "dbfp", - "scanner-ver": "0.50" - }, - "fingerprint-hashes": { - "--file--hash--": "2fb4d49311b816b07863a67fbcc96557", - "conversations": "d6b2bbcc608a312dc76612d33332bfb5", - "messages": "d6e27f167c6e5f5f00ac97a676628cda", - "profiles": "6b4029da986d475d72cd2fe805531814", - "receipts": "494a13c1ddb965d16c225f64b77f5f27", - "sms": "9a6169c8979ea50d8fd024c6df169e0e" - }, - "tables": { - "conversations": { - "conv_del_status": { - "datatype": "INTEGER", - "default": "0", - "name": "conv_del_status", - "notnull": true - }, - "conv_id": { - "datatype": "TEXT", - "name": "conv_id", - "primarykey": true - }, - "conv_type": { - "datatype": "INTEGER", - "default": "0", - "name": "conv_type", - "notnull": true - }, - "deleting_ts": { - "datatype": "BIGINT", - "default": "0", - "name": "deleting_ts", - "notnull": true - }, - "last_msg_id": { - "datatype": "INTEGER", - "name": "last_msg_id" - }, - "last_read_sent_msg_id": { - "datatype": "INTEGER", - "name": "last_read_sent_msg_id" - }, - "payload": { - "datatype": "BLOB", - "name": "payload" - }, - "unread_count": { - "datatype": "INTEGER", - "name": "unread_count" - } - }, - "messages": { - "conv_id": { - "datatype": "TEXT", - "name": "conv_id" - }, - "create_time": { - "datatype": "BIGINT", - "name": "create_time" - }, - "del_status": { - "datatype": "INTEGER", - "name": "del_status" - }, - "direction": { - "datatype": "INTEGER", - "name": "direction" - }, - "media_id": { - "datatype": "TEXT", - "name": "media_id" - }, - "msg_id": { - "datatype": "INTEGER", - "name": "msg_id", - "primarykey": true - }, - "payload": { - "datatype": "BLOB", - "name": "payload" - }, - "send_time": { - "datatype": "BIGINT", - "name": "send_time" - }, - "share_id": { - "datatype": "TEXT", - "name": "share_id" - }, - "status": { - "datatype": "INTEGER", - "name": "status" - }, - "type": { - "datatype": "INTEGER", - "name": "type" - } - }, - "profiles": { - "key": { - "datatype": "TEXT", - "name": "key", - "primarykey": true - }, - "value": { - "datatype": "TEXT", - "name": "value" - } - }, - "receipts": { - "conv_id": { - "datatype": "TEXT", - "name": "conv_id", - "primarykey": true - }, - "create_time": { - "datatype": "BIGINT", - "name": "create_time" - }, - "msg_id": { - "datatype": "INTEGER", - "name": "msg_id" - }, - "payload": { - "datatype": "BLOB", - "name": "payload" - }, - "sender_msg_id": { - "datatype": "INTEGER", - "name": "sender_msg_id" - }, - "status": { - "datatype": "INTEGER", - "name": "status" - }, - "type": { - "datatype": "INTEGER", - "name": "type" - } - }, - "sms": { - "msg_id": { - "datatype": "INTEGER", - "name": "msg_id", - "primarykey": true - }, - "phonenumber": { - "datatype": "TEXT", - "name": "phonenumber" - }, - "text": { - "datatype": "TEXT", - "name": "text" - } - } - } -} \ No newline at end of file diff --git a/test-data/test1.db_2015-06-25_111047.json b/test-data/test1.db_2015-06-25_111047.json deleted file mode 100644 index 217bf9a..0000000 --- a/test-data/test1.db_2015-06-25_111047.json +++ /dev/null @@ -1,345 +0,0 @@ -{ - "db-config": { - "dn-name": "test-data/test1.db" - }, - "db-metadata": { - "chat_settings": "CREATE TABLE chat_settings(uid INTEGER PRIMARY KEY, participants BLOB)", - "chats": "CREATE TABLE chats(uid INTEGER PRIMARY KEY, name TEXT, data BLOB)", - "contacts": "CREATE TABLE contacts(uid INTEGER PRIMARY KEY, mutual INTEGER)", - "dialogs": "CREATE TABLE dialogs(did INTEGER PRIMARY KEY, date INTEGER, unread_count INTEGER, last_mid INTEGER)", - "enc_chats": "CREATE TABLE enc_chats(uid INTEGER PRIMARY KEY, user INTEGER, name TEXT, data BLOB, g BLOB, authkey BLOB, ttl INTEGER)", - "enc_tasks": "CREATE TABLE enc_tasks(date INTEGER, data BLOB)", - "media": "CREATE TABLE media(mid INTEGER PRIMARY KEY, uid INTEGER, date INTEGER, data BLOB)", - "media_counts": "CREATE TABLE media_counts(uid INTEGER PRIMARY KEY, count INTEGER)", - "messages": "CREATE TABLE messages(mid INTEGER PRIMARY KEY, uid INTEGER, read_state INTEGER, send_state INTEGER, date INTEGER, data BLOB, out INTEGER, ttl INTEGER)", - "params": "CREATE TABLE params(id INTEGER PRIMARY KEY, seq INTEGER, pts INTEGER, date INTEGER, qts INTEGER, lsv INTEGER, sg INTEGER, pbytes BLOB)", - "pending_read": "CREATE TABLE pending_read(uid INTEGER PRIMARY KEY, max_id INTEGER)", - "randoms": "CREATE TABLE randoms(random_id INTEGER PRIMARY KEY, mid INTEGER)", - "sent_files_v2": "CREATE TABLE sent_files_v2(uid TEXT, type INTEGER, data BLOB, PRIMARY KEY (uid, type))", - "user_contacts_v6": "CREATE TABLE user_contacts_v6(uid INTEGER PRIMARY KEY, fname TEXT, sname TEXT)", - "user_phones_v6": "CREATE TABLE user_phones_v6(uid INTEGER, phone TEXT, sphone TEXT, deleted INTEGER, PRIMARY KEY (uid, phone))", - "user_photos": "CREATE TABLE user_photos(uid INTEGER, id INTEGER, data BLOB, PRIMARY KEY (uid, id))", - "users": "CREATE TABLE users(uid INTEGER PRIMARY KEY, name TEXT, status INTEGER, data BLOB)", - "wallpapers": "CREATE TABLE wallpapers(uid INTEGER PRIMARY KEY, data BLOB)" - }, - "file-metadata": { - "format-ver": "0.90", - "scanner-name": "dbfp", - "scanner-ver": "0.50" - }, - "tables": { - "chat_settings": { - "participants": { - "datatype": "BLOB", - "name": "participants" - }, - "uid": { - "datatype": "INTEGER", - "name": "uid", - "primarykey": true - } - }, - "chats": { - "data": { - "datatype": "BLOB", - "name": "data" - }, - "name": { - "datatype": "TEXT", - "name": "name" - }, - "uid": { - "datatype": "INTEGER", - "name": "uid", - "primarykey": true - } - }, - "contacts": { - "mutual": { - "datatype": "INTEGER", - "name": "mutual" - }, - "uid": { - "datatype": "INTEGER", - "name": "uid", - "primarykey": true - } - }, - "dialogs": { - "date": { - "datatype": "INTEGER", - "name": "date" - }, - "did": { - "datatype": "INTEGER", - "name": "did", - "primarykey": true - }, - "last_mid": { - "datatype": "INTEGER", - "name": "last_mid" - }, - "unread_count": { - "datatype": "INTEGER", - "name": "unread_count" - } - }, - "enc_chats": { - "authkey": { - "datatype": "BLOB", - "name": "authkey" - }, - "data": { - "datatype": "BLOB", - "name": "data" - }, - "g": { - "datatype": "BLOB", - "name": "g" - }, - "name": { - "datatype": "TEXT", - "name": "name" - }, - "ttl": { - "datatype": "INTEGER", - "name": "ttl" - }, - "uid": { - "datatype": "INTEGER", - "name": "uid", - "primarykey": true - }, - "user": { - "datatype": "INTEGER", - "name": "user" - } - }, - "enc_tasks": { - "data": { - "datatype": "BLOB", - "name": "data" - }, - "date": { - "datatype": "INTEGER", - "name": "date" - } - }, - "media": { - "data": { - "datatype": "BLOB", - "name": "data" - }, - "date": { - "datatype": "INTEGER", - "name": "date" - }, - "mid": { - "datatype": "INTEGER", - "name": "mid", - "primarykey": true - }, - "uid": { - "datatype": "INTEGER", - "name": "uid" - } - }, - "media_counts": { - "count": { - "datatype": "INTEGER", - "name": "count" - }, - "uid": { - "datatype": "INTEGER", - "name": "uid", - "primarykey": true - } - }, - "messages": { - "data": { - "datatype": "BLOB", - "name": "data" - }, - "date": { - "datatype": "INTEGER", - "name": "date" - }, - "mid": { - "datatype": "INTEGER", - "name": "mid", - "primarykey": true - }, - "out": { - "datatype": "INTEGER", - "name": "out" - }, - "read_state": { - "datatype": "INTEGER", - "name": "read_state" - }, - "send_state": { - "datatype": "INTEGER", - "name": "send_state" - }, - "ttl": { - "datatype": "INTEGER", - "name": "ttl" - }, - "uid": { - "datatype": "INTEGER", - "name": "uid" - } - }, - "params": { - "date": { - "datatype": "INTEGER", - "name": "date" - }, - "id": { - "datatype": "INTEGER", - "name": "id", - "primarykey": true - }, - "lsv": { - "datatype": "INTEGER", - "name": "lsv" - }, - "pbytes": { - "datatype": "BLOB", - "name": "pbytes" - }, - "pts": { - "datatype": "INTEGER", - "name": "pts" - }, - "qts": { - "datatype": "INTEGER", - "name": "qts" - }, - "seq": { - "datatype": "INTEGER", - "name": "seq" - }, - "sg": { - "datatype": "INTEGER", - "name": "sg" - } - }, - "pending_read": { - "max_id": { - "datatype": "INTEGER", - "name": "max_id" - }, - "uid": { - "datatype": "INTEGER", - "name": "uid", - "primarykey": true - } - }, - "randoms": { - "mid": { - "datatype": "INTEGER", - "name": "mid" - }, - "random_id": { - "datatype": "INTEGER", - "name": "random_id", - "primarykey": true - } - }, - "sent_files_v2": { - "data": { - "datatype": "BLOB", - "name": "data" - }, - "type": { - "datatype": "INTEGER", - "name": "type" - }, - "uid": { - "datatype": "TEXT", - "name": "uid", - "primarykey": true - } - }, - "user_contacts_v6": { - "fname": { - "datatype": "TEXT", - "name": "fname" - }, - "sname": { - "datatype": "TEXT", - "name": "sname" - }, - "uid": { - "datatype": "INTEGER", - "name": "uid", - "primarykey": true - } - }, - "user_phones_v6": { - "deleted": { - "datatype": "INTEGER", - "name": "deleted" - }, - "phone": { - "datatype": "TEXT", - "name": "phone" - }, - "sphone": { - "datatype": "TEXT", - "name": "sphone" - }, - "uid": { - "datatype": "INTEGER", - "name": "uid", - "primarykey": true - } - }, - "user_photos": { - "data": { - "datatype": "BLOB", - "name": "data" - }, - "id": { - "datatype": "INTEGER", - "name": "id" - }, - "uid": { - "datatype": "INTEGER", - "name": "uid", - "primarykey": true - } - }, - "users": { - "data": { - "datatype": "BLOB", - "name": "data" - }, - "name": { - "datatype": "TEXT", - "name": "name" - }, - "status": { - "datatype": "INTEGER", - "name": "status" - }, - "uid": { - "datatype": "INTEGER", - "name": "uid", - "primarykey": true - } - }, - "wallpapers": { - "data": { - "datatype": "BLOB", - "name": "data" - }, - "uid": { - "datatype": "INTEGER", - "name": "uid", - "primarykey": true - } - } - } -} \ No newline at end of file