| 123 | | int db_get_max_file_revision( int file_id ){ |
|---|
| | 123 | int db_parse_file_res( PGresult *res, file_t *file ){ |
|---|
| | 124 | // Initialize format |
|---|
| | 125 | if( !NUM_FILE_FIELDS ){ |
|---|
| | 126 | NUM_FILE_FIELDS = sizeof(file_format)/4+1; |
|---|
| | 127 | |
|---|
| | 128 | if( PQnfields(res) != NUM_FILE_FIELDS ){ |
|---|
| | 129 | NUM_FILE_FIELDS = 0; |
|---|
| | 130 | return NULL; |
|---|
| | 131 | } |
|---|
| | 132 | |
|---|
| | 133 | // Fill file_format with column numbers |
|---|
| | 134 | #define db_int(name) file_format.name = PQfnumber(res, #name ); |
|---|
| | 135 | #define db_long(name) file_format.name = PQfnumber(res, #name ); |
|---|
| | 136 | #define db_string(name) file_format.name = PQfnumber(res, #name ); |
|---|
| | 137 | #include "file.db" |
|---|
| | 138 | } |
|---|
| | 139 | |
|---|
| | 140 | if( PQresultStatus(res) != PGRES_TUPLES_OK ) return NULL; |
|---|
| | 141 | |
|---|
| | 142 | if( PQnfields(res) != NUM_FILE_FIELDS ) return NULL; |
|---|
| | 143 | |
|---|
| | 144 | // Fill stat |
|---|
| | 145 | #define db_int(name) file->name = atoi(PQgetvalue(res, 0, file_format.name )); |
|---|
| | 146 | #define db_long(name) file->name = atol(PQgetvalue(res, 0, file_format.name )); |
|---|
| | 147 | #define db_string(name) file->name = strdup(PQgetvalue(res, 0, file_format.name )); |
|---|
| | 148 | #include "file.db" |
|---|
| | 149 | |
|---|
| | 150 | return 0; |
|---|
| | 151 | } |
|---|
| | 152 | |
|---|
| | 153 | int db_parse_dir_res( PGresult *res, dir_t *dir ){ |
|---|
| | 154 | // Initialize format |
|---|
| | 155 | if( !NUM_FILE_FIELDS ){ |
|---|
| | 156 | NUM_FILE_FIELDS = sizeof(dir_format)/4+1; |
|---|
| | 157 | |
|---|
| | 158 | if( PQnfields(res) != NUM_FILE_FIELDS ){ |
|---|
| | 159 | NUM_FILE_FIELDS = 0; |
|---|
| | 160 | return NULL; |
|---|
| | 161 | } |
|---|
| | 162 | |
|---|
| | 163 | // Fill dir_format with column numbers |
|---|
| | 164 | #define db_int(name) dir_format.name = PQfnumber(res, #name ); |
|---|
| | 165 | #define db_long(name) dir_format.name = PQfnumber(res, #name ); |
|---|
| | 166 | #define db_string(name) dir_format.name = PQfnumber(res, #name ); |
|---|
| | 167 | #include "dir.db" |
|---|
| | 168 | } |
|---|
| | 169 | |
|---|
| | 170 | if( PQresultStatus(res) != PGRES_TUPLES_OK ) return NULL; |
|---|
| | 171 | |
|---|
| | 172 | if( PQnfields(res) != NUM_FILE_FIELDS ) return NULL; |
|---|
| | 173 | |
|---|
| | 174 | // Fill stat |
|---|
| | 175 | #define db_int(name) dir->name = atoi(PQgetvalue(res, 0, dir_format.name )); |
|---|
| | 176 | #define db_long(name) dir->name = atol(PQgetvalue(res, 0, dir_format.name )); |
|---|
| | 177 | #define db_string(name) dir->name = strdup(PQgetvalue(res, 0, dir_format.name )); |
|---|
| | 178 | #include "dir.db" |
|---|
| | 179 | |
|---|
| | 180 | return 0; |
|---|
| | 181 | } |
|---|
| | 182 | |
|---|
| | 183 | int db_get_file_max_revision( int file_id ){ |
|---|
| 183 | | "WHERE file_id = \'%i\'", |
|---|
| 184 | | file_id); |
|---|
| 185 | | PGresult *res=PQexec(pq_conn,pq_request); |
|---|
| 186 | | |
|---|
| 187 | | // Initialize format |
|---|
| 188 | | if( !NUM_FILE_FIELDS ){ |
|---|
| 189 | | NUM_FILE_FIELDS = sizeof(file_format)/4; |
|---|
| 190 | | |
|---|
| 191 | | if( PQnfields(res) != NUM_FILE_FIELDS ){ |
|---|
| 192 | | NUM_FILE_FIELDS = 0; |
|---|
| 193 | | return NULL; |
|---|
| 194 | | } |
|---|
| 195 | | |
|---|
| 196 | | // Fill file_format with column numbers |
|---|
| 197 | | #define db_int(name) file_format.name = PQfnumber(res, #name ); |
|---|
| 198 | | #define db_long(name) file_format.name = PQfnumber(res, #name ); |
|---|
| 199 | | #define db_string(name) file_format.name = PQfnumber(res, #name ); |
|---|
| 200 | | #include "file.db" |
|---|
| 201 | | } |
|---|
| 202 | | |
|---|
| 203 | | if( PQresultStatus(res) != PGRES_TUPLES_OK ) return NULL; |
|---|
| 204 | | |
|---|
| 205 | | if( PQnfields(res) != NUM_FILE_FIELDS ) return NULL; |
|---|
| 206 | | |
|---|
| 207 | | // Fill stat |
|---|
| 208 | | #define db_int(name) stat->name = atoi(PQgetvalue(res, 0, file_format.name )); |
|---|
| 209 | | #define db_long(name) stat->name = atol(PQgetvalue(res, 0, file_format.name )); |
|---|
| 210 | | #define db_string(name) stat->name = strdup(PQgetvalue(res, 0, file_format.name )); |
|---|
| 211 | | #include "file.db" |
|---|
| 212 | | |
|---|
| | 249 | "WHERE file_id = \'%i\' " |
|---|
| | 250 | "AND revision_id = (SELECT MAX(revision_id) FROM file WHERE file_Id = \'%i\')", |
|---|
| | 251 | file_id, file_id); |
|---|
| | 252 | db_debug_rq(db_get_file); |
|---|
| | 253 | PGresult *res=PQexec(pq_conn,pq_request); |
|---|
| | 254 | |
|---|
| | 255 | db_parse_file_res(res, stat); |
|---|
| | 256 | |
|---|
| 231 | | // Initialize format |
|---|
| 232 | | if( !NUM_FILE_FIELDS ){ |
|---|
| 233 | | NUM_FILE_FIELDS = sizeof(file_format)/4; |
|---|
| 234 | | |
|---|
| 235 | | if( PQnfields(res) != NUM_FILE_FIELDS ){ |
|---|
| 236 | | NUM_FILE_FIELDS = 0; |
|---|
| 237 | | return NULL; |
|---|
| 238 | | } |
|---|
| 239 | | |
|---|
| 240 | | // Fill file_format with column numbers |
|---|
| 241 | | #define db_int(name) file_format.name = PQfnumber(res, #name ); |
|---|
| 242 | | #define db_long(name) file_format.name = PQfnumber(res, #name ); |
|---|
| 243 | | #define db_string(name) file_format.name = PQfnumber(res, #name ); |
|---|
| 244 | | #include "file.db" |
|---|
| 245 | | } |
|---|
| 246 | | |
|---|
| 247 | | if( PQresultStatus(res) != PGRES_TUPLES_OK ) return NULL; |
|---|
| 248 | | |
|---|
| 249 | | if( PQnfields(res) != NUM_FILE_FIELDS ) return NULL; |
|---|
| 250 | | |
|---|
| 251 | | // Fill stat |
|---|
| 252 | | #define db_int(name) stat->name = atoi(PQgetvalue(res, 0, file_format.name )); |
|---|
| 253 | | #define db_long(name) stat->name = atol(PQgetvalue(res, 0, file_format.name )); |
|---|
| 254 | | #define db_string(name) stat->name = strdup(PQgetvalue(res, 0, file_format.name )); |
|---|
| 255 | | #include "file.db" |
|---|
| | 280 | db_parse_file_res(res, stat); |
|---|
| 367 | | "WHERE directory_id = \'%i\'", |
|---|
| 368 | | dir_id); |
|---|
| 369 | | PGresult *res=PQexec(pq_conn,pq_request); |
|---|
| 370 | | |
|---|
| 371 | | if( !NUM_DIR_FIELDS ){ |
|---|
| 372 | | NUM_DIR_FIELDS = sizeof(dir_format)/4; |
|---|
| 373 | | |
|---|
| 374 | | if( PQnfields(res) != NUM_DIR_FIELDS ){ |
|---|
| 375 | | NUM_DIR_FIELDS = 0; |
|---|
| 376 | | return NULL; |
|---|
| 377 | | } |
|---|
| 378 | | |
|---|
| 379 | | // Fill dir_format with column numbers |
|---|
| 380 | | #define db_int(name) dir_format.name = PQfnumber(res, #name ); |
|---|
| 381 | | #define db_long(name) dir_format.name = PQfnumber(res, #name ); |
|---|
| 382 | | #define db_string(name) dir_format.name = PQfnumber(res, #name ); |
|---|
| 383 | | #include "dir.db" |
|---|
| 384 | | } |
|---|
| 385 | | |
|---|
| 386 | | if( PQresultStatus(res) != PGRES_TUPLES_OK ) return NULL; |
|---|
| 387 | | |
|---|
| 388 | | if( PQnfields(res) != NUM_DIR_FIELDS ) return NULL; |
|---|
| 389 | | |
|---|
| 390 | | // Fill stat |
|---|
| 391 | | #define db_int(name) stat->name = atoi(PQgetvalue(res, 0, dir_format.name )); |
|---|
| 392 | | #define db_long(name) stat->name = atol(PQgetvalue(res, 0, dir_format.name )); |
|---|
| 393 | | #define db_string(name) stat->name = strdup(PQgetvalue(res, 0, dir_format.name )); |
|---|
| 394 | | #include "dir.db" |
|---|
| 395 | | |
|---|
| | 392 | "WHERE directory_id = \'%i\' " |
|---|
| | 393 | "AND revision_id = (SELECT MAX(revision_id) FROM directory WHERE directory_id = \'%i\')", |
|---|
| | 394 | dir_id, dir_id); |
|---|
| | 395 | PGresult *res=PQexec(pq_conn,pq_request); |
|---|
| | 396 | |
|---|
| | 397 | db_parse_dir_res(res,stat); |
|---|
| | 398 | |
|---|
| 413 | | if( !NUM_DIR_FIELDS ){ |
|---|
| 414 | | NUM_DIR_FIELDS = sizeof(dir_format)/4; |
|---|
| 415 | | |
|---|
| 416 | | if( PQnfields(res) != NUM_DIR_FIELDS ){ |
|---|
| 417 | | NUM_DIR_FIELDS = 0; |
|---|
| 418 | | return NULL; |
|---|
| 419 | | } |
|---|
| 420 | | |
|---|
| 421 | | // Fill dir_format with column numbers |
|---|
| 422 | | #define db_int(name) dir_format.name = PQfnumber(res, #name ); |
|---|
| 423 | | #define db_long(name) dir_format.name = PQfnumber(res, #name ); |
|---|
| 424 | | #define db_string(name) dir_format.name = PQfnumber(res, #name ); |
|---|
| 425 | | #include "dir.db" |
|---|
| 426 | | } |
|---|
| 427 | | |
|---|
| 428 | | if( PQresultStatus(res) != PGRES_TUPLES_OK ) return NULL; |
|---|
| 429 | | |
|---|
| 430 | | if( PQnfields(res) != NUM_DIR_FIELDS ) return NULL; |
|---|
| 431 | | |
|---|
| 432 | | // Fill stat |
|---|
| 433 | | #define db_int(name) stat->name = atoi(PQgetvalue(res, 0, dir_format.name )); |
|---|
| 434 | | #define db_long(name) stat->name = atol(PQgetvalue(res, 0, dir_format.name )); |
|---|
| 435 | | #define db_string(name) stat->name = strdup(PQgetvalue(res, 0, dir_format.name )); |
|---|
| 436 | | #include "dir.db" |
|---|
| 437 | | |
|---|
| | 416 | db_parse_dir_res( res, stat ); |
|---|
| | 417 | |
|---|
| 649 | | |
|---|
| 650 | | if( !NUM_DIR_FIELDS ){ |
|---|
| 651 | | NUM_DIR_FIELDS = sizeof(dir_format)/4; |
|---|
| 652 | | |
|---|
| 653 | | if( PQnfields(res) != NUM_DIR_FIELDS ){ |
|---|
| 654 | | NUM_DIR_FIELDS = 0; |
|---|
| 655 | | return NULL; |
|---|
| 656 | | } |
|---|
| 657 | | |
|---|
| 658 | | // Fill dir_format with column numbers |
|---|
| 659 | | #define db_int(name) dir_format.name = PQfnumber(res, #name ); |
|---|
| 660 | | #define db_long(name) dir_format.name = PQfnumber(res, #name ); |
|---|
| 661 | | #define db_string(name) dir_format.name = PQfnumber(res, #name ); |
|---|
| 662 | | #include "dir.db" |
|---|
| 663 | | } |
|---|
| 664 | | |
|---|
| 665 | | if( PQnfields(res) != NUM_DIR_FIELDS ) return NULL; |
|---|
| 666 | | |
|---|
| 668 | | for( i=0; i< *length; ++i ){ |
|---|
| 669 | | #define db_int(name) listing[i].name = atoi(PQgetvalue(res, i, dir_format.name )); |
|---|
| 670 | | #define db_long(name) listing[i].name = atol(PQgetvalue(res, i, dir_format.name )); |
|---|
| 671 | | #define db_string(name) listing[i].name = strdup(PQgetvalue(res, i, dir_format.name )); |
|---|
| 672 | | #include "dir.db" |
|---|
| 673 | | } |
|---|
| | 623 | for( i=0; i< *length; ++i ) |
|---|
| | 624 | db_parse_dir_res(res, &listing[i]); |
|---|
| | 625 | |
|---|
| 693 | | |
|---|
| 694 | | if( !NUM_FILE_FIELDS ){ |
|---|
| 695 | | NUM_FILE_FIELDS = sizeof(file_format)/4; |
|---|
| 696 | | |
|---|
| 697 | | if( PQnfields(res) != NUM_FILE_FIELDS ){ |
|---|
| 698 | | NUM_FILE_FIELDS = 0; |
|---|
| 699 | | return NULL; |
|---|
| 700 | | } |
|---|
| 701 | | |
|---|
| 702 | | // Fill file_format with column numbers |
|---|
| 703 | | #define db_int(name) file_format.name = PQfnumber(res, #name ); |
|---|
| 704 | | #define db_long(name) file_format.name = PQfnumber(res, #name ); |
|---|
| 705 | | #define db_string(name) file_format.name = PQfnumber(res, #name ); |
|---|
| 706 | | #include "file.db" |
|---|
| 707 | | } |
|---|
| 708 | | |
|---|
| 709 | | if( PQnfields(res) != NUM_FILE_FIELDS ) return NULL; |
|---|
| 710 | | |
|---|
| 712 | | for( i=0; i< *length; ++i ){ |
|---|
| 713 | | #define db_int(name) listing[i].name = atoi(PQgetvalue(res, i, file_format.name )); |
|---|
| 714 | | #define db_long(name) listing[i].name = atol(PQgetvalue(res, i, file_format.name )); |
|---|
| 715 | | #define db_string(name) listing[i].name = strdup(PQgetvalue(res, i, file_format.name )); |
|---|
| 716 | | #include "file.db" |
|---|
| 717 | | } |
|---|
| | 646 | for( i=0; i< *length; ++i ) |
|---|
| | 647 | db_parse_file_res(res, &listing[i]); |
|---|
| | 648 | |
|---|