Enlightenment CVS committal

Author  : chaos
Project : e17
Module  : apps/evfs

Dir     : e17/apps/evfs/src/bin


Modified Files:
        evfs_metadata_db.c 


Log Message:
* Eradicate seeder, and make new installs go through base create, then upgrade 
process.  Easier maintenance, no mistakes.

===================================================================
RCS file: /cvs/e/e17/apps/evfs/src/bin/evfs_metadata_db.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- evfs_metadata_db.c  20 Jul 2006 15:15:41 -0000      1.1
+++ evfs_metadata_db.c  21 Jul 2006 15:10:53 -0000      1.2
@@ -15,6 +15,57 @@
 static Ecore_Hash* db_upgrade_hash = NULL;
 
 
+int evfs_metadata_db_upgrade_0_1(sqlite3* db)
+{
+       int ret;
+       char* errMsg = 0;
+       char query[1024];
+
+       printf("Performing upgrade from v.0 to v.1\n");
+
+       /*Seed statements*/
+       ret = sqlite3_exec(db, 
+       "CREATE TABLE File (id integer primary key AUTOINCREMENT, filename 
varchar(1024));", 
+       NULL, 0,&errMsg);
+       if( ret ){
+           fprintf(stderr, "Create error: %s\n", sqlite3_errmsg(db));
+           sqlite3_close(db);
+           exit(1);
+       }
+
+       ret = sqlite3_exec(db, 
+       "CREATE TABLE FileGroup (id integer primary key AUTOINCREMENT, File 
int, MetaGroup int);", 
+       NULL, 0,&errMsg);
+
+       ret = sqlite3_exec(db, 
+       "CREATE TABLE MetaGroup (id integer primary key AUTOINCREMENT, name 
varchar(255), parent int);", 
+       NULL, 0,&errMsg);
+
+       ret = sqlite3_exec(db, 
+       "CREATE TABLE CustomValues (id integer primary key AUTOINCREMENT, name 
varchar(255), value varchar(255));", 
+       NULL, 0,&errMsg);
+
+       /*Inserts*/
+       ret = sqlite3_exec(db, 
+       "INSERT INTO \"MetaGroup\" (id,name,parent) VALUES(NULL, 'Pictures', 
0);", 
+       NULL, 0,&errMsg);
+
+       ret = sqlite3_exec(db, 
+       "INSERT INTO \"MetaGroup\" (id,name,parent) VALUES(NULL, 'Video', 0);", 
+       NULL, 0,&errMsg);
+
+       ret = sqlite3_exec(db, 
+       "INSERT INTO \"MetaGroup\" (id,name,parent) VALUES(NULL, 'Audio', 0);", 
+       NULL, 0,&errMsg);
+
+       snprintf(query,sizeof(query), "INSERT INTO \"CustomValues\" 
VALUES(NULL, 'ConfigVersion', '%d');", 
+                       1);
+       ret = sqlite3_exec(db, query, NULL, 0,&errMsg);
+
+       return evfs_metadata_db_version_bump(db, "1");
+}
+
+
 
 /*---Upgrade functions*/
 int evfs_metadata_db_upgrade_1_2(sqlite3* db) 
@@ -68,6 +119,7 @@
        snprintf(metadata_db, PATH_MAX, "%s/.e/evfs/evfs_metadata.db", homedir);
 
        db_upgrade_hash = ecore_hash_new(ecore_direct_hash, 
ecore_direct_compare);
+       ecore_hash_set(db_upgrade_hash, (int*)0, evfs_metadata_db_upgrade_0_1);
        ecore_hash_set(db_upgrade_hash, (int*)1, evfs_metadata_db_upgrade_1_2);
        
        /*Check if we need to seed the DB*/
@@ -80,7 +132,17 @@
                    sqlite3_close(*db);
                    exit(1);
                }
-               evfs_metadata_db_seed(*db);
+
+               ver = evfs_metadata_db_upgrade_check(*db,1);
+               do {
+                       ver = evfs_metadata_db_upgrade_check(*db,0);
+                       runs += 1;
+               } while (ver < EVFS_METADATA_DB_CONFIG_LATEST && runs < 100);
+
+               if (runs == 100) {
+                       printf("Aborted upgrade of metadata db\n");
+                       exit(0);
+               }       
        } else {
 
                ret = sqlite3_open(metadata_db, db);
@@ -92,7 +154,7 @@
                }
 
                do {
-                       ver = evfs_metadata_db_upgrade_check(*db);
+                       ver = evfs_metadata_db_upgrade_check(*db,0);
                        runs += 1;
                } while (ver < EVFS_METADATA_DB_CONFIG_LATEST && runs < 100);
 
@@ -105,7 +167,7 @@
        printf("DB Init complete..\n");
 }
 
-int evfs_metadata_db_upgrade_check(sqlite3* db) 
+int evfs_metadata_db_upgrade_check(sqlite3* db, int startmode) 
 {
        char query[1024];
        int ret;
@@ -113,85 +175,36 @@
        int version = 0;
        int (*upgrade_func)(sqlite3*);
 
-       snprintf(query, sizeof(query), "select value from CustomValues where 
name='ConfigVersion'");
-       ret = sqlite3_prepare(db, query, 
-                       -1, &pStmt, 0);
-       if (ret == SQLITE_OK) {
-               ret = sqlite3_step(pStmt);
-               if (ret == SQLITE_ROW) version = sqlite3_column_int(pStmt,0);
+       if (!startmode) {
+               snprintf(query, sizeof(query), "select value from CustomValues 
where name='ConfigVersion'");
+               ret = sqlite3_prepare(db, query, 
+                               -1, &pStmt, 0);
+               if (ret == SQLITE_OK) {
+                       ret = sqlite3_step(pStmt);
+                       if (ret == SQLITE_ROW) version = 
sqlite3_column_int(pStmt,0);
+               } else {
+                       printf("cannot check metadata version: sqlite_error\n");
+                       exit(0);
+               }
+               sqlite3_reset(pStmt);
+               sqlite3_finalize(pStmt);
        } else {
-               printf("cannot check metadata version: sqlite_error\n");
-               exit(0);
+               version = 0;
        }
-               
-       sqlite3_reset(pStmt);
-       sqlite3_finalize(pStmt);
 
-       if (version) {
-               printf("Current version is: %d\n", version);
+       printf("Current version is: %d\n", version);
 
-               if (version < EVFS_METADATA_DB_CONFIG_LATEST) {
-                       printf("DB upgrade required..\n");
-                       upgrade_func = ecore_hash_get(db_upgrade_hash, 
(int*)version);
-
-                       if (upgrade_func) {
-                               return (*upgrade_func)(db);
-                       } else {
-                               /*No upgrade function? Argh..*/
-                               return 0;
-                       }
+       if (version < EVFS_METADATA_DB_CONFIG_LATEST) {
+               printf("DB upgrade required..\n");
+               upgrade_func = ecore_hash_get(db_upgrade_hash, (int*)version);
+
+               if (upgrade_func) {
+                       return (*upgrade_func)(db);
                } else {
-                       return EVFS_METADATA_DB_CONFIG_LATEST;
+                       /*No upgrade function? Argh..*/
+                       return 0;
                }
        } else {
-               printf("version not found in evfs metadata, abort\n");
-               exit(0);
-       }
-}
-
-void evfs_metadata_db_seed(sqlite3* db)
-{
-       int ret;
-       char* errMsg = 0;
-       char query[1024];
-
-       /*Seed statements*/
-       ret = sqlite3_exec(db, 
-       "CREATE TABLE File (id integer primary key AUTOINCREMENT, filename 
varchar(1024));", 
-       NULL, 0,&errMsg);
-       if( ret ){
-           fprintf(stderr, "Create error: %s\n", sqlite3_errmsg(db));
-           sqlite3_close(db);
-           exit(1);
+               return EVFS_METADATA_DB_CONFIG_LATEST;
        }
-
-       ret = sqlite3_exec(db, 
-       "CREATE TABLE FileGroup (id integer primary key AUTOINCREMENT, File 
int, MetaGroup int);", 
-       NULL, 0,&errMsg);
-
-       ret = sqlite3_exec(db, 
-       "CREATE TABLE MetaGroup (id integer primary key AUTOINCREMENT, name 
varchar(255), parent int, visualHint varchar(255));", 
-       NULL, 0,&errMsg);
-
-       ret = sqlite3_exec(db, 
-       "CREATE TABLE CustomValues (id integer primary key AUTOINCREMENT, name 
varchar(255), value varchar(255));", 
-       NULL, 0,&errMsg);
-
-       /*Inserts*/
-       ret = sqlite3_exec(db, 
-       "INSERT INTO \"MetaGroup\" VALUES(NULL, 'Pictures', 0, 'image_hint');", 
-       NULL, 0,&errMsg);
-
-       ret = sqlite3_exec(db, 
-       "INSERT INTO \"MetaGroup\" VALUES(NULL, 'Video', 0, 'video_hint');", 
-       NULL, 0,&errMsg);
-
-       ret = sqlite3_exec(db, 
-       "INSERT INTO \"MetaGroup\" VALUES(NULL, 'Audio', 0, 'audio_hint');", 
-       NULL, 0,&errMsg);
-
-       snprintf(query,sizeof(query), "INSERT INTO \"CustomValues\" 
VALUES(NULL, 'ConfigVersion', '%d');", 
-                       EVFS_METADATA_DB_CONFIG_LATEST);
-       ret = sqlite3_exec(db, query, NULL, 0,&errMsg);
 }
-



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to