]> git.xolatile.top Git - soikk-DB.git/commitdiff
Updated example
authorSoikk <76824648+Soikk@users.noreply.github.com>
Sun, 24 Jul 2022 20:26:35 +0000 (22:26 +0200)
committerSoikk <76824648+Soikk@users.noreply.github.com>
Sun, 24 Jul 2022 20:26:35 +0000 (22:26 +0200)
include/database.h
src/database.c
src/main.c

index 339b48bea7e4eb230e627571269b30ce14021f74..bcade3473b72c9990dfa1e5c7a8d7f9a01c3bc5d 100644 (file)
@@ -27,10 +27,10 @@ int addFileTag(database *db, char *file, char *tag);
 
 int addFileTags(database *db, char *file, int ntags, ...);
 
-int searchTag(database *db, char *tag, uint64_t n, uint64_t **r, uint64_t *rl);
-
 int searchFile(database *db, char *file, uint64_t n, uint64_t **r, uint64_t *rl);
 
+int searchTag(database *db, char *tag, uint64_t n, uint64_t **r, uint64_t *rl);
+
 void printDatabase(database *db);
 
 void debugDatabase(database *db);
index f03446460f2ff63bc630b0d3e7b4e70ac77ed8db..ea3a6e0df441bed3c9acbab4caa52ab954c33338 100644 (file)
@@ -130,21 +130,21 @@ int addFileTags(database *db, char *file, int ntags, ...){
        return 0;
 }
 
-// Stores in r a list with the indexes of the first n files that have this tag
+// Stores in r a list with the indexes of the first n tags that this file has
 // If n is 0 or lower, it returns all of them. Stores in rl the length of r
-int searchTag(database *db, char *tag, uint64_t n, uint64_t **r, uint64_t *rl){
+int searchFile(database *db, char *file, uint64_t n, uint64_t **r, uint64_t *rl){
        uint32_t l;
-       tag = normalizeStrLimit(tag, &l, MAXPATH-1);
-       uint64_t h = crc64(0, tag, l);
-       uint64_t ti = htableSearch(db->htags, h);
-       if(ti == -1){
+       file = normalizeStrLimit(file, &l, MAXPATH-1);
+       uint64_t h = crc64(0, file, l);
+       uint64_t fi = htableSearch(db->hfiles, h);
+       if(fi == -1){
                return -1;
        }
        
        *rl = 0;
        for(uint64_t i = 0; i < db->map->size; ++i){
                if(n < 1 || *rl < n){
-                       if(db->map->table[i].tag == ti){
+                       if(db->map->table[i].file == fi){
                                ++(*rl);
                        }
                }
@@ -152,29 +152,29 @@ int searchTag(database *db, char *tag, uint64_t n, uint64_t **r, uint64_t *rl){
        *r = malloc((*rl)*sizeof(uint64_t));
        uint64_t c = 0;
        for(uint64_t i = 0; i < db->map->size && c < *rl; ++i){
-               if(db->map->table[i].tag == ti){
-                       (*r)[c++] = db->map->table[i].file;
+               if(db->map->table[i].file == fi){
+                       (*r)[c++] = db->map->table[i].tag;
                }
        }
        
        return 0;
 }
 
-// Stores in r a list with the indexes of the first n tags that this file has
+// Stores in r a list with the indexes of the first n files that have this tag
 // If n is 0 or lower, it returns all of them. Stores in rl the length of r
-int searchFile(database *db, char *file, uint64_t n, uint64_t **r, uint64_t *rl){
+int searchTag(database *db, char *tag, uint64_t n, uint64_t **r, uint64_t *rl){
        uint32_t l;
-       file = normalizeStrLimit(file, &l, MAXPATH-1);
-       uint64_t h = crc64(0, file, l);
-       uint64_t fi = htableSearch(db->hfiles, h);
-       if(fi == -1){
+       tag = normalizeStrLimit(tag, &l, MAXPATH-1);
+       uint64_t h = crc64(0, tag, l);
+       uint64_t ti = htableSearch(db->htags, h);
+       if(ti == -1){
                return -1;
        }
        
        *rl = 0;
        for(uint64_t i = 0; i < db->map->size; ++i){
                if(n < 1 || *rl < n){
-                       if(db->map->table[i].file == fi){
+                       if(db->map->table[i].tag == ti){
                                ++(*rl);
                        }
                }
@@ -182,8 +182,8 @@ int searchFile(database *db, char *file, uint64_t n, uint64_t **r, uint64_t *rl)
        *r = malloc((*rl)*sizeof(uint64_t));
        uint64_t c = 0;
        for(uint64_t i = 0; i < db->map->size && c < *rl; ++i){
-               if(db->map->table[i].file == fi){
-                       (*r)[c++] = db->map->table[i].tag;
+               if(db->map->table[i].tag == ti){
+                       (*r)[c++] = db->map->table[i].file;
                }
        }
        
index bd5c6b93effbc31171af982a679038e75f72cf4d..0768188d516b92e81321633b7c11e9b2311046bc 100644 (file)
@@ -9,9 +9,9 @@ int main(){
        
        
        addFileTag(db, "vaca.png", "naturaleza");       
-       addFileTags(db, "donald-tromp.jpg", 3, "based", "hitler", "very cool");
+       addFileTags(db, "donald-tromp.jpg", 3, "based", "blonde", "very cool");
        addFileTag(db, "vaca.png", "lovely");
-       addFileTags(db, "vaca.png", 3, "nature", "kami", "very cool");
+       addFileTags(db, "vaca.png", 3, "nature", "animal", "very cool");
        
        storeDatabase(db, "db.db");