IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 43094


Ignore:
Timestamp:
Sep 17, 2026, 11:33:59 AM (7 days ago)
Author:
eugene
Message:

add -listrun option to stacktool

Location:
branches/eam_branches/ipp-pstamp-20260421/ippTools/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-pstamp-20260421/ippTools/src/stacktool.c

    r43013 r43094  
    3434static bool definerunMode(pxConfig *config);
    3535static bool updaterunMode(pxConfig *config);
     36static bool listrunMode(pxConfig *config);
    3637static bool addinputskyfileMode(pxConfig *config);
    3738static bool inputskyfileMode(pxConfig *config);
    … …  
    7980        MODECASE(STACKTOOL_MODE_DEFINERUN,             definerunMode);
    8081        MODECASE(STACKTOOL_MODE_UPDATERUN,             updaterunMode);
     82        MODECASE(STACKTOOL_MODE_LISTRUN,               listrunMode);
    8183        MODECASE(STACKTOOL_MODE_ADDINPUTSKYFILE,       addinputskyfileMode);
    8284        MODECASE(STACKTOOL_MODE_INPUTSKYFILE,          inputskyfileMode);
    … …  
    750752}
    751753
    752 
    753754static bool updaterunMode(pxConfig *config)
    754755{
    … …  
    815816}
    816817
     818static bool listrunMode(pxConfig *config)
     819{
     820    PS_ASSERT_PTR_NON_NULL(config, false);
     821
     822    psMetadata *where = psMetadataAlloc();
     823    PXOPT_COPY_S64(config->args, where, "-stack_id",   "stackRun.stack_id", "==");
     824    PXOPT_COPY_STR(config->args, where, "-tess_id",    "stackRun.tess_id", "LIKE");
     825    PXOPT_COPY_STR(config->args, where, "-skycell_id", "stackRun.skycell_id", "LIKE");
     826    PXOPT_COPY_STR(config->args, where, "-filter",     "stackRun.filter", "LIKE");
     827    PXOPT_COPY_STR(config->args, where, "-state",      "stackRun.state", "==");
     828    pxAddLabelSearchArgs(config, where, "-label",      "stackRun.label", "LIKE");
     829    pxAddLabelSearchArgs(config, where, "-data_group", "stackRun.data_group", "LIKE");
     830    pxAddLabelSearchArgs(config, where, "-dist_group", "stackRun.dist_group", "LIKE");
     831
     832    PXOPT_LOOKUP_BOOL(all, config->args, "-all", false);
     833    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     834    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     835
     836    psString query = psStringCopy ("SELECT stackRun.* FROM stackRun");
     837
     838    if (psListLength(where->list)) {
     839        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     840        psStringAppend(&query, " WHERE %s", whereClause);
     841        psFree(whereClause);
     842    } else if (!all) {
     843        psError(PXTOOLS_ERR_CONFIG, true, "search parameters or -all are required");
     844        return false;
     845    }
     846    psFree(where);
     847
     848    // treat limit == 0 as "no limit"
     849    if (limit) {
     850        psString limitString = psDBGenerateLimitSQL(limit);
     851        psStringAppend(&query, " %s", limitString);
     852        psFree(limitString);
     853    }
     854
     855    if (!p_psDBRunQuery(config->dbh, query)) {
     856        psError(PS_ERR_UNKNOWN, false, "database error");
     857        psFree(query);
     858        return false;
     859    }
     860    psFree(query);
     861
     862    psArray *output = p_psDBFetchResult(config->dbh);
     863    if (!output) {
     864        psErrorCode err = psErrorCodeLast();
     865        switch (err) {
     866            case PS_ERR_DB_CLIENT:
     867                psError(PXTOOLS_ERR_SYS, false, "database error");
     868            case PS_ERR_DB_SERVER:
     869                psError(PXTOOLS_ERR_PROG, false, "database error");
     870            default:
     871                psError(PXTOOLS_ERR_PROG, false, "unknown error");
     872        }
     873
     874        return false;
     875    }
     876    if (!psArrayLength(output)) {
     877        psTrace("stacktool", PS_LOG_INFO, "no rows found");
     878        psFree(output);
     879        return true;
     880    }
     881
     882    if (psArrayLength(output)) {
     883        if (!ippdbPrintMetadatas(stdout, output, "stackRun", !simple)) {
     884            psError(PS_ERR_UNKNOWN, false, "failed to print array");
     885            psFree(output);
     886            return false;
     887        }
     888    }
     889   
     890    psFree(output);
     891
     892    return true;
     893}
    817894
    818895static bool addinputskyfileMode(pxConfig *config)
    … …  
    12111288}
    12121289
    1213 
    12141290static bool sumskyfileMode(pxConfig *config)
    12151291{
  • branches/eam_branches/ipp-pstamp-20260421/ippTools/src/stacktool.h

    r41297 r43094  
    2828    STACKTOOL_MODE_DEFINERUN,
    2929    STACKTOOL_MODE_UPDATERUN,
     30    STACKTOOL_MODE_LISTRUN,
    3031    STACKTOOL_MODE_ADDINPUTSKYFILE,
    3132    STACKTOOL_MODE_INPUTSKYFILE,
  • branches/eam_branches/ipp-pstamp-20260421/ippTools/src/stacktoolConfig.c

    r42097 r43094  
    147147    psMetadataAddBool(inputskyfileArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
    148148
     149    // -listrun
     150    psMetadata *listrunArgs = psMetadataAlloc();
     151    psMetadataAddS64(listrunArgs,  PS_LIST_TAIL, "-stack_id", 0,         "search by stack ID", 0);
     152    psMetadataAddStr(listrunArgs,  PS_LIST_TAIL, "-tess_id", 0,          "search by tess ID (LIKE comparison)", 0);
     153    psMetadataAddStr(listrunArgs,  PS_LIST_TAIL, "-skycell_id", 0,       "search by skycell ID (LIKE comparison)", 0);
     154    psMetadataAddStr(listrunArgs,  PS_LIST_TAIL, "-filter", 0,           "search by filter", NULL);
     155    psMetadataAddStr(listrunArgs,  PS_LIST_TAIL, "-state", 0,            "search by state", NULL);
     156    psMetadataAddStr(listrunArgs,  PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK,      "search by label", NULL);
     157    psMetadataAddStr(listrunArgs,  PS_LIST_TAIL, "-data_group", PS_META_DUPLICATE_OK, "search by data_group", 0);
     158    psMetadataAddStr(listrunArgs,  PS_LIST_TAIL, "-dist_group", PS_META_DUPLICATE_OK, "search by dist_group", 0);
     159    psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-all",  0,             "search without arguments", false);
     160    psMetadataAddU64(listrunArgs,  PS_LIST_TAIL,  "-limit",  0,          "limit result set to N items", 0);
     161    psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-simple",  0,          "use the simple output format", false);
     162
    149163    // -tosum
    150164    psMetadata *tosumArgs = psMetadataAlloc();
    … …  
    288302    psMetadataAddStr(summaryArgs, PS_LIST_TAIL, "-tess_id", 0,   "search by tessellation ID", NULL);
    289303    psMetadataAddStr(summaryArgs, PS_LIST_TAIL, "-projection_cell", 0,   "search by projection cell ID", NULL);
    290 //    psMetadataAddStr(summaryArgs, PS_LIST_TAIL, "-state", 0,     "search by state", NULL);
     304//  psMetadataAddStr(summaryArgs, PS_LIST_TAIL, "-state", 0,     "search by state", NULL);
    291305    psMetadataAddStr(summaryArgs, PS_LIST_TAIL, "-filter", 0,    "search by filter (LIKE comparison)", NULL);
    292306    psMetadataAddStr(summaryArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by stackRun label (LIKE comparison)", NULL);
    293307    psMetadataAddStr(summaryArgs, PS_LIST_TAIL, "-data_group", PS_META_DUPLICATE_OK, "search by stackAssociation data_group (LIKE comparison)", NULL);
    294308    psMetadataAddStr(summaryArgs, PS_LIST_TAIL, "-skycell_id", 0,   "search by skycell ID", NULL);
    295 //     psMetadataAddStr(summaryArgs, PS_LIST_TAIL, "-dist_group", PS_META_DUPLICATE_OK, "search by stackRun dist_group (LIKE comparison)", NULL);
    296 
    297 //    psMetadataAddBool(summaryArgs, PS_LIST_TAIL, "-all",  0,             "search without arguments", false);
     309//  psMetadataAddStr(summaryArgs, PS_LIST_TAIL, "-dist_group", PS_META_DUPLICATE_OK, "search by stackRun dist_group (LIKE comparison)", NULL);
     310
     311//  psMetadataAddBool(summaryArgs, PS_LIST_TAIL, "-all",  0,             "search without arguments", false);
    298312    psMetadataAddU64(summaryArgs, PS_LIST_TAIL,  "-limit",  0,            "limit result set to N items", 0);
    299313    psMetadataAddBool(summaryArgs, PS_LIST_TAIL, "-simple",  0,          "use the simple output format", false);
    … …  
    353367
    354368    PXOPT_ADD_MODE("-definebyquery", "Define a new stackRun by searching for warp IDs", STACKTOOL_MODE_DEFINEBYQUERY,  definebyqueryArgs);
    355     PXOPT_ADD_MODE("-definerun",       "", STACKTOOL_MODE_DEFINERUN,      definerunArgs);
    356     PXOPT_ADD_MODE("-updaterun",       "", STACKTOOL_MODE_UPDATERUN,      updaterunArgs);
     369    PXOPT_ADD_MODE("-definerun",       "", STACKTOOL_MODE_DEFINERUN,       definerunArgs);
     370    PXOPT_ADD_MODE("-updaterun",       "", STACKTOOL_MODE_UPDATERUN,       updaterunArgs);
     371    PXOPT_ADD_MODE("-listrun",         "", STACKTOOL_MODE_LISTRUN,         listrunArgs);
    357372    PXOPT_ADD_MODE("-addinputskyfile", "", STACKTOOL_MODE_ADDINPUTSKYFILE, addinputskyfileArgs);
    358373    PXOPT_ADD_MODE("-inputskyfile",    "", STACKTOOL_MODE_INPUTSKYFILE,    inputskyfileArgs);
    359     PXOPT_ADD_MODE("-tosum",           "", STACKTOOL_MODE_TOSUM,          tosumArgs);
    360     PXOPT_ADD_MODE("-tobkg",           "", STACKTOOL_MODE_TOBKG,          tobkgArgs);
     374    PXOPT_ADD_MODE("-tosum",           "", STACKTOOL_MODE_TOSUM,           tosumArgs);
     375    PXOPT_ADD_MODE("-tobkg",           "", STACKTOOL_MODE_TOBKG,           tobkgArgs);
    361376    PXOPT_ADD_MODE("-addsumskyfile",   "", STACKTOOL_MODE_ADDSUMSKYFILE,   addsumskyfileArgs);
    362377    PXOPT_ADD_MODE("-sumskyfile",      "list results of stackRun", STACKTOOL_MODE_SUMSKYFILE,      sumskyfileArgs);
    … …  
    376391    PXOPT_ADD_MODE("-revertsummary",        "revert entry in the summary table", STACKTOOL_MODE_REVERTSUMMARY, revertsummaryArgs);
    377392   
     393
    378394    PXOPT_ADD_MODE("-exportrun",            "export run for import on other database", STACKTOOL_MODE_EXPORTRUN, exportrunArgs);
    379395    PXOPT_ADD_MODE("-importrun",            "import run from metadata file",           STACKTOOL_MODE_IMPORTRUN, importrunArgs);
Note: See TracChangeset for help on using the changeset viewer.