From 762031e8fd18d09ff7bcd17ed12158b2b6c75a57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n?= Date: Tue, 21 May 2024 12:46:44 +0200 Subject: [PATCH 1/3] vocabulary improvements --- .../vocabulary/controller/VocabularyApi.java | 4 ++- .../service/VocabularyServiceImpl.java | 23 +++++++++++++++ .../storage/InMemoryVocabularyIndex.java | 13 +++++++++ .../JsonObjectFromVocabularyTransformer.java | 7 ++++- .../JsonObjectToVocabularyTransformer.java | 8 ++++++ .../validator/VocabularyValidator.java | 2 ++ .../vocabulary-index-sql/docs/schema.sql | 2 ++ .../sql/index/SqlVocabularyIndex.java | 20 ++++++++++++- .../schema/BaseSqlDialectStatements.java | 4 +++ .../index/schema/VocabularyStatements.java | 8 ++++++ .../schema/postgres/VocabularyMapping.java | 2 ++ resources/sql/vocabulary-schema.sql | 2 ++ .../spi/vocabulary/VocabularyIndex.java | 8 ++++++ .../spi/vocabulary/domain/Vocabulary.java | 28 +++++++++++++++++++ 14 files changed, 128 insertions(+), 3 deletions(-) diff --git a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/controller/VocabularyApi.java b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/controller/VocabularyApi.java index acb5a62..32475d3 100644 --- a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/controller/VocabularyApi.java +++ b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/controller/VocabularyApi.java @@ -125,7 +125,9 @@ record VocabularyOutputSchema( { "@id": "vocabularyId", "name": "vocabulary name", - "jsonSchema": "{ \\"title\\": \\"vocabulary\\", \\"type\\": \\"object\\", \\"properties\\": { \\"name\\": { \\"type\\": \\"string\\", \\"title\\": \\"Name\\" }, \\"dct:keyword\\": { \\"type\\": \\"array\\", \\"title\\": \\"Keywords\\", \\"items\\": { \\"type\\": \\"string\\" } } }, \\"required\\": [ \\"name\\" ], \\"@context\\": { \\"dct\\": \\"http:\\/\\/purl.org\\/dc\\/terms\\/\" } }" + "jsonSchema": "{ \\"title\\": \\"vocabulary\\", \\"type\\": \\"object\\", \\"properties\\": { \\"name\\": { \\"type\\": \\"string\\", \\"title\\": \\"Name\\" }, \\"dct:keyword\\": { \\"type\\": \\"array\\", \\"title\\": \\"Keywords\\", \\"items\\": { \\"type\\": \\"string\\" } } }, \\"required\\": [ \\"name\\" ], \\"@context\\": { \\"dct\\": \\"http:\\/\\/purl.org\\/dc\\/terms\\/\" } }", + "category": "dataset", + "defaultVocabulary": true } """; } diff --git a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/service/VocabularyServiceImpl.java b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/service/VocabularyServiceImpl.java index e72ed5c..e44f803 100644 --- a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/service/VocabularyServiceImpl.java +++ b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/service/VocabularyServiceImpl.java @@ -43,8 +43,19 @@ public ServiceResult> search() { @Override public ServiceResult create(Vocabulary vocabulary) { return transactionContext.execute(() -> { + // Managing default vocabulary + var defaultVocabulary = index.getDefaultVocabulary(); + + // Create new vocabulary var createResult = index.create(vocabulary); + if (createResult.succeeded()) { + // There is only a default vocabulary + if (defaultVocabulary != null && vocabulary.isDefaultVocabulary()) { + defaultVocabulary.setDefaultVocabulary(false); + index.updateVocabulary(defaultVocabulary); + } + return ServiceResult.success(vocabulary); } return ServiceResult.fromFailure(createResult); @@ -62,7 +73,19 @@ public ServiceResult delete(String vocabularyId) { @Override public ServiceResult update(Vocabulary vocabulary) { return transactionContext.execute(() -> { + // Managing default vocabulary + var defaultVocabulary = index.getDefaultVocabulary(); + + // Update vocabulary var updatedVocabulary = index.updateVocabulary(vocabulary); + + // There is only a default vocabulary + if (defaultVocabulary != null && vocabulary.isDefaultVocabulary() && + ! defaultVocabulary.getId().equals(vocabulary.getId())) { + defaultVocabulary.setDefaultVocabulary(false); + index.updateVocabulary(defaultVocabulary); + } + return ServiceResult.from(updatedVocabulary); }); } diff --git a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/storage/InMemoryVocabularyIndex.java b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/storage/InMemoryVocabularyIndex.java index 1ce1afb..27e3f3c 100644 --- a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/storage/InMemoryVocabularyIndex.java +++ b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/storage/InMemoryVocabularyIndex.java @@ -104,4 +104,17 @@ private Vocabulary delete(String vocabularyId) { return cache.remove(vocabularyId); } + @Override + public Vocabulary getDefaultVocabulary() { + lock.readLock().lock(); + try { + return cache.values().stream() + .filter(vocabulary -> vocabulary.isDefaultVocabulary()) + .findFirst() + .orElse(null); + } finally { + lock.readLock().unlock(); + } + } + } diff --git a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/transformer/JsonObjectFromVocabularyTransformer.java b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/transformer/JsonObjectFromVocabularyTransformer.java index 92599d5..7d44812 100644 --- a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/transformer/JsonObjectFromVocabularyTransformer.java +++ b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/transformer/JsonObjectFromVocabularyTransformer.java @@ -16,6 +16,9 @@ import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.EDC_VOCABULARY_TYPE; import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_JSON_SCHEMA; import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_NAME; +import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_CATEGORY; +import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_DEFAULT_VOCABULARY; + /** * Creates a JsonObject from a {@link Vocabulary} @@ -39,7 +42,9 @@ public JsonObjectFromVocabularyTransformer(JsonBuilderFactory jsonFactory, Objec .add(ID, vocabulary.getId()) .add(TYPE, EDC_VOCABULARY_TYPE) .add(PROPERTY_NAME, vocabulary.getName()) - .add(PROPERTY_JSON_SCHEMA, vocabulary.getJsonSchema()); + .add(PROPERTY_JSON_SCHEMA, vocabulary.getJsonSchema()) + .add(PROPERTY_CATEGORY, vocabulary.getCategory()) + .add(PROPERTY_DEFAULT_VOCABULARY, vocabulary.isDefaultVocabulary()); return builder.build(); } diff --git a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/transformer/JsonObjectToVocabularyTransformer.java b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/transformer/JsonObjectToVocabularyTransformer.java index be99616..989b458 100644 --- a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/transformer/JsonObjectToVocabularyTransformer.java +++ b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/transformer/JsonObjectToVocabularyTransformer.java @@ -9,6 +9,8 @@ import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_JSON_SCHEMA; import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_NAME; +import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_CATEGORY; +import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_DEFAULT_VOCABULARY; /** * Converts from an {@link Vocabulary} as a {@link JsonObject} in JSON-LD expanded form to an {@link Vocabulary}. @@ -30,9 +32,15 @@ public JsonObjectToVocabularyTransformer() { visitProperties(jsonObject, key -> switch (key) { case PROPERTY_NAME -> value -> builder.name(transformString(value, context)); case PROPERTY_JSON_SCHEMA -> value -> builder.jsonSchema(transformString(value, context)); + case PROPERTY_CATEGORY -> value -> builder.category(transformString(value, context)); + case PROPERTY_DEFAULT_VOCABULARY -> value -> builder.defaultVocabulary(transformBoolean(value, context)); default -> doNothing(); }); + if (!jsonObject.containsKey(PROPERTY_DEFAULT_VOCABULARY)) { + builder.defaultVocabulary(false); + } + return builderResult(builder::build, context); } diff --git a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/validator/VocabularyValidator.java b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/validator/VocabularyValidator.java index 1b1753c..e7d0723 100644 --- a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/validator/VocabularyValidator.java +++ b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/validator/VocabularyValidator.java @@ -8,6 +8,7 @@ import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_JSON_SCHEMA; import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_NAME; +import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_CATEGORY; /** * Validator for Vocabulary @@ -21,6 +22,7 @@ public static Validator instance() { return JsonObjectValidator.newValidator() .verifyId(OptionalIdNotBlank::new) .verify(PROPERTY_NAME, MandatoryObject::new) + .verify(PROPERTY_CATEGORY, MandatoryObject::new) .verify(PROPERTY_JSON_SCHEMA, MandatoryJsonField::new) .build(); } diff --git a/extensions/vocabulary-index-sql/docs/schema.sql b/extensions/vocabulary-index-sql/docs/schema.sql index e6bd609..2208b90 100644 --- a/extensions/vocabulary-index-sql/docs/schema.sql +++ b/extensions/vocabulary-index-sql/docs/schema.sql @@ -5,6 +5,8 @@ CREATE TABLE IF NOT EXISTS edc_vocabulary created_at BIGINT NOT NULL, json_schema JSON DEFAULT '{}', name VARCHAR NOT NULL, + category VARCHAR NOT NULL, + default_vocabulary BOOLEAN DEFAULT FALSE, PRIMARY KEY (id) ); diff --git a/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/SqlVocabularyIndex.java b/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/SqlVocabularyIndex.java index e2207c4..db63787 100644 --- a/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/SqlVocabularyIndex.java +++ b/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/SqlVocabularyIndex.java @@ -74,7 +74,7 @@ public StoreResult create(Vocabulary vocabulary) { return transactionContext.execute(() -> { try (var connection = getConnection()) { if (existsById(vocabularyId, connection)) { - var msg = format(VocabularyIndex.VOCABULARY_NOT_FOUND_TEMPLATE, vocabularyId); + var msg = format(VocabularyIndex.VOCABULARY_EXISTS_TEMPLATE, vocabularyId); return StoreResult.alreadyExists(msg); } @@ -82,6 +82,8 @@ public StoreResult create(Vocabulary vocabulary) { vocabularyId, vocabulary.getCreatedAt(), vocabulary.getName(), + vocabulary.getCategory(), + vocabulary.isDefaultVocabulary(), toJson(vocabulary.getJsonSchema()) ); @@ -121,6 +123,8 @@ public StoreResult updateVocabulary(Vocabulary vocabulary) { queryExecutor.execute(connection, vocabularyStatements.getUpdateVocabularyTemplate(), vocabulary.getName(), toJson(vocabulary.getJsonSchema()), + vocabulary.getCategory(), + vocabulary.isDefaultVocabulary(), vocabularyId ); @@ -134,6 +138,18 @@ public StoreResult updateVocabulary(Vocabulary vocabulary) { }); } + @Override + public Vocabulary getDefaultVocabulary() { + try (var connection = getConnection()) { + var querySpec = QuerySpec.Builder.newInstance().filter(criterion("default_vocabulary", "=", true)).build(); + var statement = vocabularyStatements.createQuery(querySpec); + return queryExecutor.query(connection, true, this::mapVocabulary, statement.getQueryAsString(), statement.getParameters()) + .findFirst().orElse(null); + } catch (SQLException e) { + throw new EdcPersistenceException(e); + } + } + private int mapRowCount(ResultSet resultSet) throws SQLException { return resultSet.getInt(vocabularyStatements.getCountVariableName()); } @@ -150,6 +166,8 @@ private Vocabulary mapVocabulary(ResultSet resultSet) throws SQLException { .id(resultSet.getString(vocabularyStatements.getVocabularyIdColumn())) .createdAt(resultSet.getLong(vocabularyStatements.getCreatedAtColumn())) .name(resultSet.getString(vocabularyStatements.getNameColumn())) + .category(resultSet.getString(vocabularyStatements.getCategoryColumn())) + .defaultVocabulary(resultSet.getBoolean(vocabularyStatements.getDefaultVocabularyColumn())) .jsonSchema(resultSet.getString(vocabularyStatements.getJsonSchemaColumn())) .build(); } diff --git a/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/BaseSqlDialectStatements.java b/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/BaseSqlDialectStatements.java index 19e2fda..898b1e6 100644 --- a/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/BaseSqlDialectStatements.java +++ b/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/BaseSqlDialectStatements.java @@ -24,6 +24,8 @@ public String getInsertVocabularyTemplate() { .column(getVocabularyIdColumn()) .column(getCreatedAtColumn()) .column(getNameColumn()) + .column(getCategoryColumn()) + .column(getDefaultVocabularyColumn()) .jsonColumn(getJsonSchemaColumn()) .insertInto(getVocabularyTable()); } @@ -33,6 +35,8 @@ public String getUpdateVocabularyTemplate() { return executeStatement() .column(getNameColumn()) .jsonColumn(getJsonSchemaColumn()) + .column(getCategoryColumn()) + .column(getDefaultVocabularyColumn()) .update(getVocabularyTable(), getVocabularyIdColumn()); } diff --git a/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/VocabularyStatements.java b/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/VocabularyStatements.java index fece7d0..4bfb0c0 100644 --- a/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/VocabularyStatements.java +++ b/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/VocabularyStatements.java @@ -33,6 +33,14 @@ default String getJsonSchemaColumn() { return "json_schema"; } + default String getCategoryColumn() { + return "category"; + } + + default String getDefaultVocabularyColumn() { + return "default_vocabulary"; + } + default String getCreatedAtColumn() { return "created_at"; } diff --git a/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/postgres/VocabularyMapping.java b/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/postgres/VocabularyMapping.java index 9df69b4..5790fc8 100644 --- a/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/postgres/VocabularyMapping.java +++ b/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/postgres/VocabularyMapping.java @@ -14,6 +14,8 @@ public VocabularyMapping(VocabularyStatements statements) { add("id", statements.getVocabularyIdColumn()); add("createdAt", statements.getCreatedAtColumn()); add("name", statements.getNameColumn()); + add("category", statements.getCategoryColumn()); + add("default_vocabulary", statements.getDefaultVocabularyColumn()); add("json_schema", new JsonFieldTranslator(statements.getJsonSchemaColumn())); } diff --git a/resources/sql/vocabulary-schema.sql b/resources/sql/vocabulary-schema.sql index e6bd609..2208b90 100644 --- a/resources/sql/vocabulary-schema.sql +++ b/resources/sql/vocabulary-schema.sql @@ -5,6 +5,8 @@ CREATE TABLE IF NOT EXISTS edc_vocabulary created_at BIGINT NOT NULL, json_schema JSON DEFAULT '{}', name VARCHAR NOT NULL, + category VARCHAR NOT NULL, + default_vocabulary BOOLEAN DEFAULT FALSE, PRIMARY KEY (id) ); diff --git a/spi/vocabulary-spi/src/main/java/org/upm/inesdata/spi/vocabulary/VocabularyIndex.java b/spi/vocabulary-spi/src/main/java/org/upm/inesdata/spi/vocabulary/VocabularyIndex.java index 4bf45b4..dc3f408 100644 --- a/spi/vocabulary-spi/src/main/java/org/upm/inesdata/spi/vocabulary/VocabularyIndex.java +++ b/spi/vocabulary-spi/src/main/java/org/upm/inesdata/spi/vocabulary/VocabularyIndex.java @@ -58,4 +58,12 @@ public interface VocabularyIndex { */ StoreResult updateVocabulary(Vocabulary vocabulary); + /** + * Fetches the default {@link Vocabulary} from the metadata backend. + * + * @return The {@link Vocabulary} if one was found, or null otherwise. + * @throws NullPointerException If {@code vocabularyId} was null or empty. + */ + Vocabulary getDefaultVocabulary(); + } diff --git a/spi/vocabulary-spi/src/main/java/org/upm/inesdata/spi/vocabulary/domain/Vocabulary.java b/spi/vocabulary-spi/src/main/java/org/upm/inesdata/spi/vocabulary/domain/Vocabulary.java index b2f25ae..27c159a 100644 --- a/spi/vocabulary-spi/src/main/java/org/upm/inesdata/spi/vocabulary/domain/Vocabulary.java +++ b/spi/vocabulary-spi/src/main/java/org/upm/inesdata/spi/vocabulary/domain/Vocabulary.java @@ -20,11 +20,15 @@ public class Vocabulary extends Entity { public static final String PROPERTY_ID = EDC_NAMESPACE + "id"; public static final String PROPERTY_NAME = EDC_NAMESPACE + "name"; public static final String PROPERTY_JSON_SCHEMA = EDC_NAMESPACE + "jsonSchema"; + public static final String PROPERTY_CATEGORY = EDC_NAMESPACE + "category"; + public static final String PROPERTY_DEFAULT_VOCABULARY = EDC_NAMESPACE + "defaultVocabulary"; public static final String EDC_VOCABULARY_TYPE = EDC_NAMESPACE + "Vocabulary"; private String name; private String jsonSchema; + private String category; + private boolean defaultVocabulary; private Vocabulary() { } @@ -37,11 +41,25 @@ public String getJsonSchema() { return jsonSchema; } + public String getCategory() { + return category; + } + + public boolean isDefaultVocabulary() { + return defaultVocabulary; + } + + public void setDefaultVocabulary(boolean _defaultVocabulary) { + defaultVocabulary = _defaultVocabulary; + } + public Builder toBuilder() { return Vocabulary.Builder.newInstance() .id(id) .name(name) .jsonSchema(jsonSchema) + .category(category) + .defaultVocabulary(defaultVocabulary) .createdAt(createdAt); } @@ -74,6 +92,16 @@ public Builder jsonSchema(String jsonSchema) { return self(); } + public Builder category(String category) { + entity.category = category; + return self(); + } + + public Builder defaultVocabulary(boolean defaultVocabulary) { + entity.defaultVocabulary = defaultVocabulary; + return self(); + } + @Override public Builder createdAt(long value) { entity.createdAt = value; From 8bb6b9337a05ee739402cccfa5a85519e0f2e933 Mon Sep 17 00:00:00 2001 From: "GRUPOGMV\\ssis" Date: Wed, 22 May 2024 14:18:35 +0200 Subject: [PATCH 2/3] 431555 Se elimina campo defaultVocabulary --- .../vocabulary/VocabularyApiExtension.java | 22 ++----------------- .../vocabulary/controller/VocabularyApi.java | 4 ++-- .../controller/VocabularyApiController.java | 4 +--- .../service/VocabularyServiceImpl.java | 21 ------------------ .../storage/InMemoryVocabularyIndex.java | 16 +------------- .../JsonObjectFromVocabularyTransformer.java | 8 ++----- .../JsonObjectToVocabularyTransformer.java | 8 +------ .../validator/MandatoryJsonField.java | 2 +- .../validator/VocabularyValidator.java | 2 +- .../sql/index/SqlVocabularyIndex.java | 18 +-------------- .../schema/BaseSqlDialectStatements.java | 4 +--- .../index/schema/VocabularyStatements.java | 4 ---- .../schema/postgres/VocabularyMapping.java | 1 - resources/sql/vocabulary-schema.sql | 3 +-- .../spi/vocabulary/VocabularyIndex.java | 10 +-------- .../spi/vocabulary/domain/Vocabulary.java | 15 ------------- 16 files changed, 15 insertions(+), 127 deletions(-) diff --git a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/VocabularyApiExtension.java b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/VocabularyApiExtension.java index 09b3e91..febe52e 100644 --- a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/VocabularyApiExtension.java +++ b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/VocabularyApiExtension.java @@ -23,11 +23,11 @@ import org.upm.inesdata.vocabulary.transformer.JsonObjectToVocabularyTransformer; import org.upm.inesdata.vocabulary.validator.VocabularyValidator; +import java.util.Map; + import static org.eclipse.edc.spi.constants.CoreConstants.JSON_LD; import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.EDC_VOCABULARY_TYPE; -import java.util.Map; - /** * Extension that provides an API for managing vocabularies */ @@ -74,14 +74,6 @@ public VocabularyService vocabularyService() { return new VocabularyServiceImpl(vocabularyIndex, transactionContext); } - /** - * Provides a default in memory vocabularyIndex - */ - @Provider(isDefault = true) - public VocabularyIndex defaultVocabularyIndex() { - return getVocabularyIndex(); - } - /** * Initializes the service */ @@ -107,14 +99,4 @@ public void initialize(ServiceExtensionContext context) { healthCheckService.addLivenessProvider(() -> successResult); } } - - /** - * Creates a InMemoryVocabularyIndex if not exists - */ - private InMemoryVocabularyIndex getVocabularyIndex() { - if (defaultVocabularyIndex == null) { - defaultVocabularyIndex = new InMemoryVocabularyIndex(); - } - return defaultVocabularyIndex; - } } diff --git a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/controller/VocabularyApi.java b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/controller/VocabularyApi.java index 32475d3..e96d394 100644 --- a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/controller/VocabularyApi.java +++ b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/controller/VocabularyApi.java @@ -13,6 +13,7 @@ import jakarta.json.JsonObject; import org.eclipse.edc.api.model.ApiCoreSchema; import org.eclipse.edc.connector.controlplane.contract.spi.types.offer.ContractOffer; +import org.upm.inesdata.spi.vocabulary.domain.Vocabulary; import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.ID; import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.TYPE; @@ -126,8 +127,7 @@ record VocabularyOutputSchema( "@id": "vocabularyId", "name": "vocabulary name", "jsonSchema": "{ \\"title\\": \\"vocabulary\\", \\"type\\": \\"object\\", \\"properties\\": { \\"name\\": { \\"type\\": \\"string\\", \\"title\\": \\"Name\\" }, \\"dct:keyword\\": { \\"type\\": \\"array\\", \\"title\\": \\"Keywords\\", \\"items\\": { \\"type\\": \\"string\\" } } }, \\"required\\": [ \\"name\\" ], \\"@context\\": { \\"dct\\": \\"http:\\/\\/purl.org\\/dc\\/terms\\/\" } }", - "category": "dataset", - "defaultVocabulary": true + "category": "dataset" } """; } diff --git a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/controller/VocabularyApiController.java b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/controller/VocabularyApiController.java index 48bc1d6..523115c 100644 --- a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/controller/VocabularyApiController.java +++ b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/controller/VocabularyApiController.java @@ -11,7 +11,7 @@ import jakarta.ws.rs.PathParam; import jakarta.ws.rs.Produces; import jakarta.ws.rs.core.MediaType; - +import org.eclipse.edc.api.model.IdResponse; import org.eclipse.edc.spi.EdcException; import org.eclipse.edc.spi.monitor.Monitor; import org.eclipse.edc.spi.result.Result; @@ -28,8 +28,6 @@ import static org.eclipse.edc.web.spi.exception.ServiceResultHandler.exceptionMapper; import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.EDC_VOCABULARY_TYPE; -import org.eclipse.edc.api.model.IdResponse; - /** * Implementation of the controller for {@link Vocabulary} managing. */ diff --git a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/service/VocabularyServiceImpl.java b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/service/VocabularyServiceImpl.java index e44f803..9ed1d0b 100644 --- a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/service/VocabularyServiceImpl.java +++ b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/service/VocabularyServiceImpl.java @@ -2,7 +2,6 @@ import org.eclipse.edc.spi.result.ServiceResult; import org.eclipse.edc.transaction.spi.TransactionContext; - import org.upm.inesdata.spi.vocabulary.VocabularyIndex; import org.upm.inesdata.spi.vocabulary.VocabularyService; import org.upm.inesdata.spi.vocabulary.domain.Vocabulary; @@ -43,19 +42,10 @@ public ServiceResult> search() { @Override public ServiceResult create(Vocabulary vocabulary) { return transactionContext.execute(() -> { - // Managing default vocabulary - var defaultVocabulary = index.getDefaultVocabulary(); - // Create new vocabulary var createResult = index.create(vocabulary); if (createResult.succeeded()) { - // There is only a default vocabulary - if (defaultVocabulary != null && vocabulary.isDefaultVocabulary()) { - defaultVocabulary.setDefaultVocabulary(false); - index.updateVocabulary(defaultVocabulary); - } - return ServiceResult.success(vocabulary); } return ServiceResult.fromFailure(createResult); @@ -73,19 +63,8 @@ public ServiceResult delete(String vocabularyId) { @Override public ServiceResult update(Vocabulary vocabulary) { return transactionContext.execute(() -> { - // Managing default vocabulary - var defaultVocabulary = index.getDefaultVocabulary(); - // Update vocabulary var updatedVocabulary = index.updateVocabulary(vocabulary); - - // There is only a default vocabulary - if (defaultVocabulary != null && vocabulary.isDefaultVocabulary() && - ! defaultVocabulary.getId().equals(vocabulary.getId())) { - defaultVocabulary.setDefaultVocabulary(false); - index.updateVocabulary(defaultVocabulary); - } - return ServiceResult.from(updatedVocabulary); }); } diff --git a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/storage/InMemoryVocabularyIndex.java b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/storage/InMemoryVocabularyIndex.java index 27e3f3c..d961d79 100644 --- a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/storage/InMemoryVocabularyIndex.java +++ b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/storage/InMemoryVocabularyIndex.java @@ -1,8 +1,8 @@ package org.upm.inesdata.vocabulary.storage; import org.eclipse.edc.spi.result.StoreResult; -import org.upm.inesdata.spi.vocabulary.domain.Vocabulary; import org.upm.inesdata.spi.vocabulary.VocabularyIndex; +import org.upm.inesdata.spi.vocabulary.domain.Vocabulary; import java.util.Map; import java.util.Objects; @@ -103,18 +103,4 @@ public StoreResult updateVocabulary(Vocabulary vocabulary) { private Vocabulary delete(String vocabularyId) { return cache.remove(vocabularyId); } - - @Override - public Vocabulary getDefaultVocabulary() { - lock.readLock().lock(); - try { - return cache.values().stream() - .filter(vocabulary -> vocabulary.isDefaultVocabulary()) - .findFirst() - .orElse(null); - } finally { - lock.readLock().unlock(); - } - } - } diff --git a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/transformer/JsonObjectFromVocabularyTransformer.java b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/transformer/JsonObjectFromVocabularyTransformer.java index 7d44812..811cec0 100644 --- a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/transformer/JsonObjectFromVocabularyTransformer.java +++ b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/transformer/JsonObjectFromVocabularyTransformer.java @@ -3,7 +3,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.json.JsonBuilderFactory; import jakarta.json.JsonObject; - import org.eclipse.edc.jsonld.spi.transformer.AbstractJsonLdTransformer; import org.eclipse.edc.transform.spi.TransformerContext; import org.jetbrains.annotations.NotNull; @@ -12,12 +11,10 @@ import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.ID; import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.TYPE; - import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.EDC_VOCABULARY_TYPE; +import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_CATEGORY; import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_JSON_SCHEMA; import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_NAME; -import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_CATEGORY; -import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_DEFAULT_VOCABULARY; /** @@ -43,8 +40,7 @@ public JsonObjectFromVocabularyTransformer(JsonBuilderFactory jsonFactory, Objec .add(TYPE, EDC_VOCABULARY_TYPE) .add(PROPERTY_NAME, vocabulary.getName()) .add(PROPERTY_JSON_SCHEMA, vocabulary.getJsonSchema()) - .add(PROPERTY_CATEGORY, vocabulary.getCategory()) - .add(PROPERTY_DEFAULT_VOCABULARY, vocabulary.isDefaultVocabulary()); + .add(PROPERTY_CATEGORY, vocabulary.getCategory()); return builder.build(); } diff --git a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/transformer/JsonObjectToVocabularyTransformer.java b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/transformer/JsonObjectToVocabularyTransformer.java index 989b458..b46d88e 100644 --- a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/transformer/JsonObjectToVocabularyTransformer.java +++ b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/transformer/JsonObjectToVocabularyTransformer.java @@ -7,10 +7,9 @@ import org.jetbrains.annotations.Nullable; import org.upm.inesdata.spi.vocabulary.domain.Vocabulary; +import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_CATEGORY; import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_JSON_SCHEMA; import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_NAME; -import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_CATEGORY; -import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_DEFAULT_VOCABULARY; /** * Converts from an {@link Vocabulary} as a {@link JsonObject} in JSON-LD expanded form to an {@link Vocabulary}. @@ -33,14 +32,9 @@ public JsonObjectToVocabularyTransformer() { case PROPERTY_NAME -> value -> builder.name(transformString(value, context)); case PROPERTY_JSON_SCHEMA -> value -> builder.jsonSchema(transformString(value, context)); case PROPERTY_CATEGORY -> value -> builder.category(transformString(value, context)); - case PROPERTY_DEFAULT_VOCABULARY -> value -> builder.defaultVocabulary(transformBoolean(value, context)); default -> doNothing(); }); - if (!jsonObject.containsKey(PROPERTY_DEFAULT_VOCABULARY)) { - builder.defaultVocabulary(false); - } - return builderResult(builder::build, context); } diff --git a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/validator/MandatoryJsonField.java b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/validator/MandatoryJsonField.java index 02dfd40..d21e323 100644 --- a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/validator/MandatoryJsonField.java +++ b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/validator/MandatoryJsonField.java @@ -4,11 +4,11 @@ import jakarta.json.JsonObject; import jakarta.json.JsonReader; import jakarta.json.stream.JsonParsingException; -import java.io.StringReader; import org.eclipse.edc.validator.jsonobject.JsonLdPath; import org.eclipse.edc.validator.spi.ValidationResult; import org.eclipse.edc.validator.spi.Validator; +import java.io.StringReader; import java.util.Optional; import static java.lang.String.format; diff --git a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/validator/VocabularyValidator.java b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/validator/VocabularyValidator.java index e7d0723..494c487 100644 --- a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/validator/VocabularyValidator.java +++ b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/validator/VocabularyValidator.java @@ -6,9 +6,9 @@ import org.eclipse.edc.validator.jsonobject.validators.OptionalIdNotBlank; import org.eclipse.edc.validator.spi.Validator; +import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_CATEGORY; import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_JSON_SCHEMA; import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_NAME; -import static org.upm.inesdata.spi.vocabulary.domain.Vocabulary.PROPERTY_CATEGORY; /** * Validator for Vocabulary diff --git a/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/SqlVocabularyIndex.java b/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/SqlVocabularyIndex.java index db63787..6cb0121 100644 --- a/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/SqlVocabularyIndex.java +++ b/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/SqlVocabularyIndex.java @@ -9,10 +9,9 @@ import org.eclipse.edc.transaction.datasource.spi.DataSourceRegistry; import org.eclipse.edc.transaction.spi.TransactionContext; import org.jetbrains.annotations.Nullable; - +import org.upm.inesdata.spi.vocabulary.VocabularyIndex; import org.upm.inesdata.spi.vocabulary.domain.Vocabulary; import org.upm.inesdata.vocabulary.sql.index.schema.VocabularyStatements; -import org.upm.inesdata.spi.vocabulary.VocabularyIndex; import java.sql.Connection; import java.sql.ResultSet; @@ -83,7 +82,6 @@ public StoreResult create(Vocabulary vocabulary) { vocabulary.getCreatedAt(), vocabulary.getName(), vocabulary.getCategory(), - vocabulary.isDefaultVocabulary(), toJson(vocabulary.getJsonSchema()) ); @@ -124,7 +122,6 @@ public StoreResult updateVocabulary(Vocabulary vocabulary) { vocabulary.getName(), toJson(vocabulary.getJsonSchema()), vocabulary.getCategory(), - vocabulary.isDefaultVocabulary(), vocabularyId ); @@ -138,18 +135,6 @@ public StoreResult updateVocabulary(Vocabulary vocabulary) { }); } - @Override - public Vocabulary getDefaultVocabulary() { - try (var connection = getConnection()) { - var querySpec = QuerySpec.Builder.newInstance().filter(criterion("default_vocabulary", "=", true)).build(); - var statement = vocabularyStatements.createQuery(querySpec); - return queryExecutor.query(connection, true, this::mapVocabulary, statement.getQueryAsString(), statement.getParameters()) - .findFirst().orElse(null); - } catch (SQLException e) { - throw new EdcPersistenceException(e); - } - } - private int mapRowCount(ResultSet resultSet) throws SQLException { return resultSet.getInt(vocabularyStatements.getCountVariableName()); } @@ -167,7 +152,6 @@ private Vocabulary mapVocabulary(ResultSet resultSet) throws SQLException { .createdAt(resultSet.getLong(vocabularyStatements.getCreatedAtColumn())) .name(resultSet.getString(vocabularyStatements.getNameColumn())) .category(resultSet.getString(vocabularyStatements.getCategoryColumn())) - .defaultVocabulary(resultSet.getBoolean(vocabularyStatements.getDefaultVocabularyColumn())) .jsonSchema(resultSet.getString(vocabularyStatements.getJsonSchemaColumn())) .build(); } diff --git a/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/BaseSqlDialectStatements.java b/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/BaseSqlDialectStatements.java index 898b1e6..0725adc 100644 --- a/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/BaseSqlDialectStatements.java +++ b/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/BaseSqlDialectStatements.java @@ -1,9 +1,9 @@ package org.upm.inesdata.vocabulary.sql.index.schema; -import org.upm.inesdata.vocabulary.sql.index.schema.postgres.VocabularyMapping; import org.eclipse.edc.spi.query.QuerySpec; import org.eclipse.edc.sql.translation.SqlOperatorTranslator; import org.eclipse.edc.sql.translation.SqlQueryStatement; +import org.upm.inesdata.vocabulary.sql.index.schema.postgres.VocabularyMapping; import static java.lang.String.format; @@ -25,7 +25,6 @@ public String getInsertVocabularyTemplate() { .column(getCreatedAtColumn()) .column(getNameColumn()) .column(getCategoryColumn()) - .column(getDefaultVocabularyColumn()) .jsonColumn(getJsonSchemaColumn()) .insertInto(getVocabularyTable()); } @@ -36,7 +35,6 @@ public String getUpdateVocabularyTemplate() { .column(getNameColumn()) .jsonColumn(getJsonSchemaColumn()) .column(getCategoryColumn()) - .column(getDefaultVocabularyColumn()) .update(getVocabularyTable(), getVocabularyIdColumn()); } diff --git a/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/VocabularyStatements.java b/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/VocabularyStatements.java index 4bfb0c0..0ccb9ff 100644 --- a/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/VocabularyStatements.java +++ b/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/VocabularyStatements.java @@ -37,10 +37,6 @@ default String getCategoryColumn() { return "category"; } - default String getDefaultVocabularyColumn() { - return "default_vocabulary"; - } - default String getCreatedAtColumn() { return "created_at"; } diff --git a/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/postgres/VocabularyMapping.java b/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/postgres/VocabularyMapping.java index 5790fc8..dfd627c 100644 --- a/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/postgres/VocabularyMapping.java +++ b/extensions/vocabulary-index-sql/src/main/java/org/upm/inesdata/vocabulary/sql/index/schema/postgres/VocabularyMapping.java @@ -15,7 +15,6 @@ public VocabularyMapping(VocabularyStatements statements) { add("createdAt", statements.getCreatedAtColumn()); add("name", statements.getNameColumn()); add("category", statements.getCategoryColumn()); - add("default_vocabulary", statements.getDefaultVocabularyColumn()); add("json_schema", new JsonFieldTranslator(statements.getJsonSchemaColumn())); } diff --git a/resources/sql/vocabulary-schema.sql b/resources/sql/vocabulary-schema.sql index 2208b90..cb8d1a8 100644 --- a/resources/sql/vocabulary-schema.sql +++ b/resources/sql/vocabulary-schema.sql @@ -5,8 +5,7 @@ CREATE TABLE IF NOT EXISTS edc_vocabulary created_at BIGINT NOT NULL, json_schema JSON DEFAULT '{}', name VARCHAR NOT NULL, - category VARCHAR NOT NULL, - default_vocabulary BOOLEAN DEFAULT FALSE, + category VARCHAR NOT NULL PRIMARY KEY (id) ); diff --git a/spi/vocabulary-spi/src/main/java/org/upm/inesdata/spi/vocabulary/VocabularyIndex.java b/spi/vocabulary-spi/src/main/java/org/upm/inesdata/spi/vocabulary/VocabularyIndex.java index dc3f408..8a89aeb 100644 --- a/spi/vocabulary-spi/src/main/java/org/upm/inesdata/spi/vocabulary/VocabularyIndex.java +++ b/spi/vocabulary-spi/src/main/java/org/upm/inesdata/spi/vocabulary/VocabularyIndex.java @@ -1,9 +1,9 @@ package org.upm.inesdata.spi.vocabulary; -import org.upm.inesdata.spi.vocabulary.domain.Vocabulary; import org.eclipse.edc.runtime.metamodel.annotation.ExtensionPoint; import org.eclipse.edc.spi.persistence.EdcPersistenceException; import org.eclipse.edc.spi.result.StoreResult; +import org.upm.inesdata.spi.vocabulary.domain.Vocabulary; import java.util.stream.Stream; @@ -58,12 +58,4 @@ public interface VocabularyIndex { */ StoreResult updateVocabulary(Vocabulary vocabulary); - /** - * Fetches the default {@link Vocabulary} from the metadata backend. - * - * @return The {@link Vocabulary} if one was found, or null otherwise. - * @throws NullPointerException If {@code vocabularyId} was null or empty. - */ - Vocabulary getDefaultVocabulary(); - } diff --git a/spi/vocabulary-spi/src/main/java/org/upm/inesdata/spi/vocabulary/domain/Vocabulary.java b/spi/vocabulary-spi/src/main/java/org/upm/inesdata/spi/vocabulary/domain/Vocabulary.java index 27c159a..9fece22 100644 --- a/spi/vocabulary-spi/src/main/java/org/upm/inesdata/spi/vocabulary/domain/Vocabulary.java +++ b/spi/vocabulary-spi/src/main/java/org/upm/inesdata/spi/vocabulary/domain/Vocabulary.java @@ -21,14 +21,12 @@ public class Vocabulary extends Entity { public static final String PROPERTY_NAME = EDC_NAMESPACE + "name"; public static final String PROPERTY_JSON_SCHEMA = EDC_NAMESPACE + "jsonSchema"; public static final String PROPERTY_CATEGORY = EDC_NAMESPACE + "category"; - public static final String PROPERTY_DEFAULT_VOCABULARY = EDC_NAMESPACE + "defaultVocabulary"; public static final String EDC_VOCABULARY_TYPE = EDC_NAMESPACE + "Vocabulary"; private String name; private String jsonSchema; private String category; - private boolean defaultVocabulary; private Vocabulary() { } @@ -45,13 +43,6 @@ public String getCategory() { return category; } - public boolean isDefaultVocabulary() { - return defaultVocabulary; - } - - public void setDefaultVocabulary(boolean _defaultVocabulary) { - defaultVocabulary = _defaultVocabulary; - } public Builder toBuilder() { return Vocabulary.Builder.newInstance() @@ -59,7 +50,6 @@ public Builder toBuilder() { .name(name) .jsonSchema(jsonSchema) .category(category) - .defaultVocabulary(defaultVocabulary) .createdAt(createdAt); } @@ -97,11 +87,6 @@ public Builder category(String category) { return self(); } - public Builder defaultVocabulary(boolean defaultVocabulary) { - entity.defaultVocabulary = defaultVocabulary; - return self(); - } - @Override public Builder createdAt(long value) { entity.createdAt = value; From 16807607039e07f235205efc8ee7f31f9e564673 Mon Sep 17 00:00:00 2001 From: "GRUPOGMV\\ssis" Date: Thu, 23 May 2024 08:26:41 +0200 Subject: [PATCH 3/3] schema sql --- extensions/vocabulary-index-sql/docs/schema.sql | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/extensions/vocabulary-index-sql/docs/schema.sql b/extensions/vocabulary-index-sql/docs/schema.sql index 2208b90..cb8d1a8 100644 --- a/extensions/vocabulary-index-sql/docs/schema.sql +++ b/extensions/vocabulary-index-sql/docs/schema.sql @@ -5,8 +5,7 @@ CREATE TABLE IF NOT EXISTS edc_vocabulary created_at BIGINT NOT NULL, json_schema JSON DEFAULT '{}', name VARCHAR NOT NULL, - category VARCHAR NOT NULL, - default_vocabulary BOOLEAN DEFAULT FALSE, + category VARCHAR NOT NULL PRIMARY KEY (id) );