summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentQueryBuilder.java33
-rw-r--r--docs/release-notes.rst1
-rw-r--r--integration-test/pom.xml5
-rw-r--r--integration-test/src/test/groovy/org/onap/cps/integration/base/CpsIntegrationSpecBase.groovy48
-rw-r--r--integration-test/src/test/groovy/org/onap/cps/integration/base/FunctionalSpecBase.groovy2
-rw-r--r--integration-test/src/test/groovy/org/onap/cps/integration/base/TestConfig.groovy131
-rw-r--r--integration-test/src/test/resources/application.yml96
-rw-r--r--integration-test/src/test/resources/liquibase/test-changelog.yaml628
8 files changed, 133 insertions, 811 deletions
diff --git a/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentQueryBuilder.java b/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentQueryBuilder.java
index e62471b005..b2014757d7 100644
--- a/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentQueryBuilder.java
+++ b/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentQueryBuilder.java
@@ -1,6 +1,6 @@
/*
* ============LICENSE_START=======================================================
- * Copyright (C) 2022-2023 Nordix Foundation
+ * Copyright (C) 2022-2024 Nordix Foundation
* Modifications Copyright (C) 2023 TechMahindra Ltd.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -92,7 +92,8 @@ public class FragmentQueryBuilder {
sqlStringBuilder.append("SELECT distinct(fragment.anchor_id) FROM fragment "
+ "JOIN anchor ON anchor.id = fragment.anchor_id WHERE dataspace_id = :dataspaceId");
queryParameters.put("dataspaceId", dataspaceEntity.getId());
- addXpathSearch(cpsPathQuery, sqlStringBuilder, queryParameters);
+ addAbsoluteParentXpathSearchCondition(cpsPathQuery, sqlStringBuilder, queryParameters, ACROSS_ALL_ANCHORS);
+ addXpathSearchCondition(cpsPathQuery, sqlStringBuilder, queryParameters);
addLeafConditions(cpsPathQuery, sqlStringBuilder);
addTextFunctionCondition(cpsPathQuery, sqlStringBuilder, queryParameters);
addContainsFunctionCondition(cpsPathQuery, sqlStringBuilder, queryParameters);
@@ -125,7 +126,8 @@ public class FragmentQueryBuilder {
sqlStringBuilder.append("SELECT * FROM fragment WHERE anchor_id = :anchorId");
queryParameters.put("anchorId", anchorEntity.getId());
}
- addXpathSearch(cpsPathQuery, sqlStringBuilder, queryParameters);
+ addAbsoluteParentXpathSearchCondition(cpsPathQuery, sqlStringBuilder, queryParameters, anchorEntity);
+ addXpathSearchCondition(cpsPathQuery, sqlStringBuilder, queryParameters);
addLeafConditions(cpsPathQuery, sqlStringBuilder);
addTextFunctionCondition(cpsPathQuery, sqlStringBuilder, queryParameters);
addContainsFunctionCondition(cpsPathQuery, sqlStringBuilder, queryParameters);
@@ -135,9 +137,9 @@ public class FragmentQueryBuilder {
return query;
}
- private static void addXpathSearch(final CpsPathQuery cpsPathQuery,
- final StringBuilder sqlStringBuilder,
- final Map<String, Object> queryParameters) {
+ private static void addXpathSearchCondition(final CpsPathQuery cpsPathQuery,
+ final StringBuilder sqlStringBuilder,
+ final Map<String, Object> queryParameters) {
sqlStringBuilder.append(" AND (xpath LIKE :escapedXpath OR "
+ "(xpath LIKE :escapedXpath||'[@%]' AND xpath NOT LIKE :escapedXpath||'[@%]/%[@%]'))");
if (CpsPathPrefixType.ABSOLUTE.equals(cpsPathQuery.getCpsPathPrefixType())) {
@@ -147,6 +149,25 @@ public class FragmentQueryBuilder {
}
}
+ private static void addAbsoluteParentXpathSearchCondition(final CpsPathQuery cpsPathQuery,
+ final StringBuilder sqlStringBuilder,
+ final Map<String, Object> queryParameters,
+ final AnchorEntity anchorEntity) {
+ if (CpsPathPrefixType.ABSOLUTE.equals(cpsPathQuery.getCpsPathPrefixType())) {
+ if (cpsPathQuery.getNormalizedParentPath().isEmpty()) {
+ sqlStringBuilder.append(" AND parent_id IS NULL");
+ } else {
+ if (anchorEntity == ACROSS_ALL_ANCHORS) {
+ sqlStringBuilder.append(" AND parent_id IN (SELECT id FROM fragment WHERE xpath = :parentXpath)");
+ } else {
+ sqlStringBuilder.append(" AND parent_id = (SELECT id FROM fragment WHERE xpath = :parentXpath"
+ + " AND anchor_id = :anchorId)");
+ }
+ queryParameters.put("parentXpath", cpsPathQuery.getNormalizedParentPath());
+ }
+ }
+ }
+
private static void addPaginationCondition(final StringBuilder sqlStringBuilder,
final Map<String, Object> queryParameters,
final PaginationOption paginationOption) {
diff --git a/docs/release-notes.rst b/docs/release-notes.rst
index 191a04d1aa..779a347332 100644
--- a/docs/release-notes.rst
+++ b/docs/release-notes.rst
@@ -75,6 +75,7 @@ Features
--------
- `CPS-1824 <https://jira.onap.org/browse/CPS-1824>`_ CPS Delta between 2 anchors.
- `CPS-2072 <https://jira.onap.org/browse/CPS-2072>`_ Add maven classifier to Spring Boot JAR.
+ - `CPS-1135 <https://jira.onap.org/browse/CPS-1135>`_ Extend CPS Module API to allow retrieval single module definition.
Notes
-----
diff --git a/integration-test/pom.xml b/integration-test/pom.xml
index 6947a94aaa..c3a5eee29c 100644
--- a/integration-test/pom.xml
+++ b/integration-test/pom.xml
@@ -78,11 +78,6 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.springframework.kafka</groupId>
- <artifactId>spring-kafka-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<scope>test</scope>
diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/base/CpsIntegrationSpecBase.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/base/CpsIntegrationSpecBase.groovy
index b59e0ff553..27a9877472 100644
--- a/integration-test/src/test/groovy/org/onap/cps/integration/base/CpsIntegrationSpecBase.groovy
+++ b/integration-test/src/test/groovy/org/onap/cps/integration/base/CpsIntegrationSpecBase.groovy
@@ -20,64 +20,54 @@
package org.onap.cps.integration.base
+import java.time.OffsetDateTime
import org.onap.cps.api.CpsAnchorService
import org.onap.cps.api.CpsDataService
import org.onap.cps.api.CpsDataspaceService
import org.onap.cps.api.CpsModuleService
import org.onap.cps.api.CpsQueryService
import org.onap.cps.integration.DatabaseTestContainer
-import org.onap.cps.spi.config.CpsSessionFactory
import org.onap.cps.spi.exceptions.DataspaceNotFoundException
import org.onap.cps.spi.model.DataNode
import org.onap.cps.spi.repository.DataspaceRepository
-import org.onap.cps.spi.impl.utils.CpsValidatorImpl
import org.onap.cps.spi.utils.SessionManager
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
import org.springframework.boot.autoconfigure.domain.EntityScan
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.context.annotation.ComponentScan
-import org.springframework.context.annotation.Lazy
import org.springframework.data.jpa.repository.config.EnableJpaRepositories
import org.testcontainers.spock.Testcontainers
import spock.lang.Shared
import spock.lang.Specification
-import java.time.OffsetDateTime
-
-@SpringBootTest(classes = [TestConfig, CpsValidatorImpl, SessionManager, CpsSessionFactory])
+@SpringBootTest(classes = [CpsDataspaceService])
@Testcontainers
@EnableAutoConfiguration
@EnableJpaRepositories(basePackageClasses = [DataspaceRepository])
-@ComponentScan(basePackages = ['org.onap.cps.api', 'org.onap.cps.spi.repository'])
+@ComponentScan(basePackages = ['org.onap.cps'])
@EntityScan('org.onap.cps.spi.entities')
-class CpsIntegrationSpecBase extends Specification {
+abstract class CpsIntegrationSpecBase extends Specification {
@Shared
DatabaseTestContainer databaseTestContainer = DatabaseTestContainer.getInstance()
@Autowired
- @Lazy
CpsDataspaceService cpsDataspaceService
@Autowired
- @Lazy
CpsAnchorService cpsAnchorService
@Autowired
- @Lazy
CpsDataService cpsDataService
@Autowired
- @Lazy
CpsModuleService cpsModuleService
@Autowired
- @Lazy
CpsQueryService cpsQueryService
@Autowired
- @Lazy
SessionManager sessionManager
def static GENERAL_TEST_DATASPACE = 'generalTestDataspace'
@@ -90,7 +80,7 @@ class CpsIntegrationSpecBase extends Specification {
if (!initialized) {
cpsDataspaceService.createDataspace(GENERAL_TEST_DATASPACE)
createStandardBookStoreSchemaSet(GENERAL_TEST_DATASPACE)
- initialized = true;
+ initialized = true
}
}
@@ -127,7 +117,7 @@ class CpsIntegrationSpecBase extends Specification {
def dataspaceExists(dataspaceName) {
try {
cpsDataspaceService.getDataspace(dataspaceName)
- } catch (DataspaceNotFoundException dataspaceNotFoundException) {
+ } catch (DataspaceNotFoundException ignored) {
return false
}
return true
@@ -141,29 +131,15 @@ class CpsIntegrationSpecBase extends Specification {
}
def createJsonArray(name, numberOfElements, keyName, keyValuePrefix, dataPerKey) {
- def json = '{"' + name + '":['
- (1..numberOfElements).each {
- json += '{"' + keyName + '":"' + keyValuePrefix + '-' + it + '"'
- if (!dataPerKey.isEmpty()) {
- json += ',' + dataPerKey
- }
- json += '}'
- if (it < numberOfElements) {
- json += ','
- }
- }
- json += ']}'
+ def innerJson = (1..numberOfElements).collect {
+ '{"' + keyName + '":"' + keyValuePrefix + '-' + it + '"' + (dataPerKey.empty? '': ',' + dataPerKey) + '}'
+ }.join(',')
+ return '{"' + name + '":[' + innerJson + ']}'
}
def createLeafList(name, numberOfElements, valuePrefix) {
- def json = '"' + name + '":['
- (1..numberOfElements).each {
- json += '"' + valuePrefix + '-' + it + '"'
- if (it < numberOfElements) {
- json += ','
- }
- }
- json += ']'
+ def innerJson = (1..numberOfElements).collect {'"' + valuePrefix + '-' + it + '"'}.join(',')
+ return '"' + name + '":[' + innerJson + ']'
}
}
diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/base/FunctionalSpecBase.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/base/FunctionalSpecBase.groovy
index b3b5842142..6929a2b678 100644
--- a/integration-test/src/test/groovy/org/onap/cps/integration/base/FunctionalSpecBase.groovy
+++ b/integration-test/src/test/groovy/org/onap/cps/integration/base/FunctionalSpecBase.groovy
@@ -23,7 +23,7 @@ package org.onap.cps.integration.base
import java.time.OffsetDateTime
-class FunctionalSpecBase extends CpsIntegrationSpecBase {
+abstract class FunctionalSpecBase extends CpsIntegrationSpecBase {
def static FUNCTIONAL_TEST_DATASPACE_1 = 'functionalTestDataspace1'
def static FUNCTIONAL_TEST_DATASPACE_2 = 'functionalTestDataspace2'
diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/base/TestConfig.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/base/TestConfig.groovy
deleted file mode 100644
index 69c2d17445..0000000000
--- a/integration-test/src/test/groovy/org/onap/cps/integration/base/TestConfig.groovy
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2023-2024 Nordix Foundation
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the 'License');
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an 'AS IS' BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.cps.integration.base
-
-import com.fasterxml.jackson.databind.ObjectMapper
-import org.onap.cps.api.impl.YangTextSchemaSourceSetCache
-import org.onap.cps.spi.CpsDataPersistenceService
-import org.onap.cps.spi.CpsModulePersistenceService
-import org.onap.cps.spi.impl.CpsAdminPersistenceServiceImpl
-import org.onap.cps.spi.impl.CpsDataPersistenceServiceImpl
-import org.onap.cps.spi.impl.CpsModulePersistenceServiceImpl
-import org.onap.cps.spi.repository.AnchorRepository
-import org.onap.cps.spi.repository.DataspaceRepository
-import org.onap.cps.spi.repository.FragmentRepository
-import org.onap.cps.spi.repository.ModuleReferenceRepository
-import org.onap.cps.spi.repository.SchemaSetRepository
-import org.onap.cps.spi.repository.YangResourceRepository
-import org.onap.cps.spi.utils.SessionManager
-import org.onap.cps.spi.utils.TimeLimiterProvider
-import org.onap.cps.utils.JsonObjectMapper
-import org.onap.cps.utils.YangParser
-import org.onap.cps.utils.YangParserHelper
-import org.onap.cps.yang.TimedYangTextSchemaSourceSetBuilder
-import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.context.annotation.Bean
-import org.springframework.context.annotation.Configuration
-import org.springframework.context.annotation.Lazy
-import spock.lang.Specification
-
-@Configuration
-class TestConfig extends Specification{
- @Autowired
- @Lazy
- DataspaceRepository dataspaceRepository
-
- @Autowired
- @Lazy
- AnchorRepository anchorRepository
-
- @Autowired
- @Lazy
- SchemaSetRepository schemaSetRepository
-
- @Autowired
- @Lazy
- YangResourceRepository yangResourceRepository
-
- @Autowired
- @Lazy
- FragmentRepository fragmentRepository
-
- @Autowired
- @Lazy
- ModuleReferenceRepository moduleReferenceRepository
-
- @Autowired
- @Lazy
- JsonObjectMapper jsonObjectMapper
-
- @Autowired
- @Lazy
- SessionManager sessionManager
-
- @Autowired
- @Lazy
- YangParserHelper yangParserHelper
-
- @Autowired
- @Lazy
- YangTextSchemaSourceSetCache YangTextSchemaSourceSetCache
-
-
- @Bean
- CpsAdminPersistenceServiceImpl cpsAdminPersistenceService() {
- new CpsAdminPersistenceServiceImpl(dataspaceRepository, anchorRepository, schemaSetRepository, yangResourceRepository)
- }
-
- @Bean
- CpsDataPersistenceService cpsDataPersistenceService() {
- return (CpsDataPersistenceService) new CpsDataPersistenceServiceImpl(dataspaceRepository, anchorRepository, fragmentRepository, jsonObjectMapper, sessionManager)
- }
-
- @Bean
- CpsModulePersistenceService cpsModulePersistenceService() {
- return (CpsModulePersistenceService) new CpsModulePersistenceServiceImpl(yangResourceRepository, schemaSetRepository, dataspaceRepository, moduleReferenceRepository)
- }
-
- @Bean
- JsonObjectMapper jsonObjectMapper() {
- return new JsonObjectMapper(new ObjectMapper())
- }
-
- @Bean
- YangParserHelper yangParserHelper() {
- return new YangParserHelper()
- }
-
- @Bean
- YangParser yangParser() {
- return new YangParser(yangParserHelper, yangTextSchemaSourceSetCache)
- }
-
- @Bean
- TimedYangTextSchemaSourceSetBuilder textSchemaSourceSetBuilder() {
- return new TimedYangTextSchemaSourceSetBuilder()
- }
-
- @Bean
- TimeLimiterProvider timeLimiterProvider() {
- return new TimeLimiterProvider()
- }
-
-}
diff --git a/integration-test/src/test/resources/application.yml b/integration-test/src/test/resources/application.yml
index 55560aa626..1a08e542b6 100644
--- a/integration-test/src/test/resources/application.yml
+++ b/integration-test/src/test/resources/application.yml
@@ -15,14 +15,24 @@
# SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END=========================================================
+rest:
+ api:
+ cps-base-path: /cps/api
+ ncmp-base-path: /ncmp
+ ncmp-inventory-base-path: /ncmpInventory
+
spring:
+ main:
+ banner-mode: off
+
+ application:
+ name: cps-integration-test
+
jpa:
- ddl-auto: create
- show-sql: false
properties:
hibernate.enable_lazy_load_no_trans: true
hibernate.dialect: org.hibernate.dialect.PostgreSQLDialect
- hibernate.format_sql: true
+ hibernate.format_sql: false
hibernate.show_sql: false
# Please ensure these values match those used in cps-application/src/main/resources/application.yml
hibernate.id.new_generator_mappings: true
@@ -34,6 +44,84 @@ spring:
password: ${DB_PASSWORD}
driverClassName: org.postgresql.Driver
initialization-mode: always
+ hikari:
+ minimumIdle: 5
+ maximumPoolSize: 80
+ idleTimeout: 60000
+ connectionTimeout: 120000
+ leakDetectionThreshold: 30000
+ pool-name: CpsDatabasePool
+
+ cache:
+ type: caffeine
+ cache-names: yangSchema
+ caffeine:
+ spec: maximumSize=10000,expireAfterAccess=10m
liquibase:
- change-log: classpath:liquibase/test-changelog.yaml
+ change-log: classpath:changelog/changelog-master.yaml
+
+ servlet:
+ multipart:
+ enabled: true
+ max-file-size: 100MB
+ max-request-size: 100MB
+
+ jackson:
+ default-property-inclusion: NON_NULL
+ serialization:
+ FAIL_ON_EMPTY_BEANS: false
+
+ sql:
+ init:
+ mode: ALWAYS
+
+notification:
+ enabled: false
+
+springdoc:
+ swagger-ui:
+ disable-swagger-default-url: true
+ urlsPrimaryName: cps-core
+ urls:
+ - name: cps-core
+ url: /api-docs/cps-core/openapi.yaml
+ - name: cps-ncmp
+ url: /api-docs/cps-ncmp/openapi.yaml
+ - name: cps-ncmp-inventory
+ url: /api-docs/cps-ncmp/openapi-inventory.yaml
+
+security:
+ # comma-separated uri patterns which do not require authorization
+ permit-uri: /actuator/**,/swagger-ui.html,/swagger-ui/**,/swagger-resources/**,/api-docs/**,/v3/api-docs/**
+ auth:
+ username: cps
+ password: cpsr0cks!
+
+# Actuator
+management:
+ endpoints:
+ web:
+ exposure:
+ include: info,health,loggers,prometheus
+ endpoint:
+ health:
+ show-details: always
+ # kubernetes probes: liveness and readiness
+ probes:
+ enabled: false
+
+logging:
+ format: text
+ level:
+ org:
+ springframework: INFO
+ onap:
+ cps: INFO
+
+hazelcast:
+ cluster-name: cps-and-ncmp-test-caches
+ mode:
+ kubernetes:
+ enabled: false
+ service-name: cps-and-ncmp-service
diff --git a/integration-test/src/test/resources/liquibase/test-changelog.yaml b/integration-test/src/test/resources/liquibase/test-changelog.yaml
deleted file mode 100644
index ba639ede01..0000000000
--- a/integration-test/src/test/resources/liquibase/test-changelog.yaml
+++ /dev/null
@@ -1,628 +0,0 @@
-# ============LICENSE_START=======================================================
-# Copyright (c) 2023-2024 Nordix Foundation.
-# ================================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ============LICENSE_END=========================================================
-
-databaseChangeLog:
- - changeSet:
- id: 1-1
- author: cps
- changes:
- - createTable:
- columns:
- - column:
- autoIncrement: true
- constraints:
- nullable: false
- primaryKey: true
- primaryKeyName: anchor_pkey
- name: id
- type: BIGINT
- - column:
- name: name
- type: TEXT
- - column:
- name: schema_set_id
- type: INTEGER
- - column:
- constraints:
- nullable: false
- name: dataspace_id
- type: INTEGER
- tableName: anchor
- - changeSet:
- id: 1-2
- author: cps
- changes:
- - createTable:
- columns:
- - column:
- constraints:
- nullable: false
- name: from_fragment_id
- type: BIGINT
- - column:
- constraints:
- nullable: false
- name: to_fragment_id
- type: BIGINT
- - column:
- constraints:
- nullable: false
- name: relation_type_id
- type: INTEGER
- - column:
- constraints:
- nullable: false
- name: from_rel_xpath
- type: TEXT
- - column:
- constraints:
- nullable: false
- name: to_rel_xpath
- type: TEXT
- tableName: relation
- - changeSet:
- id: 1-3
- author: cps
- changes:
- - createTable:
- columns:
- - column:
- constraints:
- nullable: false
- name: relation_type
- type: TEXT
- - column:
- autoIncrement: true
- constraints:
- nullable: false
- primaryKey: true
- primaryKeyName: relation_type_pkey
- name: id
- type: INTEGER
- tableName: relation_type
- - changeSet:
- id: 1-4
- author: cps
- changes:
- - createTable:
- columns:
- - column:
- autoIncrement: false
- constraints:
- nullable: false
- primaryKey: true
- primaryKeyName: fragment_pkey
- name: id
- type: BIGINT
- - column:
- constraints:
- nullable: false
- name: xpath
- type: TEXT
- - column:
- name: attributes
- type: JSONB
- - column:
- constraints:
- nullable: false
- name: anchor_id
- type: BIGINT
- - column:
- name: parent_id
- type: BIGINT
- - column:
- name: schema_node_id
- type: INTEGER
- tableName: fragment
- - createSequence:
- dataType: BIGINT
- incrementBy: 100
- sequenceName: fragment_id_seq
- startValue: 100
- - changeSet:
- id: 1-5
- author: cps
- changes:
- - createTable:
- columns:
- - column:
- autoIncrement: true
- constraints:
- nullable: false
- primaryKey: true
- primaryKeyName: schema_set_pkey
- name: id
- type: INTEGER
- - column:
- constraints:
- nullable: false
- name: name
- type: TEXT
- - column:
- constraints:
- nullable: false
- name: dataspace_id
- type: INTEGER
- tableName: schema_set
- - changeSet:
- id: 1-6
- author: cps
- changes:
- - createTable:
- columns:
- - column:
- autoIncrement: true
- constraints:
- nullable: false
- primaryKey: true
- primaryKeyName: yang_resource_pkey
- name: id
- type: INTEGER
- - column:
- constraints:
- nullable: false
- name: name
- type: TEXT
- - column:
- constraints:
- nullable: false
- name: content
- type: TEXT
- - column:
- constraints:
- nullable: false
- name: checksum
- type: TEXT
- tableName: yang_resource
- - changeSet:
- id: 1-7
- author: cps
- changes:
- - createTable:
- columns:
- - column:
- autoIncrement: true
- constraints:
- nullable: false
- primaryKey: true
- primaryKeyName: dataspace_pkey
- name: id
- type: INTEGER
- - column:
- constraints:
- nullable: false
- name: name
- type: TEXT
- tableName: dataspace
- - changeSet:
- id: 1-8
- author: cps
- changes:
- - createTable:
- columns:
- - column:
- constraints:
- nullable: false
- name: schema_node_identifier
- type: TEXT
- - column:
- autoIncrement: true
- constraints:
- nullable: false
- primaryKey: true
- primaryKeyName: schema_node_pkey
- name: id
- type: INTEGER
- tableName: schema_node
- - changeSet:
- id: 1-9
- author: cps
- changes:
- - createTable:
- columns:
- - column:
- constraints:
- nullable: false
- name: schema_set_id
- type: INTEGER
- - column:
- constraints:
- nullable: false
- name: yang_resource_id
- type: INTEGER
- tableName: schema_set_yang_resources
- - changeSet:
- id: 1-10
- author: cps
- changes:
- - createIndex:
- columns:
- - column:
- name: schema_set_id
- indexName: FKI_ANCHOR_SCHEMA_SET_ID_FK
- tableName: anchor
- - changeSet:
- id: 1-11
- author: cps
- changes:
- - addUniqueConstraint:
- columnNames: dataspace_id, name
- constraintName: anchor_dataspace_id_name_key
- tableName: anchor
- - changeSet:
- id: 1-12
- author: cps
- changes:
- - addForeignKeyConstraint:
- baseColumnNames: anchor_id
- baseTableName: fragment
- constraintName: fragment_anchor_id_fkey
- deferrable: false
- initiallyDeferred: false
- onDelete: NO ACTION
- onUpdate: NO ACTION
- referencedColumnNames: id
- referencedTableName: anchor
- validate: true
- - changeSet:
- id: 1-13
- author: cps
- changes:
- - createIndex:
- columns:
- - column:
- name: from_fragment_id
- indexName: FKI_RELATIONS_FROM_ID_FK
- tableName: relation
- - changeSet:
- id: 1-14
- author: cps
- changes:
- - createIndex:
- columns:
- - column:
- name: to_fragment_id
- indexName: FKI_RELATIONS_TO_ID_FK
- tableName: relation
- - changeSet:
- id: 1-15
- author: cps
- changes:
- - createIndex:
- columns:
- - column:
- name: relation_type_id
- indexName: FKI_RELATION_TYPE_ID_FK
- tableName: relation
- - changeSet:
- id: 1-16
- author: cps
- changes:
- - addPrimaryKey:
- columnNames: to_fragment_id, from_fragment_id, relation_type_id
- constraintName: relation_pkey
- tableName: relation
- - changeSet:
- id: 1-17
- author: cps
- changes:
- - createIndex:
- columns:
- - column:
- name: anchor_id
- indexName: FKI_FRAGMENT_ANCHOR_ID_FK
- tableName: fragment
- - changeSet:
- id: 1-19
- author: cps
- changes:
- - createIndex:
- columns:
- - column:
- name: parent_id
- indexName: FKI_FRAGMENT_PARENT_ID_FK
- tableName: fragment
- - changeSet:
- id: 1-20
- author: cps
- changes:
- - createIndex:
- columns:
- - column:
- name: schema_node_id
- indexName: FKI_SCHEMA_NODE_ID_TO_ID
- tableName: fragment
- - changeSet:
- id: 1-22
- author: cps
- changes:
- - addUniqueConstraint:
- columnNames: anchor_id, xpath
- constraintName: fragment_anchor_id_xpath_key
- tableName: fragment
- - changeSet:
- id: 1-23
- author: cps
- changes:
- - addForeignKeyConstraint:
- baseColumnNames: from_fragment_id
- baseTableName: relation
- constraintName: relation_from_fragment_id_fkey
- deferrable: false
- initiallyDeferred: false
- onDelete: NO ACTION
- onUpdate: NO ACTION
- referencedColumnNames: id
- referencedTableName: fragment
- validate: true
- - changeSet:
- id: 1-24
- author: cps
- changes:
- - addForeignKeyConstraint:
- baseColumnNames: to_fragment_id
- baseTableName: relation
- constraintName: relation_to_fragment_id_fkey
- deferrable: false
- initiallyDeferred: false
- onDelete: NO ACTION
- onUpdate: NO ACTION
- referencedColumnNames: id
- referencedTableName: fragment
- validate: true
- - changeSet:
- id: 1-25
- author: cps
- changes:
- - addUniqueConstraint:
- columnNames: name, dataspace_id
- constraintName: schema_set_name_dataspace_id_key
- tableName: schema_set
- - changeSet:
- id: 1-26
- author: cps
- changes:
- - addForeignKeyConstraint:
- baseColumnNames: schema_set_id
- baseTableName: schema_set_yang_resources
- constraintName: schema_set_resource
- deferrable: false
- initiallyDeferred: false
- onDelete: CASCADE
- onUpdate: NO ACTION
- referencedColumnNames: id
- referencedTableName: schema_set
- validate: true
- - changeSet:
- id: 1-27
- author: cps
- changes:
- - addUniqueConstraint:
- columnNames: checksum
- constraintName: yang_resource_checksum_key
- tableName: yang_resource
- - changeSet:
- id: 1-28
- author: cps
- changes:
- - addUniqueConstraint:
- columnNames: name
- constraintName: UQ_NAME
- tableName: dataspace
- - changeSet:
- id: 1-30
- author: cps
- changes:
- - addForeignKeyConstraint:
- baseColumnNames: dataspace_id
- baseTableName: schema_set
- constraintName: schema_set_dataspace
- deferrable: false
- initiallyDeferred: false
- onDelete: CASCADE
- onUpdate: CASCADE
- referencedColumnNames: id
- referencedTableName: dataspace
- validate: true
- - changeSet:
- id: 1-31
- author: cps
- changes:
- - createIndex:
- columns:
- - column:
- name: schema_node_identifier
- indexName: PERF_SCHEMA_NODE_SCHEMA_NODE_ID
- tableName: schema_node
- - changeSet:
- id: 1-32
- author: cps
- changes:
- - addForeignKeyConstraint:
- baseColumnNames: yang_resource_id
- baseTableName: schema_set_yang_resources
- constraintName: schema_set_yang_resources_yang_resource_id_fkey
- deferrable: false
- initiallyDeferred: false
- onDelete: NO ACTION
- onUpdate: NO ACTION
- referencedColumnNames: id
- referencedTableName: yang_resource
- validate: true
- - changeSet:
- id: 1-33
- author: cps
- changes:
- - addForeignKeyConstraint:
- baseColumnNames: dataspace_id
- baseTableName: anchor
- constraintName: anchor_dataspace_id_fkey
- deferrable: false
- initiallyDeferred: false
- onDelete: NO ACTION
- onUpdate: NO ACTION
- referencedColumnNames: id
- referencedTableName: dataspace
- validate: true
- - changeSet:
- id: 1-34
- author: cps
- changes:
- - addForeignKeyConstraint:
- baseColumnNames: schema_set_id
- baseTableName: anchor
- constraintName: anchor_schema_set_id_fkey
- deferrable: false
- initiallyDeferred: false
- onDelete: NO ACTION
- onUpdate: NO ACTION
- referencedColumnNames: id
- referencedTableName: schema_set
- validate: true
- - changeSet:
- id: 1-35
- author: cps
- changes:
- - addForeignKeyConstraint:
- baseColumnNames: relation_type_id
- baseTableName: relation
- constraintName: relation_relation_type_id_fkey
- deferrable: false
- initiallyDeferred: false
- onDelete: NO ACTION
- onUpdate: NO ACTION
- referencedColumnNames: id
- referencedTableName: relation_type
- validate: true
- - changeSet:
- id: 1-36
- author: cps
- changes:
- - addForeignKeyConstraint:
- baseColumnNames: parent_id
- baseTableName: fragment
- constraintName: fragment_parent_id_fkey
- deferrable: false
- initiallyDeferred: false
- onDelete: NO ACTION
- onUpdate: NO ACTION
- referencedColumnNames: id
- referencedTableName: fragment
- validate: true
- - changeSet:
- id: 1-37
- author: cps
- changes:
- - addForeignKeyConstraint:
- baseColumnNames: schema_node_id
- baseTableName: fragment
- constraintName: fragment_schema_node_id_fkey
- deferrable: false
- initiallyDeferred: false
- onDelete: NO ACTION
- onUpdate: NO ACTION
- referencedColumnNames: id
- referencedTableName: schema_node
- validate: true
-
-
- - changeSet:
- id: 1-38
- label: add-module-name-and-revision-column
- author: cps
- changes:
- - addColumn:
- tableName: yang_resource
- columns:
- - column:
- name: module_name
- type: TEXT
- - column:
- name: revision
- type: TEXT
-
- - changeSet:
- id: 1-39
- label: update-previous-data-module-name-and-revision
- author: cps
- changes:
- - sql:
- sql: update yang_resource set module_name = 'dummy_module_name', revision = '2021-08-04' where module_name is null and revision is null
- rollback:
- sql: update yang_resource set module_name = null, revision = null where module_name = 'dummy_module_name' and revision = '2021-08-04'
-
- - changeSet:
- author: cps
- label: yang-resource-rename-column
- id: 1-40
- changes:
- - renameColumn:
- tableName: yang_resource
- columnDataType: TEXT
- oldColumnName: name
- newColumnName: file_name
- rollback:
- - sql:
- sql: alter table yang_resource rename column file_name to name
-
- - changeSet:
- author: cps
- id: 1-41
- changes:
- - createIndex:
- columns:
- - column:
- name: schema_set_id
- indexName: FKI_SCHEMA_SET_YANG_RESOURCES_SCHEMA_SET_ID_FK
- tableName: schema_set_yang_resources
- rollback:
- - dropIndex:
- indexName: FKI_SCHEMA_SET_YANG_RESOURCES_SCHEMA_SET_ID_FK
- tableName: schema_set_yang_resources
-
- - changeSet:
- author: cps
- id: 1-42
- changes:
- - dropForeignKeyConstraint:
- baseTableName: fragment
- constraintName: fragment_parent_id_fkey
- - addForeignKeyConstraint:
- baseColumnNames: parent_id
- baseTableName: fragment
- constraintName: fragment_parent_id_fkey
- deferrable: false
- initiallyDeferred: false
- onDelete: CASCADE
- onUpdate: NO ACTION
- referencedColumnNames: id
- referencedTableName: fragment
- validate: true
- rollback:
- - dropForeignKeyConstraint:
- baseTableName: fragment
- constraintName: fragment_parent_id_fkey
- - addForeignKeyConstraint:
- baseColumnNames: parent_id
- baseTableName: fragment
- constraintName: fragment_parent_id_fkey
- deferrable: false
- initiallyDeferred: false
- onDelete: NO ACTION
- onUpdate: NO ACTION
- referencedColumnNames: id
- referencedTableName: fragment
- validate: true