From ef0fdb4805132d84e0eb183776c611ede8d2393c Mon Sep 17 00:00:00 2001 From: Ann Priestman Date: Wed, 6 Sep 2017 12:12:17 -0400 Subject: [PATCH] Force hash set name/version combination to be unique. Force organization name to be unique. --- .../centralrepository/datamodel/PostgresEamDbSettings.java | 6 ++++-- .../centralrepository/datamodel/SqliteEamDbSettings.java | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/PostgresEamDbSettings.java b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/PostgresEamDbSettings.java index 32ed226a5f..d56a9097ad 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/PostgresEamDbSettings.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/PostgresEamDbSettings.java @@ -305,7 +305,8 @@ public final class PostgresEamDbSettings { createOrganizationsTable.append("org_name text NOT NULL,"); createOrganizationsTable.append("poc_name text NOT NULL,"); createOrganizationsTable.append("poc_email text NOT NULL,"); - createOrganizationsTable.append("poc_phone text NOT NULL"); + createOrganizationsTable.append("poc_phone text NOT NULL,"); + createOrganizationsTable.append("CONSTRAINT org_name_unique UNIQUE (org_name)"); createOrganizationsTable.append(")"); // NOTE: The organizations will only have a small number of rows, so @@ -346,7 +347,8 @@ public final class PostgresEamDbSettings { createReferenceSetsTable.append("set_name text NOT NULL,"); createReferenceSetsTable.append("version text NOT NULL,"); createReferenceSetsTable.append("import_date text NOT NULL,"); - createReferenceSetsTable.append("foreign key (org_id) references organizations(id) ON UPDATE SET NULL ON DELETE SET NULL"); + createReferenceSetsTable.append("foreign key (org_id) references organizations(id) ON UPDATE SET NULL ON DELETE SET NULL,"); + createReferenceSetsTable.append("CONSTRAINT hash_set_unique UNIQUE (set_name, version)"); createReferenceSetsTable.append(")"); String referenceSetsIdx1 = "CREATE INDEX IF NOT EXISTS reference_sets_org_id ON reference_sets (org_id)"; diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/SqliteEamDbSettings.java b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/SqliteEamDbSettings.java index 5c02d17ea0..24c078d283 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/SqliteEamDbSettings.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/SqliteEamDbSettings.java @@ -244,7 +244,8 @@ public final class SqliteEamDbSettings { createOrganizationsTable.append("org_name text NOT NULL,"); createOrganizationsTable.append("poc_name text NOT NULL,"); createOrganizationsTable.append("poc_email text NOT NULL,"); - createOrganizationsTable.append("poc_phone text NOT NULL"); + createOrganizationsTable.append("poc_phone text NOT NULL,"); + createOrganizationsTable.append("CONSTRAINT org_name_unique UNIQUE (org_name)"); createOrganizationsTable.append(")"); // NOTE: The organizations will only have a small number of rows, so @@ -286,7 +287,8 @@ public final class SqliteEamDbSettings { createReferenceSetsTable.append("set_name text NOT NULL,"); createReferenceSetsTable.append("version text NOT NULL,"); createReferenceSetsTable.append("import_date text NOT NULL,"); - createReferenceSetsTable.append("foreign key (org_id) references organizations(id) ON UPDATE SET NULL ON DELETE SET NULL"); + createReferenceSetsTable.append("foreign key (org_id) references organizations(id) ON UPDATE SET NULL ON DELETE SET NULL,"); + createReferenceSetsTable.append("CONSTRAINT hash_set_unique UNIQUE (set_name, version)"); createReferenceSetsTable.append(")"); String referenceSetsIdx1 = "CREATE INDEX IF NOT EXISTS reference_sets_org_id ON reference_sets (org_id)";