backend-sqlite3.c: populate files table with entries related to files from packages in repository
This commit is contained in:
parent
6a730ac59a
commit
ec3f7b4847
@ -64,10 +64,8 @@ int SQLite_commit_transaction(sqlite3 *db) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int SQLite_print_contents_subtree(sqlite3 *db,
|
int SQLite_print_contents_subtree(sqlite3 *db, struct fileTree* ft,
|
||||||
struct fileTree* ft,
|
struct configTag* ct, int arch) {
|
||||||
struct configTag* ct,
|
|
||||||
int arch) {
|
|
||||||
|
|
||||||
int thisrep, i;
|
int thisrep, i;
|
||||||
|
|
||||||
@ -110,6 +108,33 @@ int SQLite_print_contents_subtree(sqlite3 *db,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char* SQLite_add_file_tree_to_files(sqlite3 *db, struct fileTree *inFile, char *outPath) {
|
||||||
|
char buf[PATH_MAX] = "";
|
||||||
|
|
||||||
|
outPath[0] = 0;
|
||||||
|
|
||||||
|
while (inFile) {
|
||||||
|
snprintf(buf, PATH_MAX + 1, "/%s%s", inFile->name, outPath);
|
||||||
|
strcpy(&outPath[0], buf);
|
||||||
|
|
||||||
|
snprintf(sqlite3_query, PATH_MAX, "INSERT OR IGNORE INTO files VALUES(%ld,?,%ld,%ld,%ld,%d);",
|
||||||
|
inFile->id,
|
||||||
|
(inFile->firstchild?inFile->firstchild->id:-1),
|
||||||
|
(inFile->next?inFile->next->id:-1),
|
||||||
|
(inFile->parent?inFile->parent->id:-1),
|
||||||
|
inFile->numproviders);
|
||||||
|
sqlite3_prepare_v2(db, sqlite3_query, -1, &stmt, NULL);
|
||||||
|
sqlite3_bind_text(stmt, 1, inFile->name, -1, SQLITE_STATIC);
|
||||||
|
if (sqlite3_step(stmt) != SQLITE_DONE) {
|
||||||
|
fprintf(stderr, "ERROR: sqlite3_step: %s (%s)\n", sqlite3_errmsg(db), sqlite3_query);
|
||||||
|
}
|
||||||
|
sqlite3_finalize(stmt);
|
||||||
|
inFile = inFile->parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
return outPath;
|
||||||
|
}
|
||||||
|
|
||||||
#define SQLITE_TABLE_files "id INTEGER PRIMARY KEY, "\
|
#define SQLITE_TABLE_files "id INTEGER PRIMARY KEY, "\
|
||||||
"name STRING, firstchild INTEGER, next INTEGER, parent INTEGER, numproviders INTEGER"
|
"name STRING, firstchild INTEGER, next INTEGER, parent INTEGER, numproviders INTEGER"
|
||||||
/* struct headerList **provider; */
|
/* struct headerList **provider; */
|
||||||
@ -174,17 +199,21 @@ int generateSQLite_files(struct configTag* ct, sqlite3 *db, int arch) {
|
|||||||
SQLite_begin_transaction(db);
|
SQLite_begin_transaction(db);
|
||||||
if (SQLite_print_contents_subtree(db, ct->filetree[arch], ct, arch)) return 1;
|
if (SQLite_print_contents_subtree(db, ct->filetree[arch], ct, arch)) return 1;
|
||||||
|
|
||||||
|
char outPath[PATH_MAX];
|
||||||
|
|
||||||
currpackage = ct->headerlist[arch];
|
currpackage = ct->headerlist[arch];
|
||||||
while (currpackage) {
|
while (currpackage) {
|
||||||
if (currpackage->altrepository == ct->repository_level) {
|
if (currpackage->altrepository == ct->repository_level) {
|
||||||
/* packages <-> files relations */
|
/* packages <-> files relations */
|
||||||
for (i = 0; i < currpackage->filenamecount; i++) {
|
for (i = 0; i < currpackage->filenamecount; i++) {
|
||||||
snprintf(sqlite3_query, PATH_MAX, "INSERT INTO packages_files_rel VALUES(NULL,%ld,%ld,%ld,%ld,%d,?,?,?);",
|
SQLite_add_file_tree_to_files(db, currpackage->file[i], outPath);
|
||||||
|
snprintf(sqlite3_query, PATH_MAX,
|
||||||
|
"INSERT INTO packages_files_rel VALUES(NULL,%ld,%ld,%ld,%ld,%d,?,?,?);",
|
||||||
currpackage->id,
|
currpackage->id,
|
||||||
(currpackage->file)[i]->id, 0L, 0L,
|
currpackage->file[i]->id, 0L, 0L,
|
||||||
//(currpackage->fileuser)[i]->id,
|
//(currpackage->fileuser)[i]->id,
|
||||||
//(currpackage->filegroup)[i]->id,
|
//(currpackage->filegroup)[i]->id,
|
||||||
(currpackage->fileflags)[i]);
|
currpackage->fileflags[i]);
|
||||||
if (sqlite3_prepare_v2(db, sqlite3_query, -1, &stmt, NULL)) {
|
if (sqlite3_prepare_v2(db, sqlite3_query, -1, &stmt, NULL)) {
|
||||||
fprintf(stderr, "ERROR: sqlite3_prepare_v2: %s (%s)\n", sqlite3_errmsg(db), sqlite3_query);
|
fprintf(stderr, "ERROR: sqlite3_prepare_v2: %s (%s)\n", sqlite3_errmsg(db), sqlite3_query);
|
||||||
return 1;
|
return 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user