IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 37095


Ignore:
Timestamp:
Jul 22, 2014, 10:53:00 AM (12 years ago)
Author:
bills
Message:

add option to releasetool to delete existing relExp rows.

Location:
trunk/ippTools
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/share/Makefile.am

    r36981 r37095  
    484484        releasetool_definerelstack.sql \
    485485        releasetool_definerelstack_with_skycal.sql \
     486        releasetool_deleterelexp.sql \
    486487        releasetool_listrelstack.sql \
    487488        releasetool_summary.sql \
  • trunk/ippTools/src/releasetool.c

    r37075 r37095  
    4444static bool updaterelexpMode(pxConfig *config);
    4545static bool listrelexpMode(pxConfig *config);
     46static bool deleterelexpMode(pxConfig *config);
    4647static bool definerelstackMode(pxConfig *config);
    4748static bool updaterelstackMode(pxConfig *config);
     
    8182        MODECASE(RELEASETOOL_MODE_UPDATERELEXP,     updaterelexpMode);
    8283        MODECASE(RELEASETOOL_MODE_LISTRELEXP,       listrelexpMode);
     84        MODECASE(RELEASETOOL_MODE_DELETERELEXP,     deleterelexpMode);
    8385
    8486        MODECASE(RELEASETOOL_MODE_DEFINERELSTACK,   definerelstackMode);
     
    817819
    818820    psFree(output);
     821
     822    return true;
     823}
     824
     825static bool deleterelexpMode(pxConfig *config)
     826{
     827    PS_ASSERT_PTR_NON_NULL(config, false);
     828
     829    PXOPT_LOOKUP_S64(relexp_id, config->args,   "-relexp_id", false, false);
     830    // If relexp_id is supplied that is all that we need
     831    if (!relexp_id) {
     832        // Otherwise we need to identify the release ...
     833        PXOPT_LOOKUP_STR(release_name, config->args, "-release_name", false, false);
     834        PXOPT_LOOKUP_S32(rel_id, config->args,      "-rel_id", false, false);
     835
     836        if (!release_name && !rel_id) {
     837            psError(PXTOOLS_ERR_CONFIG, true, "at least one of -relexp_id, -release_name, or -rel_id is required\n");
     838            return false;
     839        }
     840        // ... and the exposure
     841        PXOPT_LOOKUP_STR(label, config->args,       "-label", false, false);
     842        PXOPT_LOOKUP_S64(cam_id, config->args,      "-cam_id", false, false);
     843        PXOPT_LOOKUP_S64(exp_id, config->args,      "-exp_id", false, false);
     844        PXOPT_LOOKUP_STR(exp_name, config->args,    "-exp_name", false, false);
     845        if (!label && !cam_id && !exp_id && !exp_name) {
     846            psError(PXTOOLS_ERR_CONFIG, true, "at least one of -label, -cam_id, -exp_id, -exp_name is required\n");
     847            return false;
     848        }
     849    }
     850
     851    psMetadata *where = psMetadataAlloc();
     852
     853    PXOPT_COPY_S32(config->args, where, "-relexp_id", "relExp.relexp_id", "==");
     854    PXOPT_COPY_STR(config->args, where, "-label",  "camRun.label", "==");
     855    PXOPT_COPY_S64(config->args, where, "-cam_id", "relExp.cam_id", "==");
     856    PXOPT_COPY_S64(config->args, where, "-exp_id", "relExp.exp_id", "==");
     857    PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "==");
     858
     859    PXOPT_COPY_S32(config->args, where, "-rel_id",  "rel_id", "==");
     860    PXOPT_COPY_STR(config->args, where, "-release_name", "release_name", "==");
     861
     862    psString query = pxDataGet("releasetool_deleterelexp.sql");
     863
     864    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     865    psStringAppend(&query, "\n    AND %s", whereClause);
     866    psFree(whereClause);
     867
     868    if (!p_psDBRunQuery(config->dbh, query)) {
     869        psError(PS_ERR_UNKNOWN, false, "database error");
     870        psFree(query);
     871        return false;
     872    }
     873
     874    psU64 affected = psDBAffectedRows(config->dbh);
     875    psLogMsg("releasetool", PS_LOG_INFO, "Deleted %" PRIu64 " relExp rows", affected);
     876
     877
     878    psFree(query);
    819879
    820880    return true;
  • trunk/ippTools/src/releasetool.h

    r36041 r37095  
    3434    RELEASETOOL_MODE_TOCALIBEXP,
    3535    RELEASETOOL_MODE_LISTRELEXP,
     36    RELEASETOOL_MODE_DELETERELEXP,
    3637    RELEASETOOL_MODE_DEFINERELSTACK,
    3738    RELEASETOOL_MODE_UPDATERELSTACK,
  • trunk/ippTools/src/releasetoolConfig.c

    r36046 r37095  
    183183    psMetadataAddBool(listrelexpArgs, PS_LIST_TAIL, "-simple",      0, "use the simple output format", false);
    184184
     185    // -deleterelexp
     186    psMetadata *deleterelexpArgs = psMetadataAlloc();
     187    psMetadataAddS64(deleterelexpArgs, PS_LIST_TAIL,  "-relexp_id", 0,   "select by released exposure ID", 0);
     188    psMetadataAddS64(deleterelexpArgs, PS_LIST_TAIL,  "-exp_id", 0,      "select by exposure ID", 0);
     189    psMetadataAddStr(deleterelexpArgs,  PS_LIST_TAIL, "-exp_name", 0,    "select by exposure name", NULL);
     190    psMetadataAddS32(deleterelexpArgs, PS_LIST_TAIL,  "-rel_id", 0,      "select by release ID", 0);
     191    psMetadataAddS32(deleterelexpArgs, PS_LIST_TAIL,  "-cam_id", 0,      "select by cam run ID", 0);
     192    psMetadataAddStr(deleterelexpArgs,  PS_LIST_TAIL, "-label", 0,       "select by camRun.label", NULL);
     193    psMetadataAddStr(deleterelexpArgs,  PS_LIST_TAIL, "-release_name", 0, "select by release name (LIKE comparision)", NULL);
     194
     195
    185196    // -definerelstack
    186197    psMetadata *definerelstackArgs = psMetadataAlloc();
     
    348359    PXOPT_ADD_MODE("-tocalibexp",       "list relExps pending calibration",  RELEASETOOL_MODE_TOCALIBEXP,  tocalibexpArgs);
    349360    PXOPT_ADD_MODE("-listrelexp",       "list released exposures",      RELEASETOOL_MODE_LISTRELEXP,    listrelexpArgs);
     361    PXOPT_ADD_MODE("-deleterelexp",     "delete a released exposure",   RELEASETOOL_MODE_DELETERELEXP,  deleterelexpArgs);
    350362
    351363    PXOPT_ADD_MODE("-definerelstack",     "define a released stack",    RELEASETOOL_MODE_DEFINERELSTACK,  definerelstackArgs);
Note: See TracChangeset for help on using the changeset viewer.