]> andersk Git - moira.git/blobdiff - server/increment.pc
Allow for queries on mcntmap table.
[moira.git] / server / increment.pc
index d1c3b144e5b8d5c589dfac3824e024d9c7363fb6..6879afee8b9d8845cfe0bce37e5855abcbfe3407 100644 (file)
@@ -110,11 +110,44 @@ void incremental_before(enum tables table, char *qual, char **argv)
       dosql(before);
       beforec = 4;
       break;
+    case CONTAINERS_TABLE:
+      sprintf(stmt_buf, "SELECT c.name, c.description, c.location, c.contact, "
+             "c.acl_type, c.acl_id, c.cnt_id FROM containers c WHERE %s", 
+             qual);
+      dosql(before);
+      beforec = 7;
+      name = xmalloc(0);
+      id = atoi(before[5]);
+      if (!strncmp(before[4], "USER", 4))
+       {
+         id_to_name(id, USERS_TABLE, &name);
+         strcpy(before[5], name);
+       }
+      else if (!strncmp(before[4], "LIST", 4))
+       {
+         id_to_name(id, LIST_TABLE, &name);
+         strcpy(before[5], name);
+       }
+      else if (!strncmp(before[4], "KERBEROS", 8))
+       {
+         id_to_name(id, STRINGS_TABLE, &name);
+         strcpy(before[5], name);
+       }
+      break;
     case MCMAP_TABLE:
       strcpy(before[0], argv[0]);
       strcpy(before[1], argv[1]);
       beforec = 2;
       break;
+    case MCNTMAP_TABLE:
+      strcpy(before[0], argv[0]);
+      strcpy(before[1], argv[1]);
+      name_to_id(before[0], MACHINE_TABLE, &id);
+      sprintf(before[2], "%d", id);
+      name_to_id(before[1], CONTAINERS_TABLE, &id);
+      sprintf(before[3], "%d", id);
+      beforec = 4;
+      break;
     case SVC_TABLE:
       strcpy(before[0], argv[0]);
       strcpy(before[1], argv[1]);
@@ -192,6 +225,14 @@ void incremental_before(enum tables table, char *qual, char **argv)
          EXEC SQL SELECT list_id INTO :before[9] FROM list
            WHERE name = :name;
        }
+      else if (!strcmp(before[1], "MACHINE"))
+       {
+         id_to_name(id, MACHINE_TABLE, &name2);
+         EXEC SQL SELECT list_id INTO :before[9] FROM list
+           WHERE name = :name;
+         sprintf(before[10], "%d", id);
+         beforec = 11;
+       }
       strcpy(before[2], name2);
       free(name);
       free(name2);
@@ -243,11 +284,44 @@ void incremental_after(enum tables table, char *qual, char **argv)
       dosql(after);
       afterc = 4;
       break;
+    case CONTAINERS_TABLE:
+      sprintf(stmt_buf, "SELECT c.name, c.description, c.location, c.contact, "
+             "c.acl_type, c.acl_id, c.cnt_id FROM containers c WHERE %s",
+             qual);
+      dosql(after);
+      afterc = 7;
+      name = xmalloc(0);
+      id = atoi(after[5]);
+      if (!strncmp(after[4], "USER", 4))
+       {
+         id_to_name(id, USERS_TABLE, &name);
+         strcpy(after[5], name);
+       }
+      else if (!strncmp(after[4], "LIST", 4))
+       {
+         id_to_name(id, LIST_TABLE, &name);
+         strcpy(after[5], name);
+       }
+      else if (!strncmp(after[4], "KERBEROS", 8))
+       {
+         id_to_name(id, STRINGS_TABLE, &name);
+         strcpy(after[5], name);
+       }
+      break;
     case MCMAP_TABLE:
       strcpy(after[0], argv[0]);
       strcpy(after[1], argv[1]);
       afterc = 2;
       break;
+    case MCNTMAP_TABLE:
+      strcpy(after[0], argv[0]);
+      strcpy(after[1], argv[1]);
+      name_to_id(after[0], MACHINE_TABLE, &id);
+      sprintf(after[2], "%d", id);
+      name_to_id(after[1], CONTAINERS_TABLE, &id);
+      sprintf(after[3], "%d", id);
+      afterc = 4;
+      break;
     case SVC_TABLE:
       strcpy(after[0], argv[0]);
       strcpy(after[1], argv[1]);
@@ -325,6 +399,14 @@ void incremental_after(enum tables table, char *qual, char **argv)
          EXEC SQL SELECT list_id INTO :after[9] FROM list
            WHERE name = :name;
        }
+      else if (!strcmp(after[1], "MACHINE"))
+       {
+         id_to_name(id, MACHINE_TABLE, &name2);
+         EXEC SQL SELECT list_id INTO :after[9] FROM list
+           WHERE name = :name;
+         sprintf(after[10], "%d", id);
+         afterc = 11;
+       }
       strcpy(after[2], name2);
       free(name);
       free(name2);
This page took 0.291374 seconds and 4 git commands to generate.