IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 25, 2014, 11:57:11 AM (12 years ago)
Author:
bills
Message:

add mode to releasetool to delete rows in the relStack table.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/src/releasetool.c

    r37095 r37122  
    4848static bool updaterelstackMode(pxConfig *config);
    4949static bool listrelstackMode(pxConfig *config);
     50static bool deleterelstackMode(pxConfig *config);
    5051static bool summaryMode(pxConfig *config);
    5152static bool definerelgroupMode(pxConfig *config);
     
    8788        MODECASE(RELEASETOOL_MODE_UPDATERELSTACK,   updaterelstackMode);
    8889        MODECASE(RELEASETOOL_MODE_LISTRELSTACK,     listrelstackMode);
     90        MODECASE(RELEASETOOL_MODE_DELETERELSTACK,   deleterelstackMode);
    8991        MODECASE(RELEASETOOL_MODE_SUMMARY,          summaryMode);
    9092
     
    857859    PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "==");
    858860
    859     PXOPT_COPY_S32(config->args, where, "-rel_id",  "rel_id", "==");
    860     PXOPT_COPY_STR(config->args, where, "-release_name", "release_name", "==");
     861    PXOPT_COPY_S32(config->args, where, "-rel_id",  "relExp.rel_id", "==");
     862    PXOPT_COPY_STR(config->args, where, "-release_name", "ippRelease.release_name", "==");
    861863
    862864    psString query = pxDataGet("releasetool_deleterelexp.sql");
     
    10881090    return false;
    10891091}
     1092static bool deleterelstackMode(pxConfig *config)
     1093{
     1094    PS_ASSERT_PTR_NON_NULL(config, false);
     1095
     1096    PXOPT_LOOKUP_S64(relstack_id, config->args,   "-relstack_id", false, false);
     1097    // If relexp_id is supplied that is all that we need
     1098    if (!relstack_id) {
     1099        // Otherwise we need to identify the release ...
     1100        PXOPT_LOOKUP_STR(release_name, config->args, "-release_name", false, false);
     1101        PXOPT_LOOKUP_S32(rel_id, config->args,      "-rel_id", false, false);
     1102
     1103        if (!release_name && !rel_id) {
     1104            psError(PXTOOLS_ERR_CONFIG, true, "at least one of -relstack_id, -release_name, or -rel_id is required\n");
     1105            return false;
     1106        }
     1107        // ... and the Stack
     1108        PXOPT_LOOKUP_STR(label, config->args,       "-label", false, false);
     1109        PXOPT_LOOKUP_S64(stack_id, config->args,    "-stack_id", false, false);
     1110        if (!label && !stack_id) {
     1111            psError(PXTOOLS_ERR_CONFIG, true, "at least one of -label and  -stack_id is required\n");
     1112            return false;
     1113        }
     1114    }
     1115
     1116    psMetadata *where = psMetadataAlloc();
     1117
     1118    PXOPT_COPY_S32(config->args, where, "-relstack_id", "relStack.relstack_id", "==");
     1119    PXOPT_COPY_STR(config->args, where, "-label", "stackRun.label", "==");
     1120    PXOPT_COPY_S64(config->args, where, "-stack_id", "relStack.stack_id", "==");
     1121
     1122    PXOPT_COPY_S32(config->args, where, "-rel_id", "relStack.rel_id", "==");
     1123    PXOPT_COPY_STR(config->args, where, "-release_name", "ippRelease.release_name", "==");
     1124
     1125    psString query = pxDataGet("releasetool_deleterelstack.sql");
     1126
     1127    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1128    psStringAppend(&query, "\n    AND %s", whereClause);
     1129    psFree(whereClause);
     1130
     1131    if (!p_psDBRunQuery(config->dbh, query)) {
     1132        psError(PS_ERR_UNKNOWN, false, "database error");
     1133        psFree(query);
     1134        return false;
     1135    }
     1136
     1137    psU64 affected = psDBAffectedRows(config->dbh);
     1138    psLogMsg("releasetool", PS_LOG_INFO, "Deleted %" PRIu64 " relStack rows", affected);
     1139
     1140
     1141    psFree(query);
     1142
     1143    return true;
     1144}
    10901145
    10911146static bool listrelstackMode(pxConfig *config)
Note: See TracChangeset for help on using the changeset viewer.