From 1f83788651270f3ba9f83416b860f529e503103f Mon Sep 17 00:00:00 2001
From: lwardena <lasse.tjernaes.wardenaer@cern.ch>
Date: Wed, 23 Nov 2022 14:22:07 +0100
Subject: [PATCH] Add column IS_ACCESSIBLE to table TAPE_FILE

---
 catalogue/13.0/oracle_catalogue_schema.sql           |  4 +++-
 catalogue/13.0/postgres_catalogue_schema.sql         |  4 +++-
 catalogue/13.0/sqlite_catalogue_schema.sql           |  4 +++-
 catalogue/AllCatalogueSchema.hpp                     | 12 +++++++++---
 catalogue/common_catalogue_schema.sql                |  4 +++-
 catalogue/migrations/liquibase/oracle/12.0to13.0.sql | 10 +++++++++-
 .../migrations/liquibase/postgres/12.0to13.0.sql     | 10 +++++++++-
 7 files changed, 39 insertions(+), 9 deletions(-)

diff --git a/catalogue/13.0/oracle_catalogue_schema.sql b/catalogue/13.0/oracle_catalogue_schema.sql
index cd593d56cc..409a915926 100644
--- a/catalogue/13.0/oracle_catalogue_schema.sql
+++ b/catalogue/13.0/oracle_catalogue_schema.sql
@@ -410,13 +410,15 @@ CREATE TABLE TAPE_FILE(
   COPY_NB                  NUMERIC(3, 0)      CONSTRAINT TAPE_FILE_CN_NN   NOT NULL,
   CREATION_TIME            NUMERIC(20, 0)     CONSTRAINT TAPE_FILE_CT_NN   NOT NULL,
   ARCHIVE_FILE_ID          NUMERIC(20, 0)     CONSTRAINT TAPE_FILE_AFI_NN  NOT NULL,
+  IS_ACCESSIBLE            CHAR(1)        DEFAULT '1' CONSTRAINT TAPE_FILE_IA_NN NOT NULL,
   CONSTRAINT TAPE_FILE_PK PRIMARY KEY(VID, FSEQ),
   CONSTRAINT TAPE_FILE_TAPE_FK FOREIGN KEY(VID)
     REFERENCES TAPE(VID),
   CONSTRAINT TAPE_FILE_ARCHIVE_FILE_FK FOREIGN KEY(ARCHIVE_FILE_ID)
     REFERENCES ARCHIVE_FILE(ARCHIVE_FILE_ID),
   CONSTRAINT TAPE_FILE_VID_BLOCK_ID_UN UNIQUE(VID, BLOCK_ID),
-  CONSTRAINT TAPE_FILE_COPY_NB_GT_0_CK CHECK(COPY_NB > 0)
+  CONSTRAINT TAPE_FILE_COPY_NB_GT_0_CK CHECK(COPY_NB > 0),
+  CONSTRAINT TAPE_FILE_IA_BOOL_CK CHECK(IS_ACCESSIBLE IN ('0', '1'))
 );
 CREATE INDEX TAPE_FILE_VID_IDX ON TAPE_FILE(VID);
 CREATE INDEX TAPE_FILE_ARCHIVE_FILE_ID_IDX ON TAPE_FILE(ARCHIVE_FILE_ID);
diff --git a/catalogue/13.0/postgres_catalogue_schema.sql b/catalogue/13.0/postgres_catalogue_schema.sql
index ab50c210d1..d6ec0e8f61 100644
--- a/catalogue/13.0/postgres_catalogue_schema.sql
+++ b/catalogue/13.0/postgres_catalogue_schema.sql
@@ -392,13 +392,15 @@ CREATE TABLE TAPE_FILE(
   COPY_NB                  NUMERIC(3, 0)      CONSTRAINT TAPE_FILE_CN_NN   NOT NULL,
   CREATION_TIME            NUMERIC(20, 0)     CONSTRAINT TAPE_FILE_CT_NN   NOT NULL,
   ARCHIVE_FILE_ID          NUMERIC(20, 0)     CONSTRAINT TAPE_FILE_AFI_NN  NOT NULL,
+  IS_ACCESSIBLE            CHAR(1)        DEFAULT '1' CONSTRAINT TAPE_FILE_IA_NN NOT NULL,
   CONSTRAINT TAPE_FILE_PK PRIMARY KEY(VID, FSEQ),
   CONSTRAINT TAPE_FILE_TAPE_FK FOREIGN KEY(VID)
     REFERENCES TAPE(VID),
   CONSTRAINT TAPE_FILE_ARCHIVE_FILE_FK FOREIGN KEY(ARCHIVE_FILE_ID)
     REFERENCES ARCHIVE_FILE(ARCHIVE_FILE_ID),
   CONSTRAINT TAPE_FILE_VID_BLOCK_ID_UN UNIQUE(VID, BLOCK_ID),
-  CONSTRAINT TAPE_FILE_COPY_NB_GT_0_CK CHECK(COPY_NB > 0)
+  CONSTRAINT TAPE_FILE_COPY_NB_GT_0_CK CHECK(COPY_NB > 0),
+  CONSTRAINT TAPE_FILE_IA_BOOL_CK CHECK(IS_ACCESSIBLE IN ('0', '1'))
 );
 CREATE INDEX TAPE_FILE_VID_IDX ON TAPE_FILE(VID);
 CREATE INDEX TAPE_FILE_ARCHIVE_FILE_ID_IDX ON TAPE_FILE(ARCHIVE_FILE_ID);
diff --git a/catalogue/13.0/sqlite_catalogue_schema.sql b/catalogue/13.0/sqlite_catalogue_schema.sql
index e56e47e78f..95b1928ed9 100644
--- a/catalogue/13.0/sqlite_catalogue_schema.sql
+++ b/catalogue/13.0/sqlite_catalogue_schema.sql
@@ -364,13 +364,15 @@ CREATE TABLE TAPE_FILE(
   COPY_NB                  INTEGER      CONSTRAINT TAPE_FILE_CN_NN   NOT NULL,
   CREATION_TIME            INTEGER     CONSTRAINT TAPE_FILE_CT_NN   NOT NULL,
   ARCHIVE_FILE_ID          INTEGER     CONSTRAINT TAPE_FILE_AFI_NN  NOT NULL,
+  IS_ACCESSIBLE            CHAR(1)        DEFAULT '1' CONSTRAINT TAPE_FILE_IA_NN NOT NULL,
   CONSTRAINT TAPE_FILE_PK PRIMARY KEY(VID, FSEQ),
   CONSTRAINT TAPE_FILE_TAPE_FK FOREIGN KEY(VID)
     REFERENCES TAPE(VID),
   CONSTRAINT TAPE_FILE_ARCHIVE_FILE_FK FOREIGN KEY(ARCHIVE_FILE_ID)
     REFERENCES ARCHIVE_FILE(ARCHIVE_FILE_ID),
   CONSTRAINT TAPE_FILE_VID_BLOCK_ID_UN UNIQUE(VID, BLOCK_ID),
-  CONSTRAINT TAPE_FILE_COPY_NB_GT_0_CK CHECK(COPY_NB > 0)
+  CONSTRAINT TAPE_FILE_COPY_NB_GT_0_CK CHECK(COPY_NB > 0),
+  CONSTRAINT TAPE_FILE_IA_BOOL_CK CHECK(IS_ACCESSIBLE IN ('0', '1'))
 );
 CREATE INDEX TAPE_FILE_VID_IDX ON TAPE_FILE(VID);
 CREATE INDEX TAPE_FILE_ARCHIVE_FILE_ID_IDX ON TAPE_FILE(ARCHIVE_FILE_ID);
diff --git a/catalogue/AllCatalogueSchema.hpp b/catalogue/AllCatalogueSchema.hpp
index 6d94600d22..dbdd34b1ce 100644
--- a/catalogue/AllCatalogueSchema.hpp
+++ b/catalogue/AllCatalogueSchema.hpp
@@ -6842,13 +6842,15 @@ namespace catalogue{
   "  COPY_NB                  NUMERIC(3, 0)      CONSTRAINT TAPE_FILE_CN_NN   NOT NULL,"
   "  CREATION_TIME            NUMERIC(20, 0)     CONSTRAINT TAPE_FILE_CT_NN   NOT NULL,"
   "  ARCHIVE_FILE_ID          NUMERIC(20, 0)     CONSTRAINT TAPE_FILE_AFI_NN  NOT NULL,"
+  "  IS_ACCESSIBLE            CHAR(1)        DEFAULT '1' CONSTRAINT TAPE_FILE_IA_NN NOT NULL,"
   "  CONSTRAINT TAPE_FILE_PK PRIMARY KEY(VID, FSEQ),"
   "  CONSTRAINT TAPE_FILE_TAPE_FK FOREIGN KEY(VID)"
   "    REFERENCES TAPE(VID),"
   "  CONSTRAINT TAPE_FILE_ARCHIVE_FILE_FK FOREIGN KEY(ARCHIVE_FILE_ID)"
   "    REFERENCES ARCHIVE_FILE(ARCHIVE_FILE_ID),"
   "  CONSTRAINT TAPE_FILE_VID_BLOCK_ID_UN UNIQUE(VID, BLOCK_ID),"
-  "  CONSTRAINT TAPE_FILE_COPY_NB_GT_0_CK CHECK(COPY_NB > 0)"
+  "  CONSTRAINT TAPE_FILE_COPY_NB_GT_0_CK CHECK(COPY_NB > 0),"
+  "  CONSTRAINT TAPE_FILE_IA_BOOL_CK CHECK(IS_ACCESSIBLE IN ('0', '1'))"
   ");"
   "CREATE INDEX TAPE_FILE_VID_IDX ON TAPE_FILE(VID);"
   "CREATE INDEX TAPE_FILE_ARCHIVE_FILE_ID_IDX ON TAPE_FILE(ARCHIVE_FILE_ID);"
@@ -7328,13 +7330,15 @@ namespace catalogue{
   "  COPY_NB                  INTEGER      CONSTRAINT TAPE_FILE_CN_NN   NOT NULL,"
   "  CREATION_TIME            INTEGER     CONSTRAINT TAPE_FILE_CT_NN   NOT NULL,"
   "  ARCHIVE_FILE_ID          INTEGER     CONSTRAINT TAPE_FILE_AFI_NN  NOT NULL,"
+  "  IS_ACCESSIBLE            CHAR(1)        DEFAULT '1' CONSTRAINT TAPE_FILE_IA_NN NOT NULL,"
   "  CONSTRAINT TAPE_FILE_PK PRIMARY KEY(VID, FSEQ),"
   "  CONSTRAINT TAPE_FILE_TAPE_FK FOREIGN KEY(VID)"
   "    REFERENCES TAPE(VID),"
   "  CONSTRAINT TAPE_FILE_ARCHIVE_FILE_FK FOREIGN KEY(ARCHIVE_FILE_ID)"
   "    REFERENCES ARCHIVE_FILE(ARCHIVE_FILE_ID),"
   "  CONSTRAINT TAPE_FILE_VID_BLOCK_ID_UN UNIQUE(VID, BLOCK_ID),"
-  "  CONSTRAINT TAPE_FILE_COPY_NB_GT_0_CK CHECK(COPY_NB > 0)"
+  "  CONSTRAINT TAPE_FILE_COPY_NB_GT_0_CK CHECK(COPY_NB > 0),"
+  "  CONSTRAINT TAPE_FILE_IA_BOOL_CK CHECK(IS_ACCESSIBLE IN ('0', '1'))"
   ");"
   "CREATE INDEX TAPE_FILE_VID_IDX ON TAPE_FILE(VID);"
   "CREATE INDEX TAPE_FILE_ARCHIVE_FILE_ID_IDX ON TAPE_FILE(ARCHIVE_FILE_ID);"
@@ -7839,13 +7843,15 @@ namespace catalogue{
   "  COPY_NB                  NUMERIC(3, 0)      CONSTRAINT TAPE_FILE_CN_NN   NOT NULL,"
   "  CREATION_TIME            NUMERIC(20, 0)     CONSTRAINT TAPE_FILE_CT_NN   NOT NULL,"
   "  ARCHIVE_FILE_ID          NUMERIC(20, 0)     CONSTRAINT TAPE_FILE_AFI_NN  NOT NULL,"
+  "  IS_ACCESSIBLE            CHAR(1)        DEFAULT '1' CONSTRAINT TAPE_FILE_IA_NN NOT NULL,"
   "  CONSTRAINT TAPE_FILE_PK PRIMARY KEY(VID, FSEQ),"
   "  CONSTRAINT TAPE_FILE_TAPE_FK FOREIGN KEY(VID)"
   "    REFERENCES TAPE(VID),"
   "  CONSTRAINT TAPE_FILE_ARCHIVE_FILE_FK FOREIGN KEY(ARCHIVE_FILE_ID)"
   "    REFERENCES ARCHIVE_FILE(ARCHIVE_FILE_ID),"
   "  CONSTRAINT TAPE_FILE_VID_BLOCK_ID_UN UNIQUE(VID, BLOCK_ID),"
-  "  CONSTRAINT TAPE_FILE_COPY_NB_GT_0_CK CHECK(COPY_NB > 0)"
+  "  CONSTRAINT TAPE_FILE_COPY_NB_GT_0_CK CHECK(COPY_NB > 0),"
+  "  CONSTRAINT TAPE_FILE_IA_BOOL_CK CHECK(IS_ACCESSIBLE IN ('0', '1'))"
   ");"
   "CREATE INDEX TAPE_FILE_VID_IDX ON TAPE_FILE(VID);"
   "CREATE INDEX TAPE_FILE_ARCHIVE_FILE_ID_IDX ON TAPE_FILE(ARCHIVE_FILE_ID);"
diff --git a/catalogue/common_catalogue_schema.sql b/catalogue/common_catalogue_schema.sql
index b669c23a3c..170e508f1c 100644
--- a/catalogue/common_catalogue_schema.sql
+++ b/catalogue/common_catalogue_schema.sql
@@ -343,13 +343,15 @@ CREATE TABLE TAPE_FILE(
   COPY_NB                  UINT8TYPE      CONSTRAINT TAPE_FILE_CN_NN   NOT NULL,
   CREATION_TIME            UINT64TYPE     CONSTRAINT TAPE_FILE_CT_NN   NOT NULL,
   ARCHIVE_FILE_ID          UINT64TYPE     CONSTRAINT TAPE_FILE_AFI_NN  NOT NULL,
+  IS_ACCESSIBLE            CHAR(1)        DEFAULT '1' CONSTRAINT TAPE_FILE_IA_NN NOT NULL,
   CONSTRAINT TAPE_FILE_PK PRIMARY KEY(VID, FSEQ),
   CONSTRAINT TAPE_FILE_TAPE_FK FOREIGN KEY(VID)
     REFERENCES TAPE(VID),
   CONSTRAINT TAPE_FILE_ARCHIVE_FILE_FK FOREIGN KEY(ARCHIVE_FILE_ID)
     REFERENCES ARCHIVE_FILE(ARCHIVE_FILE_ID),
   CONSTRAINT TAPE_FILE_VID_BLOCK_ID_UN UNIQUE(VID, BLOCK_ID),
-  CONSTRAINT TAPE_FILE_COPY_NB_GT_0_CK CHECK(COPY_NB > 0)
+  CONSTRAINT TAPE_FILE_COPY_NB_GT_0_CK CHECK(COPY_NB > 0),
+  CONSTRAINT TAPE_FILE_IA_BOOL_CK CHECK(IS_ACCESSIBLE IN ('0', '1'))
 );
 CREATE INDEX TAPE_FILE_VID_IDX ON TAPE_FILE(VID);
 CREATE INDEX TAPE_FILE_ARCHIVE_FILE_ID_IDX ON TAPE_FILE(ARCHIVE_FILE_ID);
diff --git a/catalogue/migrations/liquibase/oracle/12.0to13.0.sql b/catalogue/migrations/liquibase/oracle/12.0to13.0.sql
index 397f46020b..f0290da52d 100644
--- a/catalogue/migrations/liquibase/oracle/12.0to13.0.sql
+++ b/catalogue/migrations/liquibase/oracle/12.0to13.0.sql
@@ -17,7 +17,15 @@ UPDATE CTA_CATALOGUE SET NEXT_SCHEMA_VERSION_MINOR=0;
 ALTER TABLE TAPE ADD CONSTRAINT TAPE_VID_CK CHECK(VID = UPPER(VID));
 --rollback ALTER TABLE TAPE DROP CONSTRAINT TAPE_VID_CK;
 
---changeset afonso:3 failOnError:true dbms:oracle
+--changeset lwardena:3 failOnError:true dbms:oracle
+--preconditions onFail:HALT onError:HALT
+--precondition-sql-check expectedResult:"12.0" SELECT CONCAT(CONCAT(CAST(SCHEMA_VERSION_MAJOR as VARCHAR(10)),'.'), CAST(SCHEMA_VERSION_MINOR AS VARCHAR(10))) AS CATALOGUE_VERSION FROM CTA_CATALOGUE;
+ALTER TABLE TAPE_FILE ADD IS_ACCESSIBLE CHAR(1) DEFAULT '1' CONSTRAINT TAPE_FILE_IA_NN NOT NULL;
+ALTER TABLE TAPE_FILE ADD CONSTRAINT TAPE_FILE_IA_BOOL_CK CHECK(IS_ACCESSIBLE IN ('0', '1'));
+--rollback ALTER TABLE TAPE_FILE DROP CONSTRAINT TAPE_FILE_IA_BOOL_CK;
+--rollback ALTER TABLE TAPE_FILE DROP COLUMN IS_ACCESSIBLE;
+
+--changeset afonso:4 failOnError:true dbms:oracle
 --preconditions onFail:HALT onError:HALT
 --precondition-sql-check expectedResult:"12.0" SELECT CONCAT(CONCAT(CAST(SCHEMA_VERSION_MAJOR as VARCHAR(10)),'.'), CAST(SCHEMA_VERSION_MINOR AS VARCHAR(10))) AS CATALOGUE_VERSION FROM CTA_CATALOGUE;
 UPDATE CTA_CATALOGUE SET STATUS='PRODUCTION';
diff --git a/catalogue/migrations/liquibase/postgres/12.0to13.0.sql b/catalogue/migrations/liquibase/postgres/12.0to13.0.sql
index 503e6c8c60..7dee8601a4 100644
--- a/catalogue/migrations/liquibase/postgres/12.0to13.0.sql
+++ b/catalogue/migrations/liquibase/postgres/12.0to13.0.sql
@@ -17,7 +17,15 @@ UPDATE CTA_CATALOGUE SET NEXT_SCHEMA_VERSION_MINOR=0;
 ALTER TABLE TAPE ADD CONSTRAINT TAPE_VID_CK CHECK(VID = UPPER(VID));
 --rollback ALTER TABLE TAPE DROP CONSTRAINT TAPE_VID_CK;
 
---changeset afonso:3 failOnError:true dbms:postgresql
+--changeset lwardena:3 failOnError:true dbms:postgresql
+--preconditions onFail:HALT onError:HALT
+--precondition-sql-check expectedResult:"12.0" SELECT CONCAT(CONCAT(CAST(SCHEMA_VERSION_MAJOR as VARCHAR(10)),'.'), CAST(SCHEMA_VERSION_MINOR AS VARCHAR(10))) AS CATALOGUE_VERSION FROM CTA_CATALOGUE;
+ALTER TABLE TAPE_FILE ADD IS_ACCESSIBLE CHAR(1) DEFAULT '1' CONSTRAINT TAPE_FILE_IA_NN NOT NULL;
+ALTER TABLE TAPE_FILE ADD CONSTRAINT TAPE_FILE_IA_BOOL_CK CHECK(IS_ACCESSIBLE IN ('0', '1'));
+--rollback ALTER TABLE TAPE_FILE DROP CONSTRAINT TAPE_FILE_IA_BOOL_CK;
+--rollback ALTER TABLE TAPE_FILE DROP COLUMN IS_ACCESSIBLE;
+
+--changeset afonso:4 failOnError:true dbms:postgresql
 --preconditions onFail:HALT onError:HALT
 --precondition-sql-check expectedResult:"12.0" SELECT CONCAT(CONCAT(CAST(SCHEMA_VERSION_MAJOR as VARCHAR(10)),'.'), CAST(SCHEMA_VERSION_MINOR AS VARCHAR(10))) AS CATALOGUE_VERSION FROM CTA_CATALOGUE;
 UPDATE CTA_CATALOGUE SET SCHEMA_VERSION_MAJOR=13;
-- 
GitLab