Update.
This commit is contained in:
		
							parent
							
								
									57c6619ce9
								
							
						
					
					
						commit
						611c27dc25
					
				
							
								
								
									
										29
									
								
								db_utils.h
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								db_utils.h
									
									
									
									
									
								
							| @ -22,22 +22,22 @@ json_object *db_set(const char *key, const char *value); | |||||||
| json_object *db_get(const char *key); | json_object *db_get(const char *key); | ||||||
| json_object *db_query(const char *query); | json_object *db_query(const char *query); | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| void db_initialize() { | void db_initialize() { | ||||||
|   sqlite3 *db; |   sqlite3 *db; | ||||||
|   char *err_msg = 0; |  | ||||||
|   int rc = sqlite3_open(db_file_expanded(), &db); |   int rc = sqlite3_open(db_file_expanded(), &db); | ||||||
| 
 | 
 | ||||||
|   if (rc != SQLITE_OK) { |   if (rc != SQLITE_OK) { | ||||||
|     return; |     return; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   const char *sql = |    db_execute("CREATE TABLE IF NOT EXISTS kv_store (key TEXT PRIMARY KEY, value TEXT);"); | ||||||
|       "CREATE TABLE IF NOT EXISTS kv_store (key TEXT PRIMARY KEY, value TEXT);"; |    db_execute("CREATE TABLE IF NOT EXISTS file_version_history ( id INTEGER PRIMARY KEY AUTOINCREMENT," | ||||||
|   rc = sqlite3_exec(db, sql, 0, 0, &err_msg); |     "path TEXT NOT NULL," | ||||||
| 
 |     "content TEXT," | ||||||
|   if (rc != SQLITE_OK) { |     "date DATETIME DEFAULT CURRENT_TIMESTAMP" | ||||||
|     sqlite3_free(err_msg); |     ");"); | ||||||
|   } |  | ||||||
| 
 | 
 | ||||||
|   sqlite3_close(db); |   sqlite3_close(db); | ||||||
| } | } | ||||||
| @ -180,6 +180,19 @@ json_object *db_execute(const char *query) { | |||||||
|   sqlite3_close(db); |   sqlite3_close(db); | ||||||
|   return result; |   return result; | ||||||
| } | } | ||||||
|  | void db_store_file_version(const char * path) { | ||||||
|  |     char * expanded = expand_home_directory(path); | ||||||
|  | 
 | ||||||
|  |     char * content = read_file(expanded); | ||||||
|  |     if(!content) { | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  |     fprintf(stderr, "Creating backup:: %s\n", expanded); | ||||||
|  |     char * formatted = sqlite3_mprintf("INSERT INTO file_version_history (path, content) VALUES (%Q, %Q)", expanded, content); | ||||||
|  |     db_execute(formatted); | ||||||
|  |     sqlite3_free(formatted);     | ||||||
|  |     free(content); | ||||||
|  | } | ||||||
| char *db_get_schema() { | char *db_get_schema() { | ||||||
|   json_object *tables = |   json_object *tables = | ||||||
|       db_query("SELECT * FROM sqlite_master WHERE type='table'"); |       db_query("SELECT * FROM sqlite_master WHERE type='table'"); | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								tools.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								tools.h
									
									
									
									
									
								
							| @ -718,6 +718,8 @@ char *tool_function_read_file(char *path) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| char *tool_function_write_file(char *path, char *content) { | char *tool_function_write_file(char *path, char *content) { | ||||||
|  |   db_store_file_version(path); | ||||||
|  | 
 | ||||||
|     FILE *fp = fopen(path, "w"); |     FILE *fp = fopen(path, "w"); | ||||||
|   if (fp == NULL) { |   if (fp == NULL) { | ||||||
|     perror("fopen failed"); |     perror("fopen failed"); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user