]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/cats/sql_list.c
Implement repositioning code + misc
[bacula/bacula] / bacula / src / cats / sql_list.c
index 62498588b1d5d7b6b2689732003c62519966c95f..9ebd839f8017dab3d78acb6ac9713e750d88fd0e 100644 (file)
  */
 
 /* Imported subroutines */
-extern void list_result(B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx, int full_list);
-extern int QueryDB(char *file, int line, void *jcr, B_DB *db, char *select_cmd);
+extern void list_result(B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx, e_list_type type);
+extern int QueryDB(char *file, int line, JCR *jcr, B_DB *db, char *select_cmd);
 
 
 /* 
  * Submit general SQL query
  */
-int db_list_sql_query(void *jcr, B_DB *mdb, char *query, DB_LIST_HANDLER *sendit, 
-                     void *ctx, int verbose, int full)
+int db_list_sql_query(JCR *jcr, B_DB *mdb, char *query, DB_LIST_HANDLER *sendit, 
+                     void *ctx, int verbose, e_list_type type)
 {
    db_lock(mdb);
    if (sql_query(mdb, query) != 0) {
@@ -67,7 +67,7 @@ int db_list_sql_query(void *jcr, B_DB *mdb, char *query, DB_LIST_HANDLER *sendit
    mdb->result = sql_store_result(mdb);
 
    if (mdb->result) {
-      list_result(mdb, sendit, ctx, full);
+      list_result(mdb, sendit, ctx, type);
       sql_free_result(mdb);
    }
    db_unlock(mdb);
@@ -75,9 +75,10 @@ int db_list_sql_query(void *jcr, B_DB *mdb, char *query, DB_LIST_HANDLER *sendit
 }
 
 void
-db_list_pool_records(void *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx, int full
+db_list_pool_records(JCR *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx, e_list_type type
 {
-   if (full) {
+   db_lock(mdb);
+   if (type == VERT_LIST) {
       Mmsg(&mdb->cmd, "SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog,"
          "AcceptAnyVolume,VolRetention,VolUseDuration,MaxVolJobs,MaxVolBytes,"
          "AutoPrune,Recycle,PoolType,LabelFormat "
@@ -87,22 +88,22 @@ db_list_pool_records(void *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx, i
         "FROM Pool ORDER BY PoolId");
    }
 
-   db_lock(mdb);
    if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       db_unlock(mdb);
       return;
    }
 
-   list_result(mdb, sendit, ctx, full);
+   list_result(mdb, sendit, ctx, type);
    
    sql_free_result(mdb);
    db_unlock(mdb);
 }
 
 void
-db_list_client_records(void *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx, int full)
+db_list_client_records(JCR *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx, e_list_type type)
 {
-   if (full) {
+   db_lock(mdb);
+   if (type == VERT_LIST) {
       Mmsg(&mdb->cmd, "SELECT ClientId,Name,Uname,AutoPrune,FileRetention,"
          "FileRetention,JobRetention "
          "FROM Client ORDER BY ClientId");
@@ -111,13 +112,12 @@ db_list_client_records(void *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx,
          "FROM Client ORDER BY ClientId");
    }
 
-   db_lock(mdb);
    if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       db_unlock(mdb);
       return;
    }
 
-   list_result(mdb, sendit, ctx, full);
+   list_result(mdb, sendit, ctx, type);
    
    sql_free_result(mdb);
    db_unlock(mdb);
@@ -129,10 +129,11 @@ db_list_client_records(void *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx,
  *   otherwise, list the Volumes in the Pool specified by PoolId
  */
 void
-db_list_media_records(void *jcr, B_DB *mdb, MEDIA_DBR *mdbr, 
-                     DB_LIST_HANDLER *sendit, void *ctx, int full)
+db_list_media_records(JCR *jcr, B_DB *mdb, MEDIA_DBR *mdbr, 
+                     DB_LIST_HANDLER *sendit, void *ctx, e_list_type type)
 {
-   if (full) {
+   db_lock(mdb);
+   if (type == VERT_LIST) {
       if (mdbr->VolumeName[0] != 0) {
          Mmsg(&mdb->cmd, "SELECT MediaId,VolumeName,Slot,PoolId,"
             "MediaType,FirstWritten,LastWritten,LabelDate,VolJobs,"
@@ -160,22 +161,22 @@ db_list_media_records(void *jcr, B_DB *mdb, MEDIA_DBR *mdbr,
       }
    }
 
-   db_lock(mdb);
    if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       db_unlock(mdb);
       return;
    }
 
-   list_result(mdb, sendit, ctx, full);
+   list_result(mdb, sendit, ctx, type);
    
    sql_free_result(mdb);
    db_unlock(mdb);
 }
 
-void db_list_jobmedia_records(void *jcr, B_DB *mdb, uint32_t JobId, 
-                             DB_LIST_HANDLER *sendit, void *ctx, int full)
+void db_list_jobmedia_records(JCR *jcr, B_DB *mdb, uint32_t JobId, 
+                             DB_LIST_HANDLER *sendit, void *ctx, e_list_type type)
 {
-   if (full) {
+   db_lock(mdb);
+   if (type == VERT_LIST) {
       if (JobId > 0) {                  /* do by JobId */
          Mmsg(&mdb->cmd, "SELECT JobMediaId,JobId,MediaId,Media.VolumeName,"
             "FirstIndex,LastIndex,StartFile,EndFile,StartBlock,EndBlock "
@@ -197,13 +198,12 @@ void db_list_jobmedia_records(void *jcr, B_DB *mdb, uint32_t JobId,
             "FROM JobMedia,Media WHERE Media.MediaId=JobMedia.MediaId");
       }
    }
-   db_lock(mdb);
    if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       db_unlock(mdb);
       return;
    }
 
-   list_result(mdb, sendit, ctx, full);
+   list_result(mdb, sendit, ctx, type);
    
    sql_free_result(mdb);
    db_unlock(mdb);
@@ -218,10 +218,11 @@ void db_list_jobmedia_records(void *jcr, B_DB *mdb, uint32_t JobId,
  *  only the job with the specified id.
  */
 void
-db_list_job_records(void *jcr, B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit, 
-                   void *ctx, int full)
+db_list_job_records(JCR *jcr, B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit, 
+                   void *ctx, e_list_type type)
 {
-   if (full) {
+   db_lock(mdb);
+   if (type == VERT_LIST) {
       if (jr->JobId == 0 && jr->Job[0] == 0) {
         Mmsg(&mdb->cmd, 
             "SELECT JobId,Job,Job.Name,PurgedFiles,Type,Level,"
@@ -253,13 +254,11 @@ db_list_job_records(void *jcr, B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit,
             "JobFiles,JobBytes,JobStatus FROM Job WHERE JobId=%u", jr->JobId);
       }
    }
-   db_lock(mdb);
    if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       db_unlock(mdb);
       return;
    }
-
-   list_result(mdb, sendit, ctx, full);
+   list_result(mdb, sendit, ctx, type);
    
    sql_free_result(mdb);
    db_unlock(mdb);
@@ -270,7 +269,7 @@ db_list_job_records(void *jcr, B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit,
  *
  */
 void
-db_list_job_totals(void *jcr, B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit, void *ctx)
+db_list_job_totals(JCR *jcr, B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit, void *ctx)
 {
    db_lock(mdb);
 
@@ -283,7 +282,7 @@ AS Files, sum(JobBytes) AS Bytes, Name AS Job FROM Job GROUP BY Name");
       return;
    }
 
-   list_result(mdb, sendit, ctx, 0);
+   list_result(mdb, sendit, ctx, HORZ_LIST);
    
    sql_free_result(mdb);
 
@@ -296,7 +295,7 @@ AS Files,sum(JobBytes) As Bytes FROM Job");
       return;
    }
 
-   list_result(mdb, sendit, ctx, 0);
+   list_result(mdb, sendit, ctx, HORZ_LIST);
    
    sql_free_result(mdb);
    db_unlock(mdb);
@@ -304,21 +303,21 @@ AS Files,sum(JobBytes) As Bytes FROM Job");
 
 
 void
-db_list_files_for_job(void *jcr, B_DB *mdb, uint32_t jobid, DB_LIST_HANDLER *sendit, void *ctx)
+db_list_files_for_job(JCR *jcr, B_DB *mdb, uint32_t jobid, DB_LIST_HANDLER *sendit, void *ctx)
 {
+   db_lock(mdb);
 
    Mmsg(&mdb->cmd, "SELECT Path.Path,Filename.Name FROM File,\
 Filename,Path WHERE File.JobId=%u AND Filename.FilenameId=File.FilenameId \
 AND Path.PathId=File.PathId",
       jobid);
 
-   db_lock(mdb);
    if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       db_unlock(mdb);
       return;
    }
 
-   list_result(mdb, sendit, ctx, 0);
+   list_result(mdb, sendit, ctx, HORZ_LIST);
    
    sql_free_result(mdb);
    db_unlock(mdb);