diff --git a/warden_server/warden_3.0_postgres.sql b/warden_server/warden_3.0_postgres.sql index 40cd0f2625f65ed775ea1ff97947bf1ff2806053..7ccb1dca45fba777e649084efec3cbdf064f8c17 100644 --- a/warden_server/warden_3.0_postgres.sql +++ b/warden_server/warden_3.0_postgres.sql @@ -1,6 +1,6 @@ SET TimeZone='+00:00'; -CREATE COLLATION case_insensitive ( +CREATE COLLATION IF NOT EXISTS case_insensitive ( provider = icu, locale = 'und-u-ks-level2', deterministic = false @@ -18,14 +18,14 @@ CREATE COLLATION case_insensitive ( -- Table structure for table "categories" -- -CREATE TABLE "categories" ( +CREATE TABLE IF NOT EXISTS "categories" ( "id" int NOT NULL UNIQUE CHECK ("id" >= 0), "category" text NOT NULL COLLATE case_insensitive, "subcategory" text DEFAULT NULL COLLATE case_insensitive, "cat_subcat" text NOT NULL COLLATE case_insensitive ); -CREATE INDEX "cat_sub" ON "categories" ("cat_subcat"); +CREATE INDEX IF NOT EXISTS "cat_sub" ON "categories" ("cat_subcat"); -- -------------------------------------------------------- @@ -33,7 +33,7 @@ CREATE INDEX "cat_sub" ON "categories" ("cat_subcat"); -- Table structure for table "clients" -- -CREATE TABLE "clients" ( +CREATE TABLE IF NOT EXISTS "clients" ( "id" SERIAL PRIMARY KEY, "registered" timestamp NOT NULL DEFAULT '1970-01-01 00:00:00', "requestor" text NOT NULL COLLATE case_insensitive, @@ -48,8 +48,8 @@ CREATE TABLE "clients" ( "test" smallint NOT NULL DEFAULT '0' CHECK ("test" >= 0) ); -CREATE INDEX "clients_1" ON "clients" ("valid", "secret", "hostname"); -CREATE INDEX "clients_2" ON "clients" ("valid", "name"); +CREATE INDEX IF NOT EXISTS "clients_1" ON "clients" ("valid", "secret", "hostname"); +CREATE INDEX IF NOT EXISTS "clients_2" ON "clients" ("valid", "name"); -- -------------------------------------------------------- @@ -57,18 +57,16 @@ CREATE INDEX "clients_2" ON "clients" ("valid", "name"); -- Table structure for table "events" -- -CREATE TABLE "events" ( - "id" BIGSERIAL PRIMARY KEY, +CREATE TABLE IF NOT EXISTS "events" ( + "id" bigint PRIMARY KEY GENERATED ALWAYS AS IDENTITY (MINVALUE 2), "received" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "client_id" int NOT NULL REFERENCES "clients" ("id"), "data" bytea NOT NULL, "valid" smallint NOT NULL DEFAULT '1' CHECK ("valid" >= 0) ); -CREATE INDEX "id" ON "events" ("id", "client_id"); -CREATE INDEX "received" ON "events" ("received"); - -SELECT nextval('events_id_seq'); -- AUTO_INCREMENT = 2 +CREATE INDEX IF NOT EXISTS "id" ON "events" ("id", "client_id"); +CREATE INDEX IF NOT EXISTS "received" ON "events" ("received"); -- -------------------------------------------------------- @@ -76,28 +74,27 @@ SELECT nextval('events_id_seq'); -- AUTO_INCREMENT = 2 -- Table structure for table "event_category_mapping" -- -CREATE TABLE "event_category_mapping" ( +CREATE TABLE IF NOT EXISTS "event_category_mapping" ( "event_id" bigint NOT NULL REFERENCES "events" ("id") ON DELETE CASCADE, "category_id" int NOT NULL, PRIMARY KEY ("event_id", "category_id"), CONSTRAINT "event_category_mapping_category_id_fk" FOREIGN KEY ("category_id") REFERENCES "categories" ("id") ); - -- -------------------------------------------------------- -- -- Table structure for table "last_events" -- -CREATE TABLE "last_events" ( +CREATE TABLE IF NOT EXISTS "last_events" ( "id" SERIAL PRIMARY KEY, "client_id" int NOT NULL REFERENCES "clients" ("id"), "event_id" bigint REFERENCES "events" ("id"), "timestamp" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ); -CREATE INDEX "client_id" ON "last_events" ("client_id", "event_id"); +CREATE INDEX IF NOT EXISTS "client_id" ON "last_events" ("client_id", "event_id"); -- -------------------------------------------------------- @@ -105,13 +102,13 @@ CREATE INDEX "client_id" ON "last_events" ("client_id", "event_id"); -- Table structure for table "tags" -- -CREATE TABLE "tags" ( +CREATE TABLE IF NOT EXISTS "tags" ( "id" int NOT NULL UNIQUE CHECK ("id" >= 0), "tag" text NOT NULL COLLATE case_insensitive ); -CREATE INDEX "id_tag_name" ON "tags" ("id", "tag"); -CREATE INDEX "tag_name" ON "tags" ("tag"); +CREATE INDEX IF NOT EXISTS "id_tag_name" ON "tags" ("id", "tag"); +CREATE INDEX IF NOT EXISTS "tag_name" ON "tags" ("tag"); -- -------------------------------------------------------- @@ -119,7 +116,7 @@ CREATE INDEX "tag_name" ON "tags" ("tag"); -- Table structure for table "event_tag_mapping" -- -CREATE TABLE "event_tag_mapping" ( +CREATE TABLE IF NOT EXISTS "event_tag_mapping" ( "event_id" bigint NOT NULL REFERENCES "events" ("id") ON DELETE CASCADE, "tag_id" int NOT NULL, PRIMARY KEY ("event_id", "tag_id"),