IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 19760


Ignore:
Timestamp:
Sep 25, 2008, 2:05:59 PM (18 years ago)
Author:
bills
Message:

add table pstampProject

Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/dbconfig/changes.txt

    r19690 r19760  
    521521ALTER TABLE rawImfile ADD COLUMN moon_alt   FLOAT AFTER moon_angle;
    522522ALTER TABLE rawImfile ADD COLUMN moon_phase FLOAT AFTER moon_alt;
     523
     524CREATE TABLE pstampProject (
     525        proj_id BIGINT AUTO_INCREMENT,
     526        state VARCHAR(64),
     527        dbname VARCHAR(64),
     528        dvodb VARCHAR(64),
     529        camera VARCHAR(64),
     530        telescope VARCHAR(64),
     531        need_magic TINYINT,
     532        PRIMARY KEY(proj_id),
     533        KEY(proj_id)
     534) ENGINE=innodb DEFAULT CHARSET=latin1;
     535
     536
  • trunk/dbconfig/pstamp.md

    r19223 r19760  
    55    outProduct  STR         64
    66    uri         STR         255
     7END
     8
     9pstampProject METADATA
     10    proj_id     S64         0       # Primary Key AUTO_INCREMENT
     11    name        STR         64      # UNIQUE
     12    state       STR         64
     13    dbname      STR         64
     14    dvodb       STR         64
     15    camera      STR         64
     16    telescope   STR         64
     17    need_magic  BOOL        f
    718END
    819
  • trunk/ippTools/share/Makefile.am

    r19702 r19760  
    118118     pstamptool_pendingjob.sql \
    119119     pstamptool_pendingreq.sql \
     120     pstamptool_project.sql \
    120121     pxadmin_create_tables.sql \
    121122     pxadmin_drop_tables.sql \
  • trunk/ippTools/share/pxadmin_create_tables.sql

    r19693 r19760  
    10471047) ENGINE=innodb DEFAULT CHARSET=latin1;
    10481048
     1049CREATE TABLE pstampProject (
     1050        proj_id BIGINT AUTO_INCREMENT,
     1051        name VARCHAR(64) UNIQUE,
     1052        state VARCHAR(64),
     1053        dbname VARCHAR(64),
     1054        dvodb VARCHAR(64),
     1055        camera VARCHAR(64),
     1056        telescope VARCHAR(64),
     1057        need_magic TINYINT,
     1058        PRIMARY KEY(proj_id),
     1059        KEY(proj_id)
     1060) ENGINE=innodb DEFAULT CHARSET=latin1;
     1061
    10491062CREATE TABLE pstampRequest (
    10501063        req_id BIGINT AUTO_INCREMENT,
  • trunk/ippTools/share/pxadmin_drop_tables.sql

    r19338 r19760  
    5353DROP TABLE IF EXISTS flatcorrCamLink;
    5454DROP TABLE IF EXISTS pstampDataStore;
     55DROP TABLE IF EXISTS pstampProject;
    5556DROP TABLE IF EXISTS pstampRequest;
    5657DROP TABLE IF EXISTS pstampJob;
  • trunk/ippTools/src/pstamptool.c

    r19219 r19760  
    4444static bool pendingJobMode(pxConfig *config);
    4545static bool updateJobMode(pxConfig *config);
     46static bool addProjectMode(pxConfig *config);
     47static bool projectMode(pxConfig *config);
     48static bool modProjectMode(pxConfig *config);
    4649
    4750# define MODECASE(caseName, func) \
     
    7780        MODECASE(PSTAMPTOOL_MODE_PENDINGJOB, pendingJobMode);
    7881        MODECASE(PSTAMPTOOL_MODE_UPDATEJOB, updateJobMode);
     82        MODECASE(PSTAMPTOOL_MODE_ADDPROJECT, addProjectMode);
     83        MODECASE(PSTAMPTOOL_MODE_MODPROJECT, modProjectMode);
     84        MODECASE(PSTAMPTOOL_MODE_PROJECT, projectMode);
    7985        default:
    8086            psAbort("invalid option (this should not happen)");
     
    718724    return true;
    719725}
     726static bool addProjectMode(pxConfig *config)
     727{
     728    PS_ASSERT_PTR_NON_NULL(config, false);
     729
     730    PXOPT_LOOKUP_STR(name,  config->args, "-name", true, false);
     731    PXOPT_LOOKUP_STR(state,  config->args, "-state", false, false);
     732    PXOPT_LOOKUP_STR(imagedb, config->args, "-imagedb", true, false);
     733    PXOPT_LOOKUP_STR(dvodb,  config->args, "-dvodb", false, false);
     734    PXOPT_LOOKUP_STR(camera, config->args, "-inst", true, false);
     735    PXOPT_LOOKUP_STR(telescope, config->args, "-telescope", true, false);
     736    PXOPT_LOOKUP_BOOL(need_magic, config->args, "-need_magic", false);
     737
     738    if (!pstampProjectInsert(config->dbh,
     739            0,
     740            name,
     741            state,
     742            imagedb,
     743            dvodb,
     744            camera,
     745            telescope,
     746            need_magic
     747        )) {
     748        psError(PS_ERR_UNKNOWN, false, "database error");
     749        return false;
     750    }
     751
     752    return true;
     753}
     754
     755static bool projectMode(pxConfig *config)
     756{
     757    PS_ASSERT_PTR_NON_NULL(config, false);
     758    psMetadata *where = psMetadataAlloc();
     759
     760    PXOPT_COPY_STR(config->args, where, "-name", "name", "==");
     761
     762    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     763
     764    psString query = pxDataGet("pstamptool_project.sql");
     765    if (!query) {
     766        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     767        return false;
     768    }
     769
     770    if (psListLength(where->list)) {
     771        psString whereClause = psDBGenerateWhereSQL(where, NULL);
     772        psStringAppend(&query, " %s", whereClause);
     773        psFree(whereClause);
     774    }
     775    psFree(where);
     776
     777    if (!p_psDBRunQuery(config->dbh, query)) {
     778        psError(PS_ERR_UNKNOWN, false, "database error");
     779        return false;
     780    }
     781
     782    psArray *output = p_psDBFetchResult(config->dbh);
     783    if (!output) {
     784        psError(PS_ERR_UNKNOWN, false, "database error");
     785        return false;
     786    }
     787    if (!psArrayLength(output)) {
     788        psTrace("pstamptool", PS_LOG_INFO, "no rows found");
     789        psFree(output);
     790        return true;
     791    }
     792
     793    // negative simple so the default is true
     794    if (!ippdbPrintMetadatas(stdout, output, "pstampDataStore", !simple)) {
     795        psError(PS_ERR_UNKNOWN, false, "failed to print array");
     796        psFree(output);
     797        return false;
     798    }
     799
     800    psFree(output);
     801
     802    return true;
     803}
     804static bool modProjectMode(pxConfig *config)
     805{
     806    PS_ASSERT_PTR_NON_NULL(config, false);
     807
     808    PXOPT_LOOKUP_S64(proj_id,    config->args, "-proj_id", true, false);
     809    PXOPT_LOOKUP_STR(state,  config->args, "-state", true, false);
     810
     811    char *query = psStringCopy ("UPDATE pstampProject SET");
     812   
     813    psStringAppend(&query, " state = '%s'", state);
     814               
     815    psStringAppend(&query, " WHERE proj_id = %" PRId64, proj_id);
     816
     817    if (!p_psDBRunQuery(config->dbh, query)) {
     818        psError(PS_ERR_UNKNOWN, false, "database error");
     819        psFree(query);
     820        return false;
     821    }
     822
     823    psU64 affected = psDBAffectedRows(config->dbh);
     824    if (affected != 1) {
     825        psError(PS_ERR_UNKNOWN, false, "should have affected one row but %"
     826                                        PRIu64 " rows were modified", affected);
     827        return false;
     828    }
     829
     830    return true;
     831}
     832
  • trunk/ippTools/src/pstamptool.h

    r19219 r19760  
    3939    PSTAMPTOOL_MODE_JOBRESULT,
    4040    PSTAMPTOOL_MODE_UPDATEJOB,
     41    PSTAMPTOOL_MODE_ADDPROJECT,
     42    PSTAMPTOOL_MODE_MODPROJECT,
     43    PSTAMPTOOL_MODE_PROJECT,
    4144} pstamptoolMode;
    4245
  • trunk/ippTools/src/pstamptoolConfig.c

    r19219 r19760  
    5858    psMetadata *moddatastoreArgs = psMetadataAlloc();
    5959    psMetadataAddS64(moddatastoreArgs, PS_LIST_TAIL, "-ds_id", 0,            "define ds_id", 0);
    60     psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-last_fileset", 0,            "define storage uri", NULL);
    61     psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-state", 0,            "define storage uri", NULL);
     60    psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-last_fileset", 0,     "set last_fileset seen", NULL);
     61    psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-state", 0,            "set state", NULL);
    6262
    6363    // -addreq
    6464    psMetadata *addreqArgs = psMetadataAlloc();
    65     psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-uri", 0,            "define request file uri", NULL);
     65    psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-uri", 0,            "define request file uri (required)", NULL);
    6666    psMetadataAddS64(addreqArgs, PS_LIST_TAIL, "-ds_id", 0,            "define request ds_id", 0);
    6767    // psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-out_fileset", 0,            "define request output_fileset", NULL);
     
    131131    psMetadataAddStr(updatejobArgs, PS_LIST_TAIL, "-fault", 0,            "new result", NULL);
    132132
     133    // -addproject
     134    psMetadata *addprojectArgs = psMetadataAlloc();
     135    psMetadataAddStr(addprojectArgs, PS_LIST_TAIL, "-name",        0, "define project name (required)", NULL);
     136    psMetadataAddStr(addprojectArgs, PS_LIST_TAIL, "-state",        0, "define state for project (enabled, disabled)", "enabled");
     137    psMetadataAddStr(addprojectArgs, PS_LIST_TAIL, "-imagedb",      0, "define name of database for project (required)", NULL);
     138    psMetadataAddStr(addprojectArgs, PS_LIST_TAIL, "-dvodb",        0, "define name of dvo database for project", NULL);
     139    psMetadataAddStr(addprojectArgs, PS_LIST_TAIL, "-inst",        0, "define name of camera for project (required)", NULL);
     140    psMetadataAddStr(addprojectArgs, PS_LIST_TAIL, "-telescope",     0, "define name of telescope for project (required)", NULL);
     141    psMetadataAddBool(addprojectArgs, PS_LIST_TAIL, "-need_magic",   0, "define need_magic for project", false);
     142
     143    // -modproject
     144    psMetadata *modprojectArgs = psMetadataAlloc();
     145    psMetadataAddS64(modprojectArgs, PS_LIST_TAIL, "-proj_id",      0, "define project ID to modify (required)", 0);
     146    psMetadataAddStr(modprojectArgs, PS_LIST_TAIL, "-imagedb",      0, "define name of database for project", NULL);
     147    psMetadataAddStr(modprojectArgs, PS_LIST_TAIL, "-state",        0, "define state for project (enabled, disabled)", NULL);
     148    psMetadataAddStr(modprojectArgs, PS_LIST_TAIL, "-dvodb",        0, "define name of dvo database for project", NULL);
     149    psMetadataAddStr(modprojectArgs, PS_LIST_TAIL, "-camera",        0, "define name of camera for project", NULL);
     150    psMetadataAddStr(modprojectArgs, PS_LIST_TAIL, "-telescope",     0, "define name of telescope for project", NULL);
     151    psMetadataAddBool(modprojectArgs, PS_LIST_TAIL, "-need_magic",   0, "define need_magic for project", false);
     152
     153    // -project
     154    psMetadata *projectArgs = psMetadataAlloc();
     155    psMetadataAddStr(projectArgs, PS_LIST_TAIL, "-name", 0, "define project name to list (required)", NULL);
     156    psMetadataAddBool(projectArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
     157
    133158    psMetadata *argSets = psMetadataAlloc();
    134159    psMetadata *modes = psMetadataAlloc();
     
    149174    PXOPT_ADD_MODE("-datastore",       "", PSTAMPTOOL_MODE_DATASTORE,    datastoreArgs);
    150175    PXOPT_ADD_MODE("-moddatastore",    "", PSTAMPTOOL_MODE_MODDATASTORE, moddatastoreArgs);
     176
     177    PXOPT_ADD_MODE("-addproject",      "", PSTAMPTOOL_MODE_ADDPROJECT, addprojectArgs);
     178    PXOPT_ADD_MODE("-modproject",      "", PSTAMPTOOL_MODE_MODPROJECT, modprojectArgs);
     179    PXOPT_ADD_MODE("-project",         "", PSTAMPTOOL_MODE_PROJECT,    projectArgs);
    151180
    152181    if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
Note: See TracChangeset for help on using the changeset viewer.