- if (copyAssemblyCreateSymlink(binPath, tac_dir, np, true)) {
- _ERR("Failed to create symlink");
- tacState = TAC_STATE_RESTORE;
- return -1;
- }
-
- int count = -1;
- sql = sqlite3_mprintf(
- "SELECT COUNT(NUGET) FROM TAC WHERE PKGID = %Q AND NAME = %Q;", pkgId.c_str(), tac_name.c_str());
- int ret = sqlite3_exec(tac_db, sql, sqliteCb, &count, NULL);
- if (ret != SQLITE_OK) {
- _ERR("Sqlite select error");
- sqlite3_free(sql);
- tacState = TAC_STATE_RESTORE;
- return -1;
- }
- sqlite3_free(sql);
- if (count == 1) {
- sql = sqlite3_mprintf(
- "UPDATE TAC SET NAME = %Q, VERSION = %Q, NUGET = %Q WHERE PKGID = %Q AND NAME = %Q;",
- tac_name.c_str(), tac_version.c_str(), np.c_str(), pkgId.c_str(), tac_name.c_str());
- if (!updateDB(tac_db, sql)) {
- _ERR("Sqlite update error");
- sqlite3_free(sql);
- tacState = TAC_STATE_RESTORE;
- return -1;
- }
- sqlite3_free(sql);
- } else if (count == 0) {
- sql = sqlite3_mprintf(
- "INSERT INTO TAC (PKGID, NUGET, NAME, VERSION) " \
- "VALUES (%Q, %Q, %Q, %Q);", pkgId.c_str(), np.c_str(), tac_name.c_str(), tac_version.c_str());
- if (!insertDB(tac_db, sql)) {
- _ERR("Sqlite insert error");
- sqlite3_free(sql);
- tacState = TAC_STATE_RESTORE;
- return -1;
- }
- sqlite3_free(sql);
- }
- } else {
- _INFO("Exists tac_version_dir [%s]", tac_version_dir.c_str());
- if (!isSymlinkFile(sha256_info)) {
- if (compareSHA256Info(sha256_info, np)) {
- if (copyAssemblyCreateSymlink(binPath, tac_dir, np, false)) {
- _ERR("Failed to create symlink");
- tacState = TAC_STATE_RESTORE;
- return -1;
- }
-
- int count = -1;
- char *sql = sqlite3_mprintf(
- "SELECT COUNT(NUGET) FROM TAC WHERE PKGID = %Q AND NAME = %Q;", pkgId.c_str(), tac_name.c_str());
- int ret = sqlite3_exec(tac_db, sql, sqliteCb, &count, NULL);
- if (ret != SQLITE_OK) {
- _ERR("Sqlite select error");
- sqlite3_free(sql);
- tacState = TAC_STATE_RESTORE;
- return -1;
- }
- sqlite3_free(sql);
- if (count == 1) {
- sql = sqlite3_mprintf(
- "UPDATE TAC SET NAME = %Q, VERSION = %Q, NUGET = %Q WHERE PKGID = %Q AND NAME = %Q;",
- tac_name.c_str(), tac_version.c_str(), np.c_str(), pkgId.c_str(), tac_name.c_str());
- if (!updateDB(tac_db, sql)) {
- _ERR("Sqlite update error");
- sqlite3_free(sql);
- tacState = TAC_STATE_RESTORE;
- return -1;
- }
- sqlite3_free(sql);
- } else if (count == 0) {
- sql = sqlite3_mprintf(
- "INSERT INTO TAC (PKGID, NUGET, NAME, VERSION) " \
- "VALUES (%Q, %Q, %Q, %Q);", pkgId.c_str(), np.c_str(), tac_name.c_str(), tac_version.c_str());
- if (!insertDB(tac_db, sql)) {
- _ERR("Sqlite insert error");
- sqlite3_free(sql);
- tacState = TAC_STATE_RESTORE;
- return -1;
- }
- sqlite3_free(sql);
- }
- } else {
- _INFO("Different nuget : %s", np.c_str());
- continue;
- }
- } else {
- _ERR("Failed to create sha256_info. Symbolic link is detected");
- tacState = TAC_STATE_RESTORE;
- return -1;
- }
- }
- }