From 6960fc767fa433fc79a033efe8648de6970bfed5 Mon Sep 17 00:00:00 2001
From: Daniel Rodriguez <danirock99@gmail.com>
Date: Sun, 12 Jun 2022 22:53:01 +0200
Subject: [PATCH] =?UTF-8?q?=C3=A9criture/lecture=20des=20records=20sur=20l?=
 =?UTF-8?q?e=20disque?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .gitignore |  3 ++-
 b-tree.c   |  5 +++--
 main.c     | 29 ++++++++++++++++++++++++++++-
 3 files changed, 33 insertions(+), 4 deletions(-)

diff --git a/.gitignore b/.gitignore
index d9e6619..55acbec 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
 *.o
 main
-.vscode
\ No newline at end of file
+.vscode
+*.dat
\ No newline at end of file
diff --git a/b-tree.c b/b-tree.c
index 98049c6..e0e0b75 100644
--- a/b-tree.c
+++ b/b-tree.c
@@ -194,12 +194,13 @@ b_tree insert_into_tree(b_tree tree, uint64_t key, record_t* record){
 
 record_t* search(b_tree tree, uint64_t key){
     int index = find_insertion_index(tree->keys, tree->count, key);
-    printf("%d\n", index);
+    //printf("%d\n", index);
     if(!is_leaf(tree)){
         return search(tree->children[index], key);
     }
     else{
-        printf("leaf: %lu, %lu\n", tree->keys[index-1], key);
+        //printf("leaf: %lu, %lu\n", tree->keys[index-1], key);
+        // gerer collisions ?
         if(tree->keys[index-1] == key){
             return tree->children[index];
         }
diff --git a/main.c b/main.c
index f045f7c..7c2afb4 100644
--- a/main.c
+++ b/main.c
@@ -4,7 +4,6 @@
 #include <stdlib.h>
 #include <string.h>
 #include <assert.h>
-#include <sys/types.h>
 #include "b-tree.h"
 #include "record.h"
 
@@ -28,6 +27,28 @@ uint64_t record_hash(record_t* r){
     return hash(r->phone);
 }
 
+void write_database_to_disk(char* fileName, record_t* database, int size){
+    FILE* f;
+    f = fopen(fileName, "wb");
+    if(f == NULL){
+        assert(false);
+    }
+    
+    fwrite(database, sizeof(record_t), size, f);
+    fclose(f);
+}
+
+void read_database_from_disk(char* fileName, record_t* database, int size){
+    FILE* f;
+    f = fopen(fileName, "rb");
+    if(f == NULL){
+        assert(false);
+    }
+
+    fread(database, sizeof(record_t), size, f);
+    fclose(f);
+}
+
 int main(){
     //hash("essdfuihfs");
     b_tree node = create_node();
@@ -50,8 +71,14 @@ int main(){
 
     uint64_t a[4] = {0, 2, 4, 5};
     printf("%d\n", find_insertion_index(a, 4, 2));
+
+    //write_database_to_disk("test.dat", r, 1);
+    record_t* test = malloc(sizeof(record_t));
+    read_database_from_disk("test.dat", test, 1);
+    print_record(*test);
     
     free_b(node);
     free(r);
+    free(test);
     return EXIT_SUCCESS;
 }
\ No newline at end of file
-- 
GitLab