From 93a4989aad891945250bf8f922bc75b001eb9a9c Mon Sep 17 00:00:00 2001 From: Eric Wittmann Date: Wed, 12 Jun 2024 07:59:10 -0400 Subject: [PATCH 01/11] Updated the branch API to be a bit more REST compatible --- .../rest/v7/impl/AbstractResource.java | 4 +- .../v7/impl/SubjectVersionsResourceImpl.java | 13 +- .../registry/rest/v2/GroupsResourceImpl.java | 12 +- .../registry/rest/v3/GroupsResourceImpl.java | 238 +- .../apicurio/registry/rest/v3/V3ApiUtil.java | 36 +- .../http/RegistryExceptionMapperService.java | 6 +- .../registry/storage/RegistryStorage.java | 53 +- .../storage/StorageBehaviorProperties.java | 8 +- .../ReadOnlyRegistryStorageDecorator.java | 65 +- .../RegistryStorageDecoratorBase.java | 55 +- .../RegistryStorageDecoratorReadOnlyBase.java | 20 +- .../storage/dto/ArtifactBranchDto.java | 29 - .../storage/dto/BranchMetaDataDto.java | 32 + .../storage/dto/BranchSearchResultsDto.java | 28 + .../dto/EditableBranchMetaDataDto.java | 23 + .../storage/dto/SearchedBranchDto.java | 31 + ...BranchAlreadyContainsVersionException.java | 28 - .../ArtifactBranchNotFoundException.java | 29 - .../error/BranchAlreadyExistsException.java | 18 + .../error/BranchNotFoundException.java | 31 + ...VersionAlreadyExistsOnBranchException.java | 29 + .../AbstractReadOnlyRegistryStorage.java | 38 +- .../impl/gitops/GitOpsRegistryStorage.java | 21 +- .../kafkasql/KafkaSqlRegistryStorage.java | 48 +- ...ava => AppendVersionToBranch3Message.java} | 13 +- .../messages/CreateBranch4Message.java | 41 + ...Message.java => DeleteBranch2Message.java} | 4 +- ...Message.java => ImportBranch1Message.java} | 8 +- ...ava => ReplaceBranchVersions3Message.java} | 13 +- .../UpdateBranchMetaData3Message.java | 40 + .../kafkasql/serde/KafkaSqlMessageIndex.java | 6 +- .../impl/sql/AbstractSqlRegistryStorage.java | 700 ++- .../storage/impl/sql/CommonSqlStatements.java | 106 +- .../impl/sql/SQLServerSqlStatements.java | 7 +- .../storage/impl/sql/SqlStatements.java | 43 +- .../registry/storage/impl/sql/jdb/Sql.java | 1 + .../storage/impl/sql/jdb/SqlImpl.java | 6 + .../storage/impl/sql/jdb/SqlParam.java | 3 + .../storage/impl/sql/jdb/SqlParamType.java | 2 +- .../sql/mappers/ArtifactBranchDtoMapper.java | 28 - .../mappers/ArtifactBranchEntityMapper.java | 29 - .../impl/sql/mappers/BranchEntityMapper.java | 32 + .../sql/mappers/BranchMetaDataDtoMapper.java | 38 + .../sql/mappers/SearchedBranchMapper.java | 37 + .../importing/AbstractDataImporter.java | 6 +- .../storage/importing/SqlDataImporter.java | 30 +- .../apicurio/registry/storage/impl/sql/h2.ddl | 16 +- .../registry/storage/impl/sql/mssql.ddl | 16 +- .../registry/storage/impl/sql/postgresql.ddl | 16 +- .../registry/AbstractResourceTestBase.java | 3 +- .../noprofile/rest/v3/BranchesTest.java | 556 +++ .../noprofile/rest/v3/GroupsResourceTest.java | 519 +- .../storage/AbstractRegistryStorageTest.java | 52 +- .../storage/RegistryStorageSmokeTest.java | 4 +- .../KafkasqlRecoverFromSnapshotTest.java | 156 - .../readonly/ReadOnlyRegistryStorageTest.java | 23 +- .../943e6945-5aef-4ca0-a3cd-31af380840ea.sql | 4326 ----------------- .../src/main/resources/META-INF/openapi.json | 538 +- .../model/VersionExpressionParserTest.java | 18 +- ..._branches_item_versions_request_builder.go | 168 + ...artifacts_item_branches_request_builder.go | 78 +- ...anches_with_branch_item_request_builder.go | 83 +- go-sdk/pkg/registryclient-v3/kiota-lock.json | 2 +- .../models/add_version_to_branch.go | 86 + .../models/branch_meta_data.go | 327 ++ .../models/branch_search_results.go | 128 + .../{artifact_branch.go => create_branch.go} | 96 +- .../models/editable_branch_meta_data.go | 86 + .../models/searched_branch.go | 327 ++ .../GenerateCanonicalHashImportIT.java | 8 +- ...actBranchEntity.java => BranchEntity.java} | 30 +- .../registry/utils/impexp/EntityReader.java | 17 +- .../registry/utils/impexp/EntityType.java | 2 +- .../registry/utils/impexp/EntityWriter.java | 21 +- 74 files changed, 3651 insertions(+), 6139 deletions(-) delete mode 100644 app/src/main/java/io/apicurio/registry/storage/dto/ArtifactBranchDto.java create mode 100644 app/src/main/java/io/apicurio/registry/storage/dto/BranchMetaDataDto.java create mode 100644 app/src/main/java/io/apicurio/registry/storage/dto/BranchSearchResultsDto.java create mode 100644 app/src/main/java/io/apicurio/registry/storage/dto/EditableBranchMetaDataDto.java create mode 100644 app/src/main/java/io/apicurio/registry/storage/dto/SearchedBranchDto.java delete mode 100644 app/src/main/java/io/apicurio/registry/storage/error/ArtifactBranchAlreadyContainsVersionException.java delete mode 100644 app/src/main/java/io/apicurio/registry/storage/error/ArtifactBranchNotFoundException.java create mode 100644 app/src/main/java/io/apicurio/registry/storage/error/BranchAlreadyExistsException.java create mode 100644 app/src/main/java/io/apicurio/registry/storage/error/BranchNotFoundException.java create mode 100644 app/src/main/java/io/apicurio/registry/storage/error/VersionAlreadyExistsOnBranchException.java rename app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/{CreateOrUpdateArtifactBranch2Message.java => AppendVersionToBranch3Message.java} (71%) create mode 100644 app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/CreateBranch4Message.java rename app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/{DeleteArtifactBranch2Message.java => DeleteBranch2Message.java} (87%) rename app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/{ImportArtifactBranch1Message.java => ImportBranch1Message.java} (77%) rename app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/{CreateOrReplaceArtifactBranch3Message.java => ReplaceBranchVersions3Message.java} (69%) create mode 100644 app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/UpdateBranchMetaData3Message.java delete mode 100644 app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/ArtifactBranchDtoMapper.java delete mode 100644 app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/ArtifactBranchEntityMapper.java create mode 100644 app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/BranchEntityMapper.java create mode 100644 app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/BranchMetaDataDtoMapper.java create mode 100644 app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/SearchedBranchMapper.java create mode 100644 app/src/test/java/io/apicurio/registry/noprofile/rest/v3/BranchesTest.java delete mode 100644 app/src/test/java/io/apicurio/registry/storage/impl/kafkasql/KafkasqlRecoverFromSnapshotTest.java delete mode 100644 app/src/test/resources/io/apicurio/registry/storage/impl/kafkasql/943e6945-5aef-4ca0-a3cd-31af380840ea.sql create mode 100644 go-sdk/pkg/registryclient-v3/groups/item_artifacts_item_branches_item_versions_request_builder.go create mode 100644 go-sdk/pkg/registryclient-v3/models/add_version_to_branch.go create mode 100644 go-sdk/pkg/registryclient-v3/models/branch_meta_data.go create mode 100644 go-sdk/pkg/registryclient-v3/models/branch_search_results.go rename go-sdk/pkg/registryclient-v3/models/{artifact_branch.go => create_branch.go} (53%) create mode 100644 go-sdk/pkg/registryclient-v3/models/editable_branch_meta_data.go create mode 100644 go-sdk/pkg/registryclient-v3/models/searched_branch.go rename utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/{ArtifactBranchEntity.java => BranchEntity.java} (56%) diff --git a/app/src/main/java/io/apicurio/registry/ccompat/rest/v7/impl/AbstractResource.java b/app/src/main/java/io/apicurio/registry/ccompat/rest/v7/impl/AbstractResource.java index 7b6c768002..079f8adea1 100644 --- a/app/src/main/java/io/apicurio/registry/ccompat/rest/v7/impl/AbstractResource.java +++ b/app/src/main/java/io/apicurio/registry/ccompat/rest/v7/impl/AbstractResource.java @@ -14,7 +14,7 @@ import io.apicurio.registry.rules.RuleViolationException; import io.apicurio.registry.rules.RulesService; import io.apicurio.registry.storage.RegistryStorage; -import io.apicurio.registry.storage.RegistryStorage.ArtifactRetrievalBehavior; +import io.apicurio.registry.storage.RegistryStorage.RetrievalBehavior; import io.apicurio.registry.storage.dto.ArtifactReferenceDto; import io.apicurio.registry.storage.dto.ArtifactVersionMetaDataDto; import io.apicurio.registry.storage.dto.ContentWrapperDto; @@ -191,7 +191,7 @@ protected boolean isArtifactActive(String subject, String groupId) { protected String getLatestArtifactVersionForSubject(String subject, String groupId) { try { - GAV latestGAV = storage.getArtifactBranchTip(new GA(groupId, subject), BranchId.LATEST, ArtifactRetrievalBehavior.SKIP_DISABLED_LATEST); + GAV latestGAV = storage.getBranchTip(new GA(groupId, subject), BranchId.LATEST, RetrievalBehavior.SKIP_DISABLED_LATEST); return latestGAV.getRawVersionId(); } catch (ArtifactNotFoundException ex) { throw new VersionNotFoundException(groupId, subject, "latest"); diff --git a/app/src/main/java/io/apicurio/registry/ccompat/rest/v7/impl/SubjectVersionsResourceImpl.java b/app/src/main/java/io/apicurio/registry/ccompat/rest/v7/impl/SubjectVersionsResourceImpl.java index babe985058..2411241619 100644 --- a/app/src/main/java/io/apicurio/registry/ccompat/rest/v7/impl/SubjectVersionsResourceImpl.java +++ b/app/src/main/java/io/apicurio/registry/ccompat/rest/v7/impl/SubjectVersionsResourceImpl.java @@ -37,8 +37,8 @@ import static io.apicurio.common.apps.logging.audit.AuditingConstants.KEY_ARTIFACT_ID; import static io.apicurio.common.apps.logging.audit.AuditingConstants.KEY_VERSION; -import static io.apicurio.registry.storage.RegistryStorage.ArtifactRetrievalBehavior.DEFAULT; -import static io.apicurio.registry.storage.RegistryStorage.ArtifactRetrievalBehavior.SKIP_DISABLED_LATEST; +import static io.apicurio.registry.storage.RegistryStorage.RetrievalBehavior.DEFAULT; +import static io.apicurio.registry.storage.RegistryStorage.RetrievalBehavior.SKIP_DISABLED_LATEST; @Interceptors({ResponseErrorLivenessCheck.class, ResponseTimeoutReadinessCheck.class}) @Logged @@ -51,11 +51,16 @@ public class SubjectVersionsResourceImpl extends AbstractResource implements Sub @Authorized(style = AuthorizedStyle.ArtifactOnly, level = AuthorizedLevel.Read) public List listVersions(String subject, String groupId, Boolean deleted) throws Exception { final boolean fdeleted = deleted == null ? Boolean.FALSE : deleted; + List rval; if (fdeleted) { - return storage.getArtifactVersions(groupId, subject, DEFAULT).stream().map(VersionUtil::toLong).map(converter::convertUnsigned).sorted().collect(Collectors.toList()); + rval = storage.getArtifactVersions(groupId, subject, DEFAULT).stream().map(VersionUtil::toLong).map(converter::convertUnsigned).sorted().collect(Collectors.toList()); } else { - return storage.getArtifactVersions(groupId, subject, SKIP_DISABLED_LATEST).stream().map(VersionUtil::toLong).map(converter::convertUnsigned).sorted().collect(Collectors.toList()); + rval = storage.getArtifactVersions(groupId, subject, SKIP_DISABLED_LATEST).stream().map(VersionUtil::toLong).map(converter::convertUnsigned).sorted().collect(Collectors.toList()); } + if (rval.isEmpty()) { + throw new ArtifactNotFoundException(groupId, subject); + } + return rval; } @Override diff --git a/app/src/main/java/io/apicurio/registry/rest/v2/GroupsResourceImpl.java b/app/src/main/java/io/apicurio/registry/rest/v2/GroupsResourceImpl.java index 390c6e7134..68b0efec23 100644 --- a/app/src/main/java/io/apicurio/registry/rest/v2/GroupsResourceImpl.java +++ b/app/src/main/java/io/apicurio/registry/rest/v2/GroupsResourceImpl.java @@ -41,7 +41,7 @@ import io.apicurio.registry.rest.v2.shared.CommonResourceOperations; import io.apicurio.registry.rules.RuleApplicationType; import io.apicurio.registry.rules.RulesService; -import io.apicurio.registry.storage.RegistryStorage.ArtifactRetrievalBehavior; +import io.apicurio.registry.storage.RegistryStorage.RetrievalBehavior; import io.apicurio.registry.storage.dto.ArtifactMetaDataDto; import io.apicurio.registry.storage.dto.ArtifactReferenceDto; import io.apicurio.registry.storage.dto.ArtifactSearchResultsDto; @@ -169,7 +169,7 @@ public Response getLatestArtifact(String groupId, String artifactId, Boolean der } try { - GAV latestGAV = storage.getArtifactBranchTip(new GA(groupId, artifactId), BranchId.LATEST, ArtifactRetrievalBehavior.SKIP_DISABLED_LATEST); + GAV latestGAV = storage.getBranchTip(new GA(groupId, artifactId), BranchId.LATEST, RetrievalBehavior.SKIP_DISABLED_LATEST); ArtifactVersionMetaDataDto metaData = storage.getArtifactVersionMetaData(latestGAV.getRawGroupIdWithNull(), latestGAV.getRawArtifactId(), latestGAV.getRawVersionId()); StoredArtifactVersionDto artifact = storage.getArtifactVersionContent(defaultGroupIdToNull(groupId), artifactId, latestGAV.getRawVersionId()); @@ -267,7 +267,7 @@ public ArtifactMetaData getArtifactMetaData(String groupId, String artifactId) { requireParameter("artifactId", artifactId); ArtifactMetaDataDto dto = storage.getArtifactMetaData(defaultGroupIdToNull(groupId), artifactId); - GAV latestGAV = storage.getArtifactBranchTip(new GA(groupId, artifactId), BranchId.LATEST, ArtifactRetrievalBehavior.SKIP_DISABLED_LATEST); + GAV latestGAV = storage.getBranchTip(new GA(groupId, artifactId), BranchId.LATEST, RetrievalBehavior.SKIP_DISABLED_LATEST); ArtifactVersionMetaDataDto vdto = storage.getArtifactVersionMetaData(latestGAV.getRawGroupIdWithNull(), latestGAV.getRawArtifactId(), latestGAV.getRawVersionId()); ArtifactMetaData amd = V2ApiUtil.dtoToMetaData(defaultGroupIdToNull(groupId), artifactId, dto.getArtifactType(), dto); @@ -291,7 +291,7 @@ public ArtifactMetaData getArtifactMetaData(String groupId, String artifactId) { @Audited(extractParameters = {"0", KEY_GROUP_ID, "1", KEY_ARTIFACT_ID, "2", KEY_EDITABLE_METADATA}) @Authorized(style = AuthorizedStyle.GroupAndArtifact, level = AuthorizedLevel.Write) public void updateArtifactMetaData(String groupId, String artifactId, EditableMetaData data) { - GAV latestGAV = storage.getArtifactBranchTip(new GA(groupId, artifactId), BranchId.LATEST, ArtifactRetrievalBehavior.DEFAULT); + GAV latestGAV = storage.getBranchTip(new GA(groupId, artifactId), BranchId.LATEST, RetrievalBehavior.DEFAULT); storage.updateArtifactVersionMetaData(groupId, artifactId, latestGAV.getRawVersionId(), EditableVersionMetaDataDto.builder() .name(data.getName()) .description(data.getDescription()) @@ -535,8 +535,8 @@ public void updateArtifactState(String groupId, String artifactId, UpdateState d requireParameter("body.state", data.getState()); // Possible race condition here. Worst case should be that the update fails with a reasonable message. - GAV latestGAV = storage.getArtifactBranchTip(new GA(defaultGroupIdToNull(groupId), artifactId), - BranchId.LATEST, ArtifactRetrievalBehavior.DEFAULT); + GAV latestGAV = storage.getBranchTip(new GA(defaultGroupIdToNull(groupId), artifactId), + BranchId.LATEST, RetrievalBehavior.DEFAULT); updateArtifactVersionState(groupId, artifactId, latestGAV.getRawVersionId(), data); } diff --git a/app/src/main/java/io/apicurio/registry/rest/v3/GroupsResourceImpl.java b/app/src/main/java/io/apicurio/registry/rest/v3/GroupsResourceImpl.java index 07acf05dda..2269b66413 100644 --- a/app/src/main/java/io/apicurio/registry/rest/v3/GroupsResourceImpl.java +++ b/app/src/main/java/io/apicurio/registry/rest/v3/GroupsResourceImpl.java @@ -11,26 +11,28 @@ import io.apicurio.registry.metrics.health.readiness.ResponseTimeoutReadinessCheck; import io.apicurio.registry.model.BranchId; import io.apicurio.registry.model.GA; -import io.apicurio.registry.model.GAV; import io.apicurio.registry.model.GroupId; import io.apicurio.registry.model.VersionExpressionParser; import io.apicurio.registry.model.VersionId; import io.apicurio.registry.rest.HeadersHack; import io.apicurio.registry.rest.MissingRequiredParameterException; -import io.apicurio.registry.rest.ParametersConflictException; import io.apicurio.registry.rest.RestConfig; -import io.apicurio.registry.rest.v3.beans.ArtifactBranch; +import io.apicurio.registry.rest.v3.beans.AddVersionToBranch; import io.apicurio.registry.rest.v3.beans.ArtifactMetaData; import io.apicurio.registry.rest.v3.beans.ArtifactReference; import io.apicurio.registry.rest.v3.beans.ArtifactSearchResults; import io.apicurio.registry.rest.v3.beans.ArtifactSortBy; +import io.apicurio.registry.rest.v3.beans.BranchMetaData; +import io.apicurio.registry.rest.v3.beans.BranchSearchResults; import io.apicurio.registry.rest.v3.beans.Comment; import io.apicurio.registry.rest.v3.beans.CreateArtifact; import io.apicurio.registry.rest.v3.beans.CreateArtifactResponse; +import io.apicurio.registry.rest.v3.beans.CreateBranch; import io.apicurio.registry.rest.v3.beans.CreateGroup; import io.apicurio.registry.rest.v3.beans.CreateRule; import io.apicurio.registry.rest.v3.beans.CreateVersion; import io.apicurio.registry.rest.v3.beans.EditableArtifactMetaData; +import io.apicurio.registry.rest.v3.beans.EditableBranchMetaData; import io.apicurio.registry.rest.v3.beans.EditableGroupMetaData; import io.apicurio.registry.rest.v3.beans.EditableVersionMetaData; import io.apicurio.registry.rest.v3.beans.GroupMetaData; @@ -47,14 +49,17 @@ import io.apicurio.registry.rest.v3.shared.CommonResourceOperations; import io.apicurio.registry.rules.RuleApplicationType; import io.apicurio.registry.rules.RulesService; -import io.apicurio.registry.storage.RegistryStorage.ArtifactRetrievalBehavior; +import io.apicurio.registry.storage.RegistryStorage.RetrievalBehavior; import io.apicurio.registry.storage.dto.ArtifactMetaDataDto; import io.apicurio.registry.storage.dto.ArtifactReferenceDto; import io.apicurio.registry.storage.dto.ArtifactSearchResultsDto; import io.apicurio.registry.storage.dto.ArtifactVersionMetaDataDto; +import io.apicurio.registry.storage.dto.BranchMetaDataDto; +import io.apicurio.registry.storage.dto.BranchSearchResultsDto; import io.apicurio.registry.storage.dto.CommentDto; import io.apicurio.registry.storage.dto.ContentWrapperDto; import io.apicurio.registry.storage.dto.EditableArtifactMetaDataDto; +import io.apicurio.registry.storage.dto.EditableBranchMetaDataDto; import io.apicurio.registry.storage.dto.EditableGroupMetaDataDto; import io.apicurio.registry.storage.dto.EditableVersionMetaDataDto; import io.apicurio.registry.storage.dto.GroupMetaDataDto; @@ -87,13 +92,11 @@ import jakarta.ws.rs.client.Client; import jakarta.ws.rs.core.Response; import org.apache.commons.lang3.tuple.Pair; -import org.jose4j.base64url.Base64; import java.io.BufferedInputStream; import java.io.InputStream; import java.math.BigInteger; import java.net.URI; -import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.HashSet; @@ -155,7 +158,7 @@ public List getArtifactVersionReferences(String groupId, Stri String versionExpression, ReferenceType refType) { var gav = VersionExpressionParser.parse(new GA(groupId, artifactId), versionExpression, - (ga, branchId) -> storage.getArtifactBranchTip(ga, branchId, ArtifactRetrievalBehavior.DEFAULT)); + (ga, branchId) -> storage.getBranchTip(ga, branchId, RetrievalBehavior.DEFAULT)); if (refType == null || refType == ReferenceType.OUTBOUND) { return storage.getArtifactVersionContent(gav.getRawGroupIdWithNull(), gav.getRawArtifactId(), gav.getRawVersionId()) @@ -401,7 +404,7 @@ public Response getArtifactVersionContent(String groupId, String artifactId, Str requireParameter("versionExpression", versionExpression); var gav = VersionExpressionParser.parse(new GA(groupId, artifactId), versionExpression, - (ga, branchId) -> storage.getArtifactBranchTip(ga, branchId, ArtifactRetrievalBehavior.SKIP_DISABLED_LATEST)); + (ga, branchId) -> storage.getBranchTip(ga, branchId, RetrievalBehavior.SKIP_DISABLED_LATEST)); if (references == null) { references = HandleReferencesType.PRESERVE; @@ -436,7 +439,7 @@ public void deleteArtifactVersion(String groupId, String artifactId, String vers requireParameter("version", version); var gav = VersionExpressionParser.parse(new GA(groupId, artifactId), version, - (ga, branchId) -> storage.getArtifactBranchTip(ga, branchId, ArtifactRetrievalBehavior.DEFAULT)); + (ga, branchId) -> storage.getBranchTip(ga, branchId, RetrievalBehavior.DEFAULT)); storage.deleteArtifactVersion(gav.getRawGroupIdWithNull(), gav.getRawArtifactId(), gav.getRawVersionId()); } @@ -452,7 +455,7 @@ public VersionMetaData getArtifactVersionMetaData(String groupId, String artifac requireParameter("version", version); var gav = VersionExpressionParser.parse(new GA(groupId, artifactId), version, - (ga, branchId) -> storage.getArtifactBranchTip(ga, branchId, ArtifactRetrievalBehavior.SKIP_DISABLED_LATEST)); + (ga, branchId) -> storage.getBranchTip(ga, branchId, RetrievalBehavior.SKIP_DISABLED_LATEST)); ArtifactVersionMetaDataDto dto = storage.getArtifactVersionMetaData(gav.getRawGroupIdWithNull(), gav.getRawArtifactId(), gav.getRawVersionId()); return V3ApiUtil.dtoToVersionMetaData(dto); @@ -470,7 +473,7 @@ public void updateArtifactVersionMetaData(String groupId, String artifactId, Str requireParameter("versionExpression", versionExpression); var gav = VersionExpressionParser.parse(new GA(groupId, artifactId), versionExpression, - (ga, branchId) -> storage.getArtifactBranchTip(ga, branchId, ArtifactRetrievalBehavior.DEFAULT)); + (ga, branchId) -> storage.getBranchTip(ga, branchId, RetrievalBehavior.DEFAULT)); EditableVersionMetaDataDto dto = new EditableVersionMetaDataDto(); dto.setName(data.getName()); @@ -492,7 +495,7 @@ public Comment addArtifactVersionComment(String groupId, String artifactId, Stri requireParameter("versionExpression", versionExpression); var gav = VersionExpressionParser.parse(new GA(groupId, artifactId), versionExpression, - (ga, branchId) -> storage.getArtifactBranchTip(ga, branchId, ArtifactRetrievalBehavior.DEFAULT)); + (ga, branchId) -> storage.getBranchTip(ga, branchId, RetrievalBehavior.DEFAULT)); CommentDto newComment = storage.createArtifactVersionComment(gav.getRawGroupIdWithNull(), gav.getRawArtifactId(), gav.getRawVersionId(), data.getValue()); @@ -512,7 +515,7 @@ public void deleteArtifactVersionComment(String groupId, String artifactId, Stri requireParameter("commentId", commentId); var gav = VersionExpressionParser.parse(new GA(groupId, artifactId), versionExpression, - (ga, branchId) -> storage.getArtifactBranchTip(ga, branchId, ArtifactRetrievalBehavior.DEFAULT)); + (ga, branchId) -> storage.getBranchTip(ga, branchId, RetrievalBehavior.DEFAULT)); storage.deleteArtifactVersionComment(gav.getRawGroupIdWithNull(), gav.getRawArtifactId(), gav.getRawVersionId(), commentId); } @@ -528,7 +531,7 @@ public List getArtifactVersionComments(String groupId, String artifactI requireParameter("version", version); var gav = VersionExpressionParser.parse(new GA(groupId, artifactId), version, - (ga, branchId) -> storage.getArtifactBranchTip(ga, branchId, ArtifactRetrievalBehavior.DEFAULT)); + (ga, branchId) -> storage.getBranchTip(ga, branchId, RetrievalBehavior.DEFAULT)); return storage.getArtifactVersionComments(gav.getRawGroupIdWithNull(), gav.getRawArtifactId(), gav.getRawVersionId()) .stream() @@ -550,7 +553,7 @@ public void updateArtifactVersionComment(String groupId, String artifactId, Stri requireParameter("value", data.getValue()); var gav = VersionExpressionParser.parse(new GA(groupId, artifactId), versionExpression, - (ga, branchId) -> storage.getArtifactBranchTip(ga, branchId, ArtifactRetrievalBehavior.DEFAULT)); + (ga, branchId) -> storage.getBranchTip(ga, branchId, RetrievalBehavior.DEFAULT)); storage.updateArtifactVersionComment(gav.getRawGroupIdWithNull(), gav.getRawArtifactId(), gav.getRawVersionId(), commentId, data.getValue()); @@ -819,131 +822,130 @@ public VersionMetaData createArtifactVersion(String groupId, String artifactId, return V3ApiUtil.dtoToVersionMetaData(vmd); } - @Override @Audited(extractParameters = {"0", KEY_GROUP_ID, "1", KEY_ARTIFACT_ID}) - @Authorized(style = AuthorizedStyle.GroupAndArtifact, level = AuthorizedLevel.Read) - public List listArtifactBranches(String groupId, String artifactId) { + @Authorized(style = AuthorizedStyle.GroupAndArtifact, level = AuthorizedLevel.Write) + public BranchMetaData createBranch(String groupId, String artifactId, CreateBranch data) { requireParameter("groupId", groupId); requireParameter("artifactId", artifactId); + requireParameter("branchId", data.getBranchId()); - return storage.getArtifactBranches(new GA(groupId, artifactId)) - .entrySet() - .stream() - .map(e -> { - return ArtifactBranch.builder() - .groupId(groupId) - .artifactId(artifactId) - .branchId(e.getKey().getRawBranchId()) - .versions( - e.getValue() - .stream() - .map(GAV::getRawVersionId) - .collect(toList()) - ) - .build(); - }) - .collect(toList()); + GA ga = new GA(groupId, artifactId); + BranchId bid = new BranchId(data.getBranchId()); + BranchMetaDataDto branchDto = storage.createBranch(ga, bid, data.getDescription(), data.getVersions()); + return V3ApiUtil.dtoToBranchMetaData(branchDto); } - @Override - @Audited(extractParameters = {"0", KEY_GROUP_ID, "1", KEY_ARTIFACT_ID, "2", "branch_id"}) // TODO @Authorized(style = AuthorizedStyle.GroupAndArtifact, level = AuthorizedLevel.Read) - public ArtifactBranch getArtifactBranch(String groupId, String artifactId, String rawBranchId) { + public BranchSearchResults listBranches(String groupId, String artifactId, BigInteger offset, BigInteger limit) { requireParameter("groupId", groupId); requireParameter("artifactId", artifactId); - requireParameter("branchId", rawBranchId); - - return ArtifactBranch.builder() - .groupId(groupId) - .artifactId(artifactId) - .branchId(rawBranchId) - .versions( - storage.getArtifactBranch(new GA(groupId, artifactId), new BranchId(rawBranchId), ArtifactRetrievalBehavior.DEFAULT) - .stream() - .map(GAV::getRawVersionId) - .collect(toList()) - ) - .build(); + if (offset == null) { + offset = BigInteger.valueOf(0); + } + if (limit == null) { + limit = BigInteger.valueOf(20); + } + + BranchSearchResultsDto dto = storage.getBranches(new GA(groupId, artifactId), offset.intValue(), limit.intValue()); + return V3ApiUtil.dtoToSearchResults(dto); } + @Override + @Authorized(style = AuthorizedStyle.GroupAndArtifact, level = AuthorizedLevel.Read) + public BranchMetaData getBranchMetaData(String groupId, String artifactId, String branchId) { + requireParameter("groupId", groupId); + requireParameter("artifactId", artifactId); + + BranchMetaDataDto branch = storage.getBranchMetaData(new GA(groupId, artifactId), new BranchId(branchId)); + return V3ApiUtil.dtoToBranchMetaData(branch); + } - /** - * @see io.apicurio.registry.rest.v3.GroupsResource#createOrUpdateArtifactBranch(java.lang.String, java.lang.String, java.lang.String, java.lang.String) - */ @Override - @Audited(extractParameters = {"0", KEY_GROUP_ID, "1", KEY_ARTIFACT_ID, "2", "branch_id", "3", KEY_VERSION}) // TODO + @Audited(extractParameters = {"0", KEY_GROUP_ID, "1", KEY_ARTIFACT_ID}) @Authorized(style = AuthorizedStyle.GroupAndArtifact, level = AuthorizedLevel.Write) - public ArtifactBranch createOrUpdateArtifactBranch(String groupId, String artifactId, String rawBranchId, String version) { + public void updateBranchMetaData(String groupId, String artifactId, String branchId, EditableBranchMetaData data) { requireParameter("groupId", groupId); requireParameter("artifactId", artifactId); - requireParameter("branchId", rawBranchId); - requireParameter("version", version); + requireParameter("branchId", branchId); - var gav = new GAV(groupId, artifactId, version); - var branchId = new BranchId(rawBranchId); - - storage.createOrUpdateArtifactBranch(gav, branchId); - - return ArtifactBranch.builder() - .groupId(gav.getRawGroupIdWithDefaultString()) - .artifactId(gav.getRawArtifactId()) - .branchId(branchId.getRawBranchId()) - .versions( - storage.getArtifactBranch(gav, branchId, ArtifactRetrievalBehavior.DEFAULT) - .stream() - .map(GAV::getRawVersionId) - .collect(toList()) - ) + EditableBranchMetaDataDto dto = EditableBranchMetaDataDto.builder() + .description(data.getDescription()) .build(); + storage.updateBranchMetaData(new GA(groupId, artifactId), new BranchId(branchId), dto); } - @Override - @Audited(extractParameters = {"0", KEY_GROUP_ID, "1", KEY_ARTIFACT_ID, "2", "branch_id", "3", "branch"}) // TODO + @Audited(extractParameters = {"0", KEY_GROUP_ID, "1", KEY_ARTIFACT_ID}) @Authorized(style = AuthorizedStyle.GroupAndArtifact, level = AuthorizedLevel.Write) - public ArtifactBranch createOrReplaceArtifactBranch(String groupId, String artifactId, String rawBranchId, ArtifactBranch branch) { + public void deleteBranch(String groupId, String artifactId, String branchId) { requireParameter("groupId", groupId); requireParameter("artifactId", artifactId); - requireParameter("branchId", rawBranchId); - requireParameter("branch", branch); - - var ga = new GA(groupId, artifactId); - var branchId = new BranchId(rawBranchId); - var versions = branch.getVersions() - .stream() - .map(VersionId::new) - .collect(toList()); + requireParameter("branchId", branchId); - storage.createOrReplaceArtifactBranch(ga, branchId, versions); - - return ArtifactBranch.builder() - .groupId(ga.getRawGroupIdWithDefaultString()) - .artifactId(ga.getRawArtifactId()) - .branchId(branchId.getRawBranchId()) - .versions( - storage.getArtifactBranch(ga, branchId, ArtifactRetrievalBehavior.DEFAULT) - .stream() - .map(GAV::getRawVersionId) - .collect(toList()) - ) - .build(); + storage.deleteBranch(new GA(groupId, artifactId), new BranchId(branchId)); } + @Override + @Authorized(style = AuthorizedStyle.GroupAndArtifact, level = AuthorizedLevel.Read) + public VersionSearchResults listBranchVersions(String groupId, String artifactId, String branchId, BigInteger offset, BigInteger limit) { + requireParameter("groupId", groupId); + requireParameter("artifactId", artifactId); + requireParameter("branchId", branchId); + + if (offset == null) { + offset = BigInteger.valueOf(0); + } + if (limit == null) { + limit = BigInteger.valueOf(20); + } + + GA ga = new GA(groupId, artifactId); + BranchId bid = new BranchId(branchId); + + // Throw 404 if the artifact or branch does not exist. + storage.getBranchMetaData(ga, bid); + + VersionSearchResultsDto results = storage.getBranchVersions(ga, bid, offset.intValue(), limit.intValue()); + return V3ApiUtil.dtoToSearchResults(results); + } @Override - @Audited(extractParameters = {"0", KEY_GROUP_ID, "1", KEY_ARTIFACT_ID, "2", "branch_id"}) // TODO + @Audited(extractParameters = {"0", KEY_GROUP_ID, "1", KEY_ARTIFACT_ID}) @Authorized(style = AuthorizedStyle.GroupAndArtifact, level = AuthorizedLevel.Write) - public void deleteArtifactBranch(String groupId, String artifactId, String rawBranchId) { + public List replaceBranchVersions(String groupId, String artifactId, String branchId, List data) { requireParameter("groupId", groupId); requireParameter("artifactId", artifactId); - requireParameter("branchId", rawBranchId); + requireParameter("branchId", branchId); + + GA ga = new GA(groupId, artifactId); + BranchId bid = new BranchId(branchId); + + // Throw 404 if the artifact or branch does not exist. + storage.getBranchMetaData(ga, bid); - storage.deleteArtifactBranch(new GA(groupId, artifactId), new BranchId(rawBranchId)); + storage.replaceBranchVersions(ga, bid, data.stream().map(VersionId::new).toList()); + return data; } + @Override + @Audited(extractParameters = {"0", KEY_GROUP_ID, "1", KEY_ARTIFACT_ID}) + @Authorized(style = AuthorizedStyle.GroupAndArtifact, level = AuthorizedLevel.Write) + public void addVersionToBranch(String groupId, String artifactId, String branchId, AddVersionToBranch data) { + requireParameter("groupId", groupId); + requireParameter("artifactId", artifactId); + requireParameter("branchId", branchId); + + GA ga = new GA(groupId, artifactId); + BranchId bid = new BranchId(branchId); + + // Throw 404 if the artifact or branch does not exist. + storage.getBranchMetaData(ga, bid); + + storage.appendVersionToBranch(ga, bid, new VersionId(data.getVersion())); + } // ========== Not endpoints: ========== @@ -970,14 +972,6 @@ private String lookupArtifactType(String groupId, String artifactId) { return storage.getArtifactMetaData(new GroupId(groupId).getRawGroupIdWithNull(), artifactId).getArtifactType(); } - /** - * Make sure this is ONLY used when request instance is active. - * e.g. in actual http request - */ - private String getContentType() { - return request.getContentType(); - } - private String getContentType(CreateArtifact data) { if (data.getFirstVersion() != null && data.getFirstVersion().getContent() != null) { return data.getFirstVersion().getContent().getContentType(); @@ -1005,23 +999,6 @@ private static void requireParameter(String parameterName, Object parameterValue } } - private static void maxOneOf(String parameterOneName, Object parameterOneValue, String parameterTwoName, Object parameterTwoValue) { - if (parameterOneValue != null && parameterTwoValue != null) { - throw new ParametersConflictException(parameterOneName, parameterTwoName); - } - } - - private static T getOneOf(T parameterOneValue, T parameterTwoValue) { - return parameterOneValue != null ? parameterOneValue : parameterTwoValue; - } - - private static String decode(String encoded) { - if (encoded == null) { - return null; - } - return new String(Base64.decode(encoded)); - } - private CreateArtifactResponse handleIfExists(String groupId, String artifactId, IfArtifactExists ifExists, CreateVersion theVersion, boolean canonical) { if (ifExists == null || theVersion == null) { ifExists = IfArtifactExists.FAIL; @@ -1031,7 +1008,7 @@ private CreateArtifactResponse handleIfExists(String groupId, String artifactId, case CREATE_VERSION: return updateArtifactInternal(groupId, artifactId, theVersion); // case RETURN: -// GAV latestGAV = storage.getArtifactBranchTip(new GA(groupId, artifactId), BranchId.LATEST, ArtifactRetrievalBehavior.DEFAULT); +// GAV latestGAV = storage.getBranchTip(new GA(groupId, artifactId), BranchId.LATEST, ArtifactRetrievalBehavior.DEFAULT); // ArtifactVersionMetaDataDto latestVersionMD = storage.getArtifactVersionMetaData(latestGAV.getRawGroupIdWithNull(), // latestGAV.getRawArtifactId(), latestGAV.getRawVersionId()); // return V3ApiUtil.dtoToVersionMetaData(latestVersionMD); @@ -1065,7 +1042,6 @@ private CreateArtifactResponse handleIfExistsReturnOrUpdate(String groupId, Stri return updateArtifactInternal(groupId, artifactId, theVersion); } - private CreateArtifactResponse updateArtifactInternal(String groupId, String artifactId, CreateVersion theVersion) { String version = theVersion.getVersion(); String name = theVersion.getName(); @@ -1119,10 +1095,6 @@ private List toReferenceDtos(List refer .collect(toList()); } - private List normalizeMultiValuedHeader(List value) { - return value.stream().flatMap(v -> Arrays.stream(v.split(",")).map(String::strip)).collect(toList()); - } - /** * Return an InputStream for the resource to be downloaded * diff --git a/app/src/main/java/io/apicurio/registry/rest/v3/V3ApiUtil.java b/app/src/main/java/io/apicurio/registry/rest/v3/V3ApiUtil.java index b8b45a2c56..1984abc164 100644 --- a/app/src/main/java/io/apicurio/registry/rest/v3/V3ApiUtil.java +++ b/app/src/main/java/io/apicurio/registry/rest/v3/V3ApiUtil.java @@ -5,6 +5,8 @@ import io.apicurio.registry.rest.v3.beans.ArtifactMetaData; import io.apicurio.registry.rest.v3.beans.ArtifactReference; import io.apicurio.registry.rest.v3.beans.ArtifactSearchResults; +import io.apicurio.registry.rest.v3.beans.BranchMetaData; +import io.apicurio.registry.rest.v3.beans.BranchSearchResults; import io.apicurio.registry.rest.v3.beans.Comment; import io.apicurio.registry.rest.v3.beans.ConfigurationProperty; import io.apicurio.registry.rest.v3.beans.GroupMetaData; @@ -12,6 +14,7 @@ import io.apicurio.registry.rest.v3.beans.RoleMapping; import io.apicurio.registry.rest.v3.beans.RoleMappingSearchResults; import io.apicurio.registry.rest.v3.beans.SearchedArtifact; +import io.apicurio.registry.rest.v3.beans.SearchedBranch; import io.apicurio.registry.rest.v3.beans.SearchedGroup; import io.apicurio.registry.rest.v3.beans.SearchedVersion; import io.apicurio.registry.rest.v3.beans.SortOrder; @@ -21,6 +24,8 @@ import io.apicurio.registry.storage.dto.ArtifactReferenceDto; import io.apicurio.registry.storage.dto.ArtifactSearchResultsDto; import io.apicurio.registry.storage.dto.ArtifactVersionMetaDataDto; +import io.apicurio.registry.storage.dto.BranchMetaDataDto; +import io.apicurio.registry.storage.dto.BranchSearchResultsDto; import io.apicurio.registry.storage.dto.CommentDto; import io.apicurio.registry.storage.dto.EditableArtifactMetaDataDto; import io.apicurio.registry.storage.dto.GroupMetaDataDto; @@ -138,7 +143,7 @@ public static ArtifactSearchResults dtoToSearchResults(ArtifactSearchResultsDto public static GroupSearchResults dtoToSearchResults(GroupSearchResultsDto dto) { GroupSearchResults results = new GroupSearchResults(); - results.setCount((int) dto.getCount()); + results.setCount(dto.getCount()); results.setGroups(new ArrayList<>(dto.getGroups().size())); dto.getGroups().forEach(group -> { SearchedGroup sg = new SearchedGroup(); @@ -153,6 +158,23 @@ public static GroupSearchResults dtoToSearchResults(GroupSearchResultsDto dto) { return results; } + public static BranchSearchResults dtoToSearchResults(BranchSearchResultsDto dto) { + BranchSearchResults results = new BranchSearchResults(); + results.setCount(dto.getCount()); + results.setBranches(new ArrayList<>(dto.getBranches().size())); + dto.getBranches().forEach(group -> { + SearchedBranch sg = new SearchedBranch(); + sg.setOwner(group.getOwner()); + sg.setCreatedOn(new Date(group.getCreatedOn())); + sg.setDescription(group.getDescription()); + sg.setBranchId(group.getBranchId()); + sg.setModifiedBy(group.getModifiedBy()); + sg.setModifiedOn(new Date(group.getModifiedOn())); + results.getBranches().add(sg); + }); + return results; + } + public static VersionSearchResults dtoToSearchResults(VersionSearchResultsDto dto) { VersionSearchResults results = new VersionSearchResults(); results.setCount((int) dto.getCount()); @@ -241,4 +263,16 @@ public static ConfigurationProperty dtoToConfigurationProperty(DynamicConfigProp return rval; } + public static BranchMetaData dtoToBranchMetaData(BranchMetaDataDto branch) { + return BranchMetaData.builder() + .groupId(branch.getGroupId()) + .artifactId(branch.getArtifactId()) + .branchId(branch.getBranchId()) + .description(branch.getDescription()) + .owner(branch.getOwner()) + .createdOn(new Date(branch.getCreatedOn())) + .modifiedBy(branch.getModifiedBy()) + .modifiedOn(new Date(branch.getModifiedOn())) + .build(); + } } diff --git a/app/src/main/java/io/apicurio/registry/services/http/RegistryExceptionMapperService.java b/app/src/main/java/io/apicurio/registry/services/http/RegistryExceptionMapperService.java index c4f0b257da..3e550c9279 100644 --- a/app/src/main/java/io/apicurio/registry/services/http/RegistryExceptionMapperService.java +++ b/app/src/main/java/io/apicurio/registry/services/http/RegistryExceptionMapperService.java @@ -65,8 +65,8 @@ public class RegistryExceptionMapperService { map.put(ArtifactAlreadyExistsException.class, HTTP_CONFLICT); map.put(ArtifactNotFoundException.class, HTTP_NOT_FOUND); map.put(BadRequestException.class, HTTP_BAD_REQUEST); - map.put(ArtifactBranchNotFoundException.class, HTTP_NOT_FOUND); - map.put(ArtifactBranchAlreadyContainsVersionException.class, HTTP_CONFLICT); + map.put(BranchAlreadyExistsException.class, HTTP_CONFLICT); + map.put(BranchNotFoundException.class, HTTP_NOT_FOUND); map.put(ConfigPropertyNotFoundException.class, HTTP_NOT_FOUND); map.put(ConflictException.class, HTTP_CONFLICT); map.put(ContentNotFoundException.class, HTTP_NOT_FOUND); @@ -74,6 +74,7 @@ public class RegistryExceptionMapperService { map.put(DownloadNotFoundException.class, HTTP_NOT_FOUND); map.put(ForbiddenException.class, HTTP_FORBIDDEN); map.put(GroupNotFoundException.class, HTTP_NOT_FOUND); + map.put(GroupAlreadyExistsException.class, HTTP_CONFLICT); map.put(InvalidArtifactIdException.class, HTTP_BAD_REQUEST); map.put(InvalidArtifactStateException.class, HTTP_BAD_REQUEST); map.put(InvalidVersionStateException.class, HTTP_BAD_REQUEST); @@ -106,6 +107,7 @@ public class RegistryExceptionMapperService { map.put(UnprocessableSchemaException.class, HTTP_UNPROCESSABLE_ENTITY); map.put(ValidationException.class, HTTP_BAD_REQUEST); map.put(VersionAlreadyExistsException.class, HTTP_CONFLICT); + map.put(VersionAlreadyExistsOnBranchException.class, HTTP_CONFLICT); map.put(VersionNotFoundException.class, HTTP_NOT_FOUND); CODE_MAP = Collections.unmodifiableMap(map); diff --git a/app/src/main/java/io/apicurio/registry/storage/RegistryStorage.java b/app/src/main/java/io/apicurio/registry/storage/RegistryStorage.java index 01991bf7ca..9fee9fd4c7 100644 --- a/app/src/main/java/io/apicurio/registry/storage/RegistryStorage.java +++ b/app/src/main/java/io/apicurio/registry/storage/RegistryStorage.java @@ -11,10 +11,13 @@ import io.apicurio.registry.storage.dto.ArtifactReferenceDto; import io.apicurio.registry.storage.dto.ArtifactSearchResultsDto; import io.apicurio.registry.storage.dto.ArtifactVersionMetaDataDto; +import io.apicurio.registry.storage.dto.BranchMetaDataDto; +import io.apicurio.registry.storage.dto.BranchSearchResultsDto; import io.apicurio.registry.storage.dto.CommentDto; import io.apicurio.registry.storage.dto.ContentWrapperDto; import io.apicurio.registry.storage.dto.DownloadContextDto; import io.apicurio.registry.storage.dto.EditableArtifactMetaDataDto; +import io.apicurio.registry.storage.dto.EditableBranchMetaDataDto; import io.apicurio.registry.storage.dto.EditableGroupMetaDataDto; import io.apicurio.registry.storage.dto.EditableVersionMetaDataDto; import io.apicurio.registry.storage.dto.GroupMetaDataDto; @@ -39,9 +42,9 @@ import io.apicurio.registry.storage.error.VersionNotFoundException; import io.apicurio.registry.storage.impexp.EntityInputStream; import io.apicurio.registry.types.RuleType; -import io.apicurio.registry.utils.impexp.ArtifactBranchEntity; import io.apicurio.registry.utils.impexp.ArtifactRuleEntity; import io.apicurio.registry.utils.impexp.ArtifactVersionEntity; +import io.apicurio.registry.utils.impexp.BranchEntity; import io.apicurio.registry.utils.impexp.CommentEntity; import io.apicurio.registry.utils.impexp.ContentEntity; import io.apicurio.registry.utils.impexp.Entity; @@ -334,7 +337,7 @@ void updateArtifactRule(String groupId, String artifactId, RuleType rule, RuleCo * @throws ArtifactNotFoundException * @throws RegistryStorageException */ - List getArtifactVersions(String groupId, String artifactId, ArtifactRetrievalBehavior behavior) throws ArtifactNotFoundException, RegistryStorageException; + List getArtifactVersions(String groupId, String artifactId, RetrievalBehavior behavior) throws ArtifactNotFoundException, RegistryStorageException; /** * Fetch the versions of the given artifact @@ -805,64 +808,40 @@ VersionSearchResultsDto searchVersions(Set filters, OrderBy orderB void importArtifactRule(ArtifactRuleEntity entity); - void importArtifactBranch(ArtifactBranchEntity entity); + void importBranch(BranchEntity entity); boolean isContentExists(String contentHash) throws RegistryStorageException; - boolean isArtifactRuleExists(String groupId, String artifactId, RuleType rule) throws RegistryStorageException; - boolean isGlobalRuleExists(RuleType rule) throws RegistryStorageException; - boolean isRoleMappingExists(String principalId); void updateContentCanonicalHash(String newCanonicalHash, long contentId, String contentHash); - Optional contentIdFromHash(String contentHash); - /** - * @return map from an artifact branch to a sorted list of GAVs, branch tip (latest) version first. - */ - Map> getArtifactBranches(GA ga); - - - /** - * @return sorted list of GAVs, branch tip (latest) version first. - */ - List getArtifactBranch(GA ga, BranchId branchId, ArtifactRetrievalBehavior behavior); + BranchSearchResultsDto getBranches(GA ga, int offset, int limit); + BranchMetaDataDto createBranch(GA ga, BranchId branchId, String description, List versions); - /** - * Add a version to the artifact branch. The branch is created if it does not exist. The version becomes a new branch tip (latest). - * Not supported for the "latest" branch. - */ - void createOrUpdateArtifactBranch(GAV gav, BranchId branchId); + BranchMetaDataDto getBranchMetaData(GA ga, BranchId branchId); + void updateBranchMetaData(GA ga, BranchId branchId, EditableBranchMetaDataDto dto); - /** - * Replace the content of the artifact branch with a new sequence of versions. - * Not supported for the "latest" branch. - */ - void createOrReplaceArtifactBranch(GA ga, BranchId branchId, List versions); + void deleteBranch(GA ga, BranchId branchId); + GAV getBranchTip(GA ga, BranchId branchId, RetrievalBehavior behavior); - /** - * @return GAV identifier of the branch tip (latest) version in the artifact branch. - */ - GAV getArtifactBranchTip(GA ga, BranchId branchId, ArtifactRetrievalBehavior behavior); + VersionSearchResultsDto getBranchVersions(GA ga, BranchId branchId, int offset, int limit); + void replaceBranchVersions(GA ga, BranchId branchId, List versions); - /** - * Delete artifact branch. - * Not supported for the "latest" branch. - */ - void deleteArtifactBranch(GA ga, BranchId branchId); + void appendVersionToBranch(GA ga, BranchId branchId, VersionId version); /** * Triggers a snapshot creation of the internal database. @@ -879,7 +858,7 @@ VersionSearchResultsDto searchVersions(Set filters, OrderBy orderB */ String createSnapshot(String snapshotLocation) throws RegistryStorageException; - enum ArtifactRetrievalBehavior { + enum RetrievalBehavior { DEFAULT, /** * Skip artifact versions with DISABLED state diff --git a/app/src/main/java/io/apicurio/registry/storage/StorageBehaviorProperties.java b/app/src/main/java/io/apicurio/registry/storage/StorageBehaviorProperties.java index 5922f13111..6a07da9769 100644 --- a/app/src/main/java/io/apicurio/registry/storage/StorageBehaviorProperties.java +++ b/app/src/main/java/io/apicurio/registry/storage/StorageBehaviorProperties.java @@ -1,7 +1,7 @@ package io.apicurio.registry.storage; import io.apicurio.common.apps.config.Info; -import io.apicurio.registry.storage.RegistryStorage.ArtifactRetrievalBehavior; +import io.apicurio.registry.storage.RegistryStorage.RetrievalBehavior; import org.eclipse.microprofile.config.inject.ConfigProperty; import jakarta.enterprise.context.ApplicationScoped; @@ -13,11 +13,11 @@ public class StorageBehaviorProperties { @Info(category = "storage", description = "Skip artifact versions with DISABLED state when retrieving latest artifact version", availableSince = "2.4.2-SNAPSHOT") boolean skipLatestDisabledArtifacts; - public ArtifactRetrievalBehavior getDefaultArtifactRetrievalBehavior() { + public RetrievalBehavior getDefaultArtifactRetrievalBehavior() { if (skipLatestDisabledArtifacts) { - return ArtifactRetrievalBehavior.SKIP_DISABLED_LATEST; + return RetrievalBehavior.SKIP_DISABLED_LATEST; } else { - return ArtifactRetrievalBehavior.DEFAULT; + return RetrievalBehavior.DEFAULT; } } } diff --git a/app/src/main/java/io/apicurio/registry/storage/decorator/ReadOnlyRegistryStorageDecorator.java b/app/src/main/java/io/apicurio/registry/storage/decorator/ReadOnlyRegistryStorageDecorator.java index 8e8e3b1eb6..68786bafda 100644 --- a/app/src/main/java/io/apicurio/registry/storage/decorator/ReadOnlyRegistryStorageDecorator.java +++ b/app/src/main/java/io/apicurio/registry/storage/decorator/ReadOnlyRegistryStorageDecorator.java @@ -1,21 +1,34 @@ package io.apicurio.registry.storage.decorator; -import java.util.List; -import java.util.function.Supplier; - -import io.apicurio.registry.model.*; -import io.apicurio.registry.storage.dto.*; -import io.apicurio.registry.storage.error.*; -import org.apache.commons.lang3.tuple.Pair; -import org.eclipse.microprofile.config.inject.ConfigProperty; - import io.apicurio.common.apps.config.Dynamic; import io.apicurio.common.apps.config.DynamicConfigPropertyDto; import io.apicurio.common.apps.config.Info; +import io.apicurio.registry.model.BranchId; +import io.apicurio.registry.model.GA; +import io.apicurio.registry.model.VersionId; import io.apicurio.registry.storage.RegistryStorage; +import io.apicurio.registry.storage.dto.ArtifactMetaDataDto; +import io.apicurio.registry.storage.dto.ArtifactVersionMetaDataDto; +import io.apicurio.registry.storage.dto.BranchMetaDataDto; +import io.apicurio.registry.storage.dto.CommentDto; +import io.apicurio.registry.storage.dto.ContentWrapperDto; +import io.apicurio.registry.storage.dto.DownloadContextDto; +import io.apicurio.registry.storage.dto.EditableArtifactMetaDataDto; +import io.apicurio.registry.storage.dto.EditableBranchMetaDataDto; +import io.apicurio.registry.storage.dto.EditableGroupMetaDataDto; +import io.apicurio.registry.storage.dto.EditableVersionMetaDataDto; +import io.apicurio.registry.storage.dto.GroupMetaDataDto; +import io.apicurio.registry.storage.dto.RuleConfigurationDto; +import io.apicurio.registry.storage.error.ArtifactNotFoundException; +import io.apicurio.registry.storage.error.GroupAlreadyExistsException; +import io.apicurio.registry.storage.error.GroupNotFoundException; +import io.apicurio.registry.storage.error.ReadOnlyStorageException; +import io.apicurio.registry.storage.error.RegistryStorageException; +import io.apicurio.registry.storage.error.RuleAlreadyExistsException; +import io.apicurio.registry.storage.error.RuleNotFoundException; import io.apicurio.registry.storage.impexp.EntityInputStream; import io.apicurio.registry.types.RuleType; -import io.apicurio.registry.utils.impexp.ArtifactBranchEntity; +import io.apicurio.registry.utils.impexp.BranchEntity; import io.apicurio.registry.utils.impexp.ArtifactRuleEntity; import io.apicurio.registry.utils.impexp.ArtifactVersionEntity; import io.apicurio.registry.utils.impexp.CommentEntity; @@ -23,6 +36,11 @@ import io.apicurio.registry.utils.impexp.GlobalRuleEntity; import io.apicurio.registry.utils.impexp.GroupEntity; import jakarta.enterprise.context.ApplicationScoped; +import org.apache.commons.lang3.tuple.Pair; +import org.eclipse.microprofile.config.inject.ConfigProperty; + +import java.util.List; +import java.util.function.Supplier; @ApplicationScoped public class ReadOnlyRegistryStorageDecorator extends RegistryStorageDecoratorReadOnlyBase implements RegistryStorageDecorator { @@ -361,9 +379,9 @@ public void importArtifactRule(ArtifactRuleEntity entity) { @Override - public void importArtifactBranch(ArtifactBranchEntity entity) { + public void importBranch(BranchEntity entity) { checkReadOnly(); - delegate.importArtifactBranch(entity); + delegate.importBranch(entity); } @@ -394,25 +412,34 @@ public long nextCommentId() { return delegate.nextCommentId(); } - @Override - public void createOrUpdateArtifactBranch(GAV gav, BranchId branchId) { + public BranchMetaDataDto createBranch(GA ga, BranchId branchId, String description, List versions) { checkReadOnly(); - delegate.createOrUpdateArtifactBranch(gav, branchId); + return delegate.createBranch(ga, branchId, description, versions); } + @Override + public void updateBranchMetaData(GA ga, BranchId branchId, EditableBranchMetaDataDto dto) { + checkReadOnly(); + delegate.updateBranchMetaData(ga, branchId, dto); + } @Override - public void createOrReplaceArtifactBranch(GA ga, BranchId branchId, List versions) { + public void appendVersionToBranch(GA ga, BranchId branchId, VersionId version) { checkReadOnly(); - delegate.createOrReplaceArtifactBranch(ga, branchId, versions); + delegate.appendVersionToBranch(ga, branchId, version); } + @Override + public void replaceBranchVersions(GA ga, BranchId branchId, List versions) { + checkReadOnly(); + delegate.replaceBranchVersions(ga, branchId, versions); + } @Override - public void deleteArtifactBranch(GA ga, BranchId branchId) { + public void deleteBranch(GA ga, BranchId branchId) { checkReadOnly(); - delegate.deleteArtifactBranch(ga, branchId); + delegate.deleteBranch(ga, branchId); } @Override diff --git a/app/src/main/java/io/apicurio/registry/storage/decorator/RegistryStorageDecoratorBase.java b/app/src/main/java/io/apicurio/registry/storage/decorator/RegistryStorageDecoratorBase.java index 3f8b375e79..658b587939 100644 --- a/app/src/main/java/io/apicurio/registry/storage/decorator/RegistryStorageDecoratorBase.java +++ b/app/src/main/java/io/apicurio/registry/storage/decorator/RegistryStorageDecoratorBase.java @@ -1,14 +1,31 @@ package io.apicurio.registry.storage.decorator; -import java.util.List; - import io.apicurio.common.apps.config.DynamicConfigPropertyDto; -import io.apicurio.registry.model.*; -import io.apicurio.registry.storage.dto.*; -import io.apicurio.registry.storage.error.*; +import io.apicurio.registry.model.BranchId; +import io.apicurio.registry.model.GA; +import io.apicurio.registry.model.VersionId; +import io.apicurio.registry.storage.dto.ArtifactMetaDataDto; +import io.apicurio.registry.storage.dto.ArtifactVersionMetaDataDto; +import io.apicurio.registry.storage.dto.BranchMetaDataDto; +import io.apicurio.registry.storage.dto.CommentDto; +import io.apicurio.registry.storage.dto.ContentWrapperDto; +import io.apicurio.registry.storage.dto.DownloadContextDto; +import io.apicurio.registry.storage.dto.EditableArtifactMetaDataDto; +import io.apicurio.registry.storage.dto.EditableBranchMetaDataDto; +import io.apicurio.registry.storage.dto.EditableGroupMetaDataDto; +import io.apicurio.registry.storage.dto.EditableVersionMetaDataDto; +import io.apicurio.registry.storage.dto.GroupMetaDataDto; +import io.apicurio.registry.storage.dto.RuleConfigurationDto; +import io.apicurio.registry.storage.error.ArtifactNotFoundException; +import io.apicurio.registry.storage.error.GroupAlreadyExistsException; +import io.apicurio.registry.storage.error.GroupNotFoundException; +import io.apicurio.registry.storage.error.RegistryStorageException; +import io.apicurio.registry.storage.error.RuleAlreadyExistsException; +import io.apicurio.registry.storage.error.RuleNotFoundException; +import io.apicurio.registry.storage.error.VersionNotFoundException; import io.apicurio.registry.storage.impexp.EntityInputStream; import io.apicurio.registry.types.RuleType; -import io.apicurio.registry.utils.impexp.ArtifactBranchEntity; +import io.apicurio.registry.utils.impexp.BranchEntity; import io.apicurio.registry.utils.impexp.ArtifactRuleEntity; import io.apicurio.registry.utils.impexp.ArtifactVersionEntity; import io.apicurio.registry.utils.impexp.CommentEntity; @@ -17,6 +34,8 @@ import io.apicurio.registry.utils.impexp.GroupEntity; import org.apache.commons.lang3.tuple.Pair; +import java.util.List; + /** * Forwards all method calls to the delegate, extends the read-only base. *

@@ -281,8 +300,8 @@ public void importArtifactRule(ArtifactRuleEntity entity) { @Override - public void importArtifactBranch(ArtifactBranchEntity entity) { - delegate.importArtifactBranch(entity); + public void importBranch(BranchEntity entity) { + delegate.importBranch(entity); } @@ -311,20 +330,28 @@ public long nextCommentId() { @Override - public void createOrUpdateArtifactBranch(GAV gav, BranchId branchId) { - delegate.createOrUpdateArtifactBranch(gav, branchId); + public void deleteBranch(GA ga, BranchId branchId) { + delegate.deleteBranch(ga, branchId); } + @Override + public void replaceBranchVersions(GA ga, BranchId branchId, List versions) { + delegate.replaceBranchVersions(ga, branchId, versions); + } @Override - public void createOrReplaceArtifactBranch(GA ga, BranchId branchId, List versions) { - delegate.createOrReplaceArtifactBranch(ga, branchId, versions); + public BranchMetaDataDto createBranch(GA ga, BranchId branchId, String description, List versions) { + return delegate.createBranch(ga, branchId, description, versions); } + @Override + public void appendVersionToBranch(GA ga, BranchId branchId, VersionId version) { + delegate.appendVersionToBranch(ga, branchId, version); + } @Override - public void deleteArtifactBranch(GA ga, BranchId branchId) { - delegate.deleteArtifactBranch(ga, branchId); + public void updateBranchMetaData(GA ga, BranchId branchId, EditableBranchMetaDataDto dto) { + delegate.updateBranchMetaData(ga, branchId, dto); } @Override diff --git a/app/src/main/java/io/apicurio/registry/storage/decorator/RegistryStorageDecoratorReadOnlyBase.java b/app/src/main/java/io/apicurio/registry/storage/decorator/RegistryStorageDecoratorReadOnlyBase.java index 0da4d6b8c3..29456c4fbb 100644 --- a/app/src/main/java/io/apicurio/registry/storage/decorator/RegistryStorageDecoratorReadOnlyBase.java +++ b/app/src/main/java/io/apicurio/registry/storage/decorator/RegistryStorageDecoratorReadOnlyBase.java @@ -10,6 +10,8 @@ import io.apicurio.registry.storage.dto.ArtifactReferenceDto; import io.apicurio.registry.storage.dto.ArtifactSearchResultsDto; import io.apicurio.registry.storage.dto.ArtifactVersionMetaDataDto; +import io.apicurio.registry.storage.dto.BranchMetaDataDto; +import io.apicurio.registry.storage.dto.BranchSearchResultsDto; import io.apicurio.registry.storage.dto.CommentDto; import io.apicurio.registry.storage.dto.ContentWrapperDto; import io.apicurio.registry.storage.dto.GroupMetaDataDto; @@ -339,24 +341,28 @@ public List getEnabledArtifactContentIds(String groupId, String artifactId } @Override - public List getArtifactVersions(String groupId, String artifactId, ArtifactRetrievalBehavior behavior) + public List getArtifactVersions(String groupId, String artifactId, RetrievalBehavior behavior) throws ArtifactNotFoundException, RegistryStorageException { return delegate.getArtifactVersions(groupId, artifactId, behavior); } @Override - public GAV getArtifactBranchTip(GA ga, BranchId branchId, ArtifactRetrievalBehavior behavior) { - return delegate.getArtifactBranchTip(ga, branchId, behavior); + public GAV getBranchTip(GA ga, BranchId branchId, RetrievalBehavior behavior) { + return delegate.getBranchTip(ga, branchId, behavior); } @Override - public Map> getArtifactBranches(GA ga) { - return delegate.getArtifactBranches(ga); + public VersionSearchResultsDto getBranchVersions(GA ga, BranchId branchId, int offset, int limit) { + return delegate.getBranchVersions(ga, branchId, offset, limit); } @Override - public List getArtifactBranch(GA ga, BranchId branchId, ArtifactRetrievalBehavior behavior) { - return delegate.getArtifactBranch(ga, branchId, behavior); + public BranchSearchResultsDto getBranches(GA ga, int offset, int limit) { + return delegate.getBranches(ga, offset, limit); } + @Override + public BranchMetaDataDto getBranchMetaData(GA ga, BranchId branchId) { + return delegate.getBranchMetaData(ga, branchId); + } } diff --git a/app/src/main/java/io/apicurio/registry/storage/dto/ArtifactBranchDto.java b/app/src/main/java/io/apicurio/registry/storage/dto/ArtifactBranchDto.java deleted file mode 100644 index f90938c83d..0000000000 --- a/app/src/main/java/io/apicurio/registry/storage/dto/ArtifactBranchDto.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.apicurio.registry.storage.dto; - -import io.apicurio.registry.model.GAV; -import lombok.*; - -@NoArgsConstructor -@AllArgsConstructor -@Builder -@Getter -@Setter -@EqualsAndHashCode -@ToString -public class ArtifactBranchDto { - - private String groupId; - - private String artifactId; - - private String branchId; - - private int branchOrder; - - private String version; - - - public GAV toGAV() { - return new GAV(groupId, artifactId, version); - } -} diff --git a/app/src/main/java/io/apicurio/registry/storage/dto/BranchMetaDataDto.java b/app/src/main/java/io/apicurio/registry/storage/dto/BranchMetaDataDto.java new file mode 100644 index 0000000000..fb598ce718 --- /dev/null +++ b/app/src/main/java/io/apicurio/registry/storage/dto/BranchMetaDataDto.java @@ -0,0 +1,32 @@ +package io.apicurio.registry.storage.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +import java.io.Serializable; + +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Getter +@Setter +@EqualsAndHashCode +@ToString +public class BranchMetaDataDto implements Serializable { + + private String groupId; + private String artifactId; + private String branchId; + private String description; + private boolean userDefined; + private String owner; + private long createdOn; + private String modifiedBy; + private long modifiedOn; + +} diff --git a/app/src/main/java/io/apicurio/registry/storage/dto/BranchSearchResultsDto.java b/app/src/main/java/io/apicurio/registry/storage/dto/BranchSearchResultsDto.java new file mode 100644 index 0000000000..d5542656a4 --- /dev/null +++ b/app/src/main/java/io/apicurio/registry/storage/dto/BranchSearchResultsDto.java @@ -0,0 +1,28 @@ +package io.apicurio.registry.storage.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +import java.util.ArrayList; +import java.util.List; + + +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Getter +@Setter +@EqualsAndHashCode +@ToString +public class BranchSearchResultsDto { + + @Builder.Default + private List branches = new ArrayList(); + + private Integer count; +} diff --git a/app/src/main/java/io/apicurio/registry/storage/dto/EditableBranchMetaDataDto.java b/app/src/main/java/io/apicurio/registry/storage/dto/EditableBranchMetaDataDto.java new file mode 100644 index 0000000000..a08a890e42 --- /dev/null +++ b/app/src/main/java/io/apicurio/registry/storage/dto/EditableBranchMetaDataDto.java @@ -0,0 +1,23 @@ +package io.apicurio.registry.storage.dto; + +import io.quarkus.runtime.annotations.RegisterForReflection; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Getter +@Setter +@EqualsAndHashCode +@ToString +@RegisterForReflection +public class EditableBranchMetaDataDto { + + private String description; +} diff --git a/app/src/main/java/io/apicurio/registry/storage/dto/SearchedBranchDto.java b/app/src/main/java/io/apicurio/registry/storage/dto/SearchedBranchDto.java new file mode 100644 index 0000000000..1f19ba313b --- /dev/null +++ b/app/src/main/java/io/apicurio/registry/storage/dto/SearchedBranchDto.java @@ -0,0 +1,31 @@ +package io.apicurio.registry.storage.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + + +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Getter +@Setter +@EqualsAndHashCode +@ToString +public class SearchedBranchDto { + + private String groupId; + private String artifactId; + private String branchId; + private String description; + private boolean userDefined; + private String owner; + private long createdOn; + private String modifiedBy; + private long modifiedOn; + +} diff --git a/app/src/main/java/io/apicurio/registry/storage/error/ArtifactBranchAlreadyContainsVersionException.java b/app/src/main/java/io/apicurio/registry/storage/error/ArtifactBranchAlreadyContainsVersionException.java deleted file mode 100644 index bd56215669..0000000000 --- a/app/src/main/java/io/apicurio/registry/storage/error/ArtifactBranchAlreadyContainsVersionException.java +++ /dev/null @@ -1,28 +0,0 @@ -package io.apicurio.registry.storage.error; - -import io.apicurio.registry.model.BranchId; -import io.apicurio.registry.model.GAV; -import lombok.Getter; - -public class ArtifactBranchAlreadyContainsVersionException extends AlreadyExistsException { - - private static final long serialVersionUID = -2869727219770505486L; - - @Getter - private final GAV gav; - - @Getter - private final BranchId branchId; - - - public ArtifactBranchAlreadyContainsVersionException(GAV gav, BranchId branchId) { - super(message(gav, branchId)); - this.gav = gav; - this.branchId = branchId; - } - - - private static String message(GAV gav, BranchId branchId) { - return "Artifact branch '" + branchId + "' already contains version '" + gav + "'."; - } -} diff --git a/app/src/main/java/io/apicurio/registry/storage/error/ArtifactBranchNotFoundException.java b/app/src/main/java/io/apicurio/registry/storage/error/ArtifactBranchNotFoundException.java deleted file mode 100644 index 82efebec05..0000000000 --- a/app/src/main/java/io/apicurio/registry/storage/error/ArtifactBranchNotFoundException.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.apicurio.registry.storage.error; - -import io.apicurio.registry.model.BranchId; -import io.apicurio.registry.model.GA; -import lombok.Getter; - - -public class ArtifactBranchNotFoundException extends NotFoundException { - - private static final long serialVersionUID = -5382272137668348037L; - - @Getter - private final GA ga; - - @Getter - private final BranchId branchId; - - - public ArtifactBranchNotFoundException(GA ga, BranchId branchId) { - super(message(ga, branchId)); - this.ga = ga; - this.branchId = branchId; - } - - - private static String message(GA ga, BranchId branchId) { - return "No branch '" + branchId + "' in artifact '" + ga + "' was found."; - } -} diff --git a/app/src/main/java/io/apicurio/registry/storage/error/BranchAlreadyExistsException.java b/app/src/main/java/io/apicurio/registry/storage/error/BranchAlreadyExistsException.java new file mode 100644 index 0000000000..d3c02b39d2 --- /dev/null +++ b/app/src/main/java/io/apicurio/registry/storage/error/BranchAlreadyExistsException.java @@ -0,0 +1,18 @@ +package io.apicurio.registry.storage.error; + +import lombok.Getter; + +@Getter +public class BranchAlreadyExistsException extends AlreadyExistsException { + + private final String groupId; + private final String artifactId; + private final String branchId; + + public BranchAlreadyExistsException(String groupId, String artifactId, String branchId) { + super("Branch '" + branchId + "' already exists."); + this.groupId = groupId; + this.artifactId = artifactId; + this.branchId = branchId; + } +} diff --git a/app/src/main/java/io/apicurio/registry/storage/error/BranchNotFoundException.java b/app/src/main/java/io/apicurio/registry/storage/error/BranchNotFoundException.java new file mode 100644 index 0000000000..480eb21374 --- /dev/null +++ b/app/src/main/java/io/apicurio/registry/storage/error/BranchNotFoundException.java @@ -0,0 +1,31 @@ +package io.apicurio.registry.storage.error; + +import lombok.Getter; + +@Getter +public class BranchNotFoundException extends NotFoundException { + + private final String groupId; + private final String artifactId; + private final String branchId; + + public BranchNotFoundException(String groupId, String artifactId, String branchId) { + super(message(groupId, artifactId, branchId)); + this.groupId = groupId; + this.artifactId = artifactId; + this.branchId = branchId; + } + + + public BranchNotFoundException(String groupId, String artifactId, String branchId, Exception cause) { + super(message(groupId, artifactId, branchId), cause); + this.groupId = groupId; + this.artifactId = artifactId; + this.branchId = branchId; + } + + + private static String message(String groupId, String artifactId, String branchId) { + return "No branch '" + branchId + "' was found in " + groupId + "/" + artifactId + "."; + } +} diff --git a/app/src/main/java/io/apicurio/registry/storage/error/VersionAlreadyExistsOnBranchException.java b/app/src/main/java/io/apicurio/registry/storage/error/VersionAlreadyExistsOnBranchException.java new file mode 100644 index 0000000000..5e101d405c --- /dev/null +++ b/app/src/main/java/io/apicurio/registry/storage/error/VersionAlreadyExistsOnBranchException.java @@ -0,0 +1,29 @@ +package io.apicurio.registry.storage.error; + +import lombok.Getter; + +@Getter +public class VersionAlreadyExistsOnBranchException extends AlreadyExistsException { + + private static final long serialVersionUID = 3567623491368394677L; + + private String groupId; + private String artifactId; + private String version; + private String branchId; + + + public VersionAlreadyExistsOnBranchException(String groupId, String artifactId, String version, String branchId) { + super(message(groupId, artifactId, version, branchId)); + this.groupId = groupId; + this.artifactId = artifactId; + this.version = version; + this.branchId = branchId; + } + + + private static String message(String groupId, String artifactId, String version, String branchId) { + return "Version '" + version + "' (for artifact ID '" + artifactId + "' " + + "in group '" + groupId + "') already exists in branch '" + branchId + "'."; + } +} diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/gitops/AbstractReadOnlyRegistryStorage.java b/app/src/main/java/io/apicurio/registry/storage/impl/gitops/AbstractReadOnlyRegistryStorage.java index 0f57e74990..7f05a731d6 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/gitops/AbstractReadOnlyRegistryStorage.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/gitops/AbstractReadOnlyRegistryStorage.java @@ -1,19 +1,27 @@ package io.apicurio.registry.storage.impl.gitops; -import java.util.List; - import io.apicurio.common.apps.config.DynamicConfigPropertyDto; import io.apicurio.registry.exception.UnreachableCodeException; import io.apicurio.registry.model.BranchId; import io.apicurio.registry.model.GA; -import io.apicurio.registry.model.GAV; import io.apicurio.registry.model.VersionId; import io.apicurio.registry.storage.RegistryStorage; -import io.apicurio.registry.storage.dto.*; +import io.apicurio.registry.storage.dto.ArtifactMetaDataDto; +import io.apicurio.registry.storage.dto.ArtifactVersionMetaDataDto; +import io.apicurio.registry.storage.dto.BranchMetaDataDto; +import io.apicurio.registry.storage.dto.CommentDto; +import io.apicurio.registry.storage.dto.ContentWrapperDto; +import io.apicurio.registry.storage.dto.DownloadContextDto; +import io.apicurio.registry.storage.dto.EditableArtifactMetaDataDto; +import io.apicurio.registry.storage.dto.EditableBranchMetaDataDto; +import io.apicurio.registry.storage.dto.EditableGroupMetaDataDto; +import io.apicurio.registry.storage.dto.EditableVersionMetaDataDto; +import io.apicurio.registry.storage.dto.GroupMetaDataDto; +import io.apicurio.registry.storage.dto.RuleConfigurationDto; import io.apicurio.registry.storage.error.RegistryStorageException; import io.apicurio.registry.storage.impexp.EntityInputStream; import io.apicurio.registry.types.RuleType; -import io.apicurio.registry.utils.impexp.ArtifactBranchEntity; +import io.apicurio.registry.utils.impexp.BranchEntity; import io.apicurio.registry.utils.impexp.ArtifactRuleEntity; import io.apicurio.registry.utils.impexp.ArtifactVersionEntity; import io.apicurio.registry.utils.impexp.CommentEntity; @@ -22,6 +30,8 @@ import io.apicurio.registry.utils.impexp.GroupEntity; import org.apache.commons.lang3.tuple.Pair; +import java.util.List; + public abstract class AbstractReadOnlyRegistryStorage implements RegistryStorage { @@ -291,7 +301,7 @@ public void importArtifactRule(ArtifactRuleEntity entity) { @Override - public void importArtifactBranch(ArtifactBranchEntity entity) { + public void importBranch(BranchEntity entity) { readOnlyViolation(); } @@ -322,21 +332,29 @@ public long nextCommentId() { return 0; } - @Override - public void createOrUpdateArtifactBranch(GAV gav, BranchId branchId) { + public void deleteBranch(GA ga, BranchId branchId) { readOnlyViolation(); } + @Override + public BranchMetaDataDto createBranch(GA ga, BranchId branchId, String description, List versions) { + readOnlyViolation(); + return null; + } @Override - public void createOrReplaceArtifactBranch(GA ga, BranchId branchId, List versions) { + public void appendVersionToBranch(GA ga, BranchId branchId, VersionId version) { readOnlyViolation(); } + @Override + public void replaceBranchVersions(GA ga, BranchId branchId, List versions) { + readOnlyViolation(); + } @Override - public void deleteArtifactBranch(GA ga, BranchId branchId) { + public void updateBranchMetaData(GA ga, BranchId branchId, EditableBranchMetaDataDto dto) { readOnlyViolation(); } } diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/gitops/GitOpsRegistryStorage.java b/app/src/main/java/io/apicurio/registry/storage/impl/gitops/GitOpsRegistryStorage.java index 9ee97e527d..71a766f8ef 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/gitops/GitOpsRegistryStorage.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/gitops/GitOpsRegistryStorage.java @@ -14,6 +14,8 @@ import io.apicurio.registry.storage.dto.ArtifactReferenceDto; import io.apicurio.registry.storage.dto.ArtifactSearchResultsDto; import io.apicurio.registry.storage.dto.ArtifactVersionMetaDataDto; +import io.apicurio.registry.storage.dto.BranchMetaDataDto; +import io.apicurio.registry.storage.dto.BranchSearchResultsDto; import io.apicurio.registry.storage.dto.CommentDto; import io.apicurio.registry.storage.dto.ContentWrapperDto; import io.apicurio.registry.storage.dto.GroupMetaDataDto; @@ -282,7 +284,7 @@ public List getArtifactVersions(String groupId, String artifactId) { } @Override - public List getArtifactVersions(String groupId, String artifactId, ArtifactRetrievalBehavior behavior) { + public List getArtifactVersions(String groupId, String artifactId, RetrievalBehavior behavior) { return proxy(storage -> storage.getArtifactVersions(groupId, artifactId, behavior)); } @@ -496,20 +498,23 @@ public List getConfigProperties() { @Override - public Map> getArtifactBranches(GA ga) { - return proxy(storage -> storage.getArtifactBranches(ga)); + public BranchMetaDataDto getBranchMetaData(GA ga, BranchId branchId) { + return proxy(storage -> storage.getBranchMetaData(ga, branchId)); } - @Override - public GAV getArtifactBranchTip(GA ga, BranchId branchId, ArtifactRetrievalBehavior behavior) { - return proxy(storage -> storage.getArtifactBranchTip(ga, branchId, behavior)); + public BranchSearchResultsDto getBranches(GA ga, int offset, int limit) { + return proxy(storage -> storage.getBranches(ga, offset, limit)); } + @Override + public VersionSearchResultsDto getBranchVersions(GA ga, BranchId branchId, int offset, int limit) { + return proxy(storage -> storage.getBranchVersions(ga, branchId, offset, limit)); + } @Override - public List getArtifactBranch(GA ga, BranchId branchId, ArtifactRetrievalBehavior behavior) { - return proxy(storage -> storage.getArtifactBranch(ga, branchId, behavior)); + public GAV getBranchTip(GA ga, BranchId branchId, RetrievalBehavior behavior) { + return proxy(storage -> storage.getBranchTip(ga, branchId, behavior)); } @Override diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/KafkaSqlRegistryStorage.java b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/KafkaSqlRegistryStorage.java index 257281af8d..14568c6a1d 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/KafkaSqlRegistryStorage.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/KafkaSqlRegistryStorage.java @@ -8,7 +8,6 @@ import io.apicurio.registry.metrics.health.readiness.PersistenceTimeoutReadinessApply; import io.apicurio.registry.model.BranchId; import io.apicurio.registry.model.GA; -import io.apicurio.registry.model.GAV; import io.apicurio.registry.model.VersionId; import io.apicurio.registry.storage.RegistryStorage; import io.apicurio.registry.storage.StorageEvent; @@ -31,7 +30,7 @@ import io.apicurio.registry.storage.importing.SqlDataImporter; import io.apicurio.registry.types.RuleType; import io.apicurio.registry.utils.ConcurrentUtil; -import io.apicurio.registry.utils.impexp.ArtifactBranchEntity; +import io.apicurio.registry.utils.impexp.BranchEntity; import io.apicurio.registry.utils.impexp.ArtifactRuleEntity; import io.apicurio.registry.utils.impexp.ArtifactVersionEntity; import io.apicurio.registry.utils.impexp.CommentEntity; @@ -59,7 +58,6 @@ import java.nio.file.Path; import java.time.Duration; import java.util.*; -import java.util.stream.Collectors; /** * An implementation of a registry artifactStore that extends the basic SQL artifactStore but federates 'write' operations @@ -782,11 +780,11 @@ public void importArtifactRule(ArtifactRuleEntity entity) { } /** - * @see io.apicurio.registry.storage.RegistryStorage#importArtifactBranch(io.apicurio.registry.utils.impexp.ArtifactBranchEntity) + * @see io.apicurio.registry.storage.RegistryStorage#importBranch(BranchEntity) */ @Override - public void importArtifactBranch(ArtifactBranchEntity entity) { - var message = new ImportArtifactBranch1Message(entity); + public void importBranch(BranchEntity entity) { + var message = new ImportBranch1Message(entity); var uuid = ConcurrentUtil.get(submitter.submitMessage(message)); coordinator.waitForResponse(uuid); } @@ -801,35 +799,41 @@ public void updateContentCanonicalHash(String newCanonicalHash, long contentId, coordinator.waitForResponse(uuid); } - /** - * @see io.apicurio.registry.storage.RegistryStorage#createOrUpdateArtifactBranch(io.apicurio.registry.model.GAV, io.apicurio.registry.model.BranchId) - */ @Override - public void createOrUpdateArtifactBranch(GAV gav, BranchId branchId) { - var message = new CreateOrUpdateArtifactBranch2Message(gav.getRawGroupIdWithNull(), gav.getRawArtifactId(), - gav.getRawVersionId(), branchId.getRawBranchId()); + public void appendVersionToBranch(GA ga, BranchId branchId, VersionId version) { + var message = new AppendVersionToBranch3Message(ga.getRawGroupIdWithNull(), ga.getRawArtifactId(), branchId.getRawBranchId(), version.getRawVersionId()); var uuid = ConcurrentUtil.get(submitter.submitMessage(message)); coordinator.waitForResponse(uuid); } - /** - * @see io.apicurio.registry.storage.RegistryStorage#createOrReplaceArtifactBranch(io.apicurio.registry.model.GA, io.apicurio.registry.model.BranchId, java.util.List) - */ @Override - public void createOrReplaceArtifactBranch(GA ga, BranchId branchId, List versions) { - List rawVersions = versions == null ? List.of() : versions.stream().map(v -> v.getRawVersionId()).collect(Collectors.toList()); - var message = new CreateOrReplaceArtifactBranch3Message(ga.getRawGroupIdWithNull(), ga.getRawArtifactId(), - branchId.getRawBranchId(), rawVersions); + public void updateBranchMetaData(GA ga, BranchId branchId, EditableBranchMetaDataDto dto) { + var message = new UpdateBranchMetaData3Message(ga.getRawGroupIdWithNull(), ga.getRawArtifactId(), branchId.getRawBranchId(), dto); var uuid = ConcurrentUtil.get(submitter.submitMessage(message)); coordinator.waitForResponse(uuid); } + @Override + public void replaceBranchVersions(GA ga, BranchId branchId, List versions) { + var message = new ReplaceBranchVersions3Message(ga.getRawGroupIdWithNull(), ga.getRawArtifactId(), branchId.getRawBranchId(), + versions.stream().map(VersionId::getRawVersionId).toList()); + var uuid = ConcurrentUtil.get(submitter.submitMessage(message)); + coordinator.waitForResponse(uuid); + } + + @Override + public BranchMetaDataDto createBranch(GA ga, BranchId branchId, String description, List versions) { + var message = new CreateBranch4Message(ga.getRawGroupIdWithNull(), ga.getRawArtifactId(), branchId.getRawBranchId(), description, versions); + var uuid = ConcurrentUtil.get(submitter.submitMessage(message)); + return (BranchMetaDataDto) coordinator.waitForResponse(uuid); + } + /** - * @see io.apicurio.registry.storage.RegistryStorage#deleteArtifactBranch(io.apicurio.registry.model.GA, io.apicurio.registry.model.BranchId) + * @see io.apicurio.registry.storage.RegistryStorage#deleteBranch(io.apicurio.registry.model.GA, io.apicurio.registry.model.BranchId) */ @Override - public void deleteArtifactBranch(GA ga, BranchId branchId) { - var message = new DeleteArtifactBranch2Message(ga.getRawGroupIdWithNull(), ga.getRawArtifactId(), branchId.getRawBranchId()); + public void deleteBranch(GA ga, BranchId branchId) { + var message = new DeleteBranch2Message(ga.getRawGroupIdWithNull(), ga.getRawArtifactId(), branchId.getRawBranchId()); var uuid = ConcurrentUtil.get(submitter.submitMessage(message)); coordinator.waitForResponse(uuid); } diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/CreateOrUpdateArtifactBranch2Message.java b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/AppendVersionToBranch3Message.java similarity index 71% rename from app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/CreateOrUpdateArtifactBranch2Message.java rename to app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/AppendVersionToBranch3Message.java index fb9120244e..e9a01cc351 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/CreateOrUpdateArtifactBranch2Message.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/AppendVersionToBranch3Message.java @@ -1,7 +1,8 @@ package io.apicurio.registry.storage.impl.kafkasql.messages; import io.apicurio.registry.model.BranchId; -import io.apicurio.registry.model.GAV; +import io.apicurio.registry.model.GA; +import io.apicurio.registry.model.VersionId; import io.apicurio.registry.storage.RegistryStorage; import io.apicurio.registry.storage.impl.kafkasql.AbstractMessage; import lombok.AllArgsConstructor; @@ -19,20 +20,20 @@ @Setter @EqualsAndHashCode(callSuper = false) @ToString -public class CreateOrUpdateArtifactBranch2Message extends AbstractMessage { +public class AppendVersionToBranch3Message extends AbstractMessage { private String groupId; private String artifactId; - private String version; private String branchId; + private String version; /** - * @see io.apicurio.registry.storage.impl.kafkasql.KafkaSqlMessage#dispatchTo(io.apicurio.registry.storage.RegistryStorage) + * @see io.apicurio.registry.storage.impl.kafkasql.KafkaSqlMessage#dispatchTo(RegistryStorage) */ @Override public Object dispatchTo(RegistryStorage storage) { - GAV gav = new GAV(groupId, artifactId, version); - storage.createOrUpdateArtifactBranch(gav, new BranchId(branchId)); + GA ga = new GA(groupId, artifactId); + storage.appendVersionToBranch(ga, new BranchId(branchId), new VersionId(version)); return null; } diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/CreateBranch4Message.java b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/CreateBranch4Message.java new file mode 100644 index 0000000000..21655d98fa --- /dev/null +++ b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/CreateBranch4Message.java @@ -0,0 +1,41 @@ +package io.apicurio.registry.storage.impl.kafkasql.messages; + +import io.apicurio.registry.model.BranchId; +import io.apicurio.registry.model.GA; +import io.apicurio.registry.storage.RegistryStorage; +import io.apicurio.registry.storage.impl.kafkasql.AbstractMessage; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +import java.util.List; + +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Getter +@Setter +@EqualsAndHashCode(callSuper = false) +@ToString +public class CreateBranch4Message extends AbstractMessage { + + private String groupId; + private String artifactId; + private String branchId; + private String description; + private List versions; + + /** + * @see io.apicurio.registry.storage.impl.kafkasql.KafkaSqlMessage#dispatchTo(RegistryStorage) + */ + @Override + public Object dispatchTo(RegistryStorage storage) { + GA ga = new GA(groupId, artifactId); + return storage.createBranch(ga, new BranchId(branchId), description, versions); + } + +} diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/DeleteArtifactBranch2Message.java b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/DeleteBranch2Message.java similarity index 87% rename from app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/DeleteArtifactBranch2Message.java rename to app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/DeleteBranch2Message.java index 72efa7b4eb..8e156193d3 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/DeleteArtifactBranch2Message.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/DeleteBranch2Message.java @@ -19,7 +19,7 @@ @Setter @EqualsAndHashCode(callSuper = false) @ToString -public class DeleteArtifactBranch2Message extends AbstractMessage { +public class DeleteBranch2Message extends AbstractMessage { private String groupId; private String artifactId; @@ -31,7 +31,7 @@ public class DeleteArtifactBranch2Message extends AbstractMessage { @Override public Object dispatchTo(RegistryStorage storage) { GA ga = new GA(groupId, artifactId); - storage.deleteArtifactBranch(ga, new BranchId(branchId)); + storage.deleteBranch(ga, new BranchId(branchId)); return null; } diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/ImportArtifactBranch1Message.java b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/ImportBranch1Message.java similarity index 77% rename from app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/ImportArtifactBranch1Message.java rename to app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/ImportBranch1Message.java index 04d83e4253..a96a50db30 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/ImportArtifactBranch1Message.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/ImportBranch1Message.java @@ -2,7 +2,7 @@ import io.apicurio.registry.storage.RegistryStorage; import io.apicurio.registry.storage.impl.kafkasql.AbstractMessage; -import io.apicurio.registry.utils.impexp.ArtifactBranchEntity; +import io.apicurio.registry.utils.impexp.BranchEntity; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.EqualsAndHashCode; @@ -18,16 +18,16 @@ @Setter @EqualsAndHashCode(callSuper = false) @ToString -public class ImportArtifactBranch1Message extends AbstractMessage { +public class ImportBranch1Message extends AbstractMessage { - private ArtifactBranchEntity entity; + private BranchEntity entity; /** * @see io.apicurio.registry.storage.impl.kafkasql.KafkaSqlMessage#dispatchTo(io.apicurio.registry.storage.RegistryStorage) */ @Override public Object dispatchTo(RegistryStorage storage) { - storage.importArtifactBranch(entity); + storage.importBranch(entity); return null; } diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/CreateOrReplaceArtifactBranch3Message.java b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/ReplaceBranchVersions3Message.java similarity index 69% rename from app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/CreateOrReplaceArtifactBranch3Message.java rename to app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/ReplaceBranchVersions3Message.java index 8ecc17dc21..41655a3fe3 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/CreateOrReplaceArtifactBranch3Message.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/ReplaceBranchVersions3Message.java @@ -1,8 +1,5 @@ package io.apicurio.registry.storage.impl.kafkasql.messages; -import java.util.List; -import java.util.stream.Collectors; - import io.apicurio.registry.model.BranchId; import io.apicurio.registry.model.GA; import io.apicurio.registry.model.VersionId; @@ -16,6 +13,8 @@ import lombok.Setter; import lombok.ToString; +import java.util.List; + @NoArgsConstructor @AllArgsConstructor @Builder @@ -23,7 +22,7 @@ @Setter @EqualsAndHashCode(callSuper = false) @ToString -public class CreateOrReplaceArtifactBranch3Message extends AbstractMessage { +public class ReplaceBranchVersions3Message extends AbstractMessage { private String groupId; private String artifactId; @@ -31,14 +30,12 @@ public class CreateOrReplaceArtifactBranch3Message extends AbstractMessage { private List versions; /** - * @see io.apicurio.registry.storage.impl.kafkasql.KafkaSqlMessage#dispatchTo(io.apicurio.registry.storage.RegistryStorage) + * @see io.apicurio.registry.storage.impl.kafkasql.KafkaSqlMessage#dispatchTo(RegistryStorage) */ @Override public Object dispatchTo(RegistryStorage storage) { GA ga = new GA(groupId, artifactId); - BranchId bid = new BranchId(branchId); - List versionIds = versions == null ? List.of() : versions.stream().map(v -> new VersionId(v)).collect(Collectors.toList()); - storage.createOrReplaceArtifactBranch(ga, bid, versionIds); + storage.replaceBranchVersions(ga, new BranchId(branchId), versions.stream().map(VersionId::new).toList()); return null; } diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/UpdateBranchMetaData3Message.java b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/UpdateBranchMetaData3Message.java new file mode 100644 index 0000000000..143092c16d --- /dev/null +++ b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/UpdateBranchMetaData3Message.java @@ -0,0 +1,40 @@ +package io.apicurio.registry.storage.impl.kafkasql.messages; + +import io.apicurio.registry.model.BranchId; +import io.apicurio.registry.model.GA; +import io.apicurio.registry.storage.RegistryStorage; +import io.apicurio.registry.storage.dto.EditableBranchMetaDataDto; +import io.apicurio.registry.storage.impl.kafkasql.AbstractMessage; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Getter +@Setter +@EqualsAndHashCode(callSuper = false) +@ToString +public class UpdateBranchMetaData3Message extends AbstractMessage { + + private String groupId; + private String artifactId; + private String branchId; + private EditableBranchMetaDataDto dto; + + /** + * @see io.apicurio.registry.storage.impl.kafkasql.KafkaSqlMessage#dispatchTo(RegistryStorage) + */ + @Override + public Object dispatchTo(RegistryStorage storage) { + GA ga = new GA(groupId, artifactId); + storage.updateBranchMetaData(ga, new BranchId(branchId), dto); + return null; + } + +} diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/serde/KafkaSqlMessageIndex.java b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/serde/KafkaSqlMessageIndex.java index cdc7eed88b..64ed84f2eb 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/serde/KafkaSqlMessageIndex.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/serde/KafkaSqlMessageIndex.java @@ -31,13 +31,11 @@ private static void indexMessageClasses(Class ... mcl CreateSnapshot1Message.class, CreateGlobalRule2Message.class, CreateGroup1Message.class, - CreateOrReplaceArtifactBranch3Message.class, - CreateOrUpdateArtifactBranch2Message.class, CreateRoleMapping3Message.class, DeleteAllExpiredDownloads0Message.class, DeleteAllUserData0Message.class, DeleteArtifact2Message.class, - DeleteArtifactBranch2Message.class, + DeleteBranch2Message.class, DeleteArtifactRule3Message.class, DeleteArtifactRules2Message.class, DeleteArtifacts1Message.class, @@ -48,7 +46,7 @@ private static void indexMessageClasses(Class ... mcl DeleteGlobalRules0Message.class, DeleteGroup1Message.class, DeleteRoleMapping1Message.class, - ImportArtifactBranch1Message.class, + ImportBranch1Message.class, ImportArtifactRule1Message.class, ImportArtifactVersion1Message.class, ImportComment1Message.class, diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/AbstractSqlRegistryStorage.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/AbstractSqlRegistryStorage.java index 5e6e0577a4..f46c55f75c 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/AbstractSqlRegistryStorage.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/AbstractSqlRegistryStorage.java @@ -16,15 +16,17 @@ import io.apicurio.registry.storage.StorageEvent; import io.apicurio.registry.storage.StorageEventType; import io.apicurio.registry.storage.VersionStateExt; -import io.apicurio.registry.storage.dto.ArtifactBranchDto; import io.apicurio.registry.storage.dto.ArtifactMetaDataDto; import io.apicurio.registry.storage.dto.ArtifactReferenceDto; import io.apicurio.registry.storage.dto.ArtifactSearchResultsDto; import io.apicurio.registry.storage.dto.ArtifactVersionMetaDataDto; +import io.apicurio.registry.storage.dto.BranchMetaDataDto; +import io.apicurio.registry.storage.dto.BranchSearchResultsDto; import io.apicurio.registry.storage.dto.CommentDto; import io.apicurio.registry.storage.dto.ContentWrapperDto; import io.apicurio.registry.storage.dto.DownloadContextDto; import io.apicurio.registry.storage.dto.EditableArtifactMetaDataDto; +import io.apicurio.registry.storage.dto.EditableBranchMetaDataDto; import io.apicurio.registry.storage.dto.EditableGroupMetaDataDto; import io.apicurio.registry.storage.dto.EditableVersionMetaDataDto; import io.apicurio.registry.storage.dto.GroupMetaDataDto; @@ -36,13 +38,15 @@ import io.apicurio.registry.storage.dto.RuleConfigurationDto; import io.apicurio.registry.storage.dto.SearchFilter; import io.apicurio.registry.storage.dto.SearchedArtifactDto; +import io.apicurio.registry.storage.dto.SearchedBranchDto; import io.apicurio.registry.storage.dto.SearchedGroupDto; import io.apicurio.registry.storage.dto.SearchedVersionDto; import io.apicurio.registry.storage.dto.StoredArtifactVersionDto; import io.apicurio.registry.storage.dto.VersionSearchResultsDto; import io.apicurio.registry.storage.error.ArtifactAlreadyExistsException; -import io.apicurio.registry.storage.error.ArtifactBranchNotFoundException; import io.apicurio.registry.storage.error.ArtifactNotFoundException; +import io.apicurio.registry.storage.error.BranchAlreadyExistsException; +import io.apicurio.registry.storage.error.BranchNotFoundException; import io.apicurio.registry.storage.error.CommentNotFoundException; import io.apicurio.registry.storage.error.ContentAlreadyExistsException; import io.apicurio.registry.storage.error.ContentNotFoundException; @@ -56,18 +60,19 @@ import io.apicurio.registry.storage.error.RuleAlreadyExistsException; import io.apicurio.registry.storage.error.RuleNotFoundException; import io.apicurio.registry.storage.error.VersionAlreadyExistsException; +import io.apicurio.registry.storage.error.VersionAlreadyExistsOnBranchException; import io.apicurio.registry.storage.error.VersionNotFoundException; import io.apicurio.registry.storage.impexp.EntityInputStream; import io.apicurio.registry.storage.impl.sql.jdb.Handle; import io.apicurio.registry.storage.impl.sql.jdb.Query; import io.apicurio.registry.storage.impl.sql.jdb.RowMapper; -import io.apicurio.registry.storage.impl.sql.mappers.ArtifactBranchDtoMapper; -import io.apicurio.registry.storage.impl.sql.mappers.ArtifactBranchEntityMapper; import io.apicurio.registry.storage.impl.sql.mappers.ArtifactMetaDataDtoMapper; import io.apicurio.registry.storage.impl.sql.mappers.ArtifactReferenceDtoMapper; import io.apicurio.registry.storage.impl.sql.mappers.ArtifactRuleEntityMapper; import io.apicurio.registry.storage.impl.sql.mappers.ArtifactVersionEntityMapper; import io.apicurio.registry.storage.impl.sql.mappers.ArtifactVersionMetaDataDtoMapper; +import io.apicurio.registry.storage.impl.sql.mappers.BranchEntityMapper; +import io.apicurio.registry.storage.impl.sql.mappers.BranchMetaDataDtoMapper; import io.apicurio.registry.storage.impl.sql.mappers.CommentDtoMapper; import io.apicurio.registry.storage.impl.sql.mappers.CommentEntityMapper; import io.apicurio.registry.storage.impl.sql.mappers.ContentEntityMapper; @@ -80,9 +85,11 @@ import io.apicurio.registry.storage.impl.sql.mappers.RoleMappingDtoMapper; import io.apicurio.registry.storage.impl.sql.mappers.RuleConfigurationDtoMapper; import io.apicurio.registry.storage.impl.sql.mappers.SearchedArtifactMapper; +import io.apicurio.registry.storage.impl.sql.mappers.SearchedBranchMapper; import io.apicurio.registry.storage.impl.sql.mappers.SearchedGroupMapper; import io.apicurio.registry.storage.impl.sql.mappers.SearchedVersionMapper; import io.apicurio.registry.storage.impl.sql.mappers.StoredArtifactMapper; +import io.apicurio.registry.storage.impl.sql.mappers.StringMapper; import io.apicurio.registry.storage.importing.DataImporter; import io.apicurio.registry.storage.importing.SqlDataImporter; import io.apicurio.registry.types.ArtifactState; @@ -90,9 +97,9 @@ import io.apicurio.registry.utils.DtoUtil; import io.apicurio.registry.utils.IoUtil; import io.apicurio.registry.utils.StringUtil; -import io.apicurio.registry.utils.impexp.ArtifactBranchEntity; import io.apicurio.registry.utils.impexp.ArtifactRuleEntity; import io.apicurio.registry.utils.impexp.ArtifactVersionEntity; +import io.apicurio.registry.utils.impexp.BranchEntity; import io.apicurio.registry.utils.impexp.CommentEntity; import io.apicurio.registry.utils.impexp.ContentEntity; import io.apicurio.registry.utils.impexp.Entity; @@ -103,7 +110,6 @@ import jakarta.enterprise.event.Event; import jakarta.inject.Inject; import jakarta.transaction.Transactional; -import jakarta.validation.ValidationException; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; import org.eclipse.microprofile.config.inject.ConfigProperty; @@ -113,18 +119,13 @@ import java.sql.SQLException; import java.time.Duration; import java.time.Instant; -import java.util.ArrayDeque; -import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.Date; -import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.Objects; import java.util.Optional; import java.util.Set; @@ -132,7 +133,6 @@ import java.util.function.Function; import java.util.stream.Stream; -import static io.apicurio.registry.storage.RegistryStorage.ArtifactRetrievalBehavior.DEFAULT; import static io.apicurio.registry.storage.impl.sql.RegistryStorageContentUtils.notEmpty; import static io.apicurio.registry.storage.impl.sql.SqlUtil.normalizeGroupId; import static io.apicurio.registry.utils.StringUtil.asLowerCase; @@ -591,7 +591,7 @@ private ArtifactVersionMetaDataDto createArtifactVersionRaw(Handle handle, boole .execute(); gav = new GAV(groupId, artifactId, finalVersion1); - createOrUpdateArtifactBranchRaw(handle, gav, BranchId.LATEST); + createOrUpdateBranchRaw(handle, gav, BranchId.LATEST, false); } else { handle.createUpdate(sqlStatements.insertVersion(false)) .bind(0, globalId) @@ -617,7 +617,7 @@ private ArtifactVersionMetaDataDto createArtifactVersionRaw(Handle handle, boole } gav = getGAVByGlobalId(globalId); - createOrUpdateArtifactBranchRaw(handle, gav, BranchId.LATEST); + createOrUpdateBranchRaw(handle, gav, BranchId.LATEST, false); } // Insert labels into the "version_labels" table @@ -635,7 +635,7 @@ private ArtifactVersionMetaDataDto createArtifactVersionRaw(Handle handle, boole if (branches != null && !branches.isEmpty()) { branches.forEach(branch -> { BranchId branchId = new BranchId(branch); - createOrUpdateArtifactBranchRaw(handle, gav, branchId); + createOrUpdateBranchRaw(handle, gav, branchId, true); }); } @@ -1073,15 +1073,16 @@ public ArtifactSearchResultsDto searchArtifacts(Set filters, Order public ArtifactMetaDataDto getArtifactMetaData(String groupId, String artifactId) throws ArtifactNotFoundException, RegistryStorageException { log.debug("Selecting artifact meta-data: {} {}", groupId, artifactId); - return handles.withHandle(handle -> { - Optional res = handle.createQuery(sqlStatements.selectArtifactMetaData()) - .bind(0, normalizeGroupId(groupId)) - .bind(1, artifactId) - .map(ArtifactMetaDataDtoMapper.instance) - .findOne(); - return res.orElseThrow(() -> new ArtifactNotFoundException(groupId, artifactId)); - }); + return handles.withHandle(handle -> getArtifactMetaDataRaw(handle, groupId, artifactId)); + } + protected ArtifactMetaDataDto getArtifactMetaDataRaw(Handle handle, String groupId, String artifactId) throws ArtifactNotFoundException, RegistryStorageException { + Optional res = handle.createQuery(sqlStatements.selectArtifactMetaData()) + .bind(0, normalizeGroupId(groupId)) + .bind(1, artifactId) + .map(ArtifactMetaDataDtoMapper.instance) + .findOne(); + return res.orElseThrow(() -> new ArtifactNotFoundException(groupId, artifactId)); } /** @@ -1381,18 +1382,43 @@ public List getArtifactVersions(String groupId, String artifactId) @Override - public List getArtifactVersions(String groupId, String artifactId, ArtifactRetrievalBehavior behavior) + public List getArtifactVersions(String groupId, String artifactId, RetrievalBehavior behavior) throws ArtifactNotFoundException, RegistryStorageException { log.debug("Getting a list of versions for artifact: {} {}", groupId, artifactId); try { - return getArtifactBranch(new GA(groupId, artifactId), BranchId.LATEST, behavior) - .stream() - .map(GAV::getRawVersionId) - .collect(toList()); - } catch (ArtifactBranchNotFoundException ex) { + switch (behavior) { + case DEFAULT -> { + return getArtifactVersions(groupId, artifactId, sqlStatements.selectArtifactVersions()); + } + case SKIP_DISABLED_LATEST -> { + return getArtifactVersions(groupId, artifactId, sqlStatements.selectArtifactVersionsNotDisabled()); + } + } + } catch (BranchNotFoundException ex) { throw new ArtifactNotFoundException(groupId, artifactId); } + throw new UnsupportedOperationException("Retrieval behavior not implemented: " + behavior.name()); + } + + public List getArtifactVersions(String groupId, String artifactId, String sqlStatement) + throws ArtifactNotFoundException, RegistryStorageException { + log.debug("Getting a list of versions for artifact: {} {}", groupId, artifactId); + return handles.withHandle(handle -> { + List versions = handle.createQuery(sqlStatement) + .bind(0, normalizeGroupId(groupId)) + .bind(1, artifactId) + .map(StringMapper.instance) + .list(); + + // If there aren't any versions, it might be because the artifact does not exist + if (versions.isEmpty()) { + if (!isArtifactExists(groupId, artifactId)) { + throw new ArtifactNotFoundException(groupId, artifactId); + } + } + return versions; + }); } @Override @@ -1522,14 +1548,14 @@ public VersionSearchResultsDto searchVersions(Set filters, OrderBy limitOffset.append(" LIMIT ? OFFSET ?"); } - // Query for the group - String groupsQuerySql = new StringBuilder(selectTemplate) + // Query for the versions + String versionsQuerySql = new StringBuilder(selectTemplate) .append(where) .append(orderByQuery) .append(limitOffset) .toString() .replace("{{selectColumns}}", "v.*, a.type"); - Query groupsQuery = handle.createQuery(groupsQuerySql); + Query versionsQuery = handle.createQuery(versionsQuerySql); // Query for the total row count String countQuerySql = new StringBuilder(selectTemplate) .append(where) @@ -1540,15 +1566,15 @@ public VersionSearchResultsDto searchVersions(Set filters, OrderBy // Bind all query parameters int idx = 0; for (SqlStatementVariableBinder binder : binders) { - binder.bind(groupsQuery, idx); + binder.bind(versionsQuery, idx); binder.bind(countQuery, idx); idx++; } - groupsQuery.bind(idx++, limit); - groupsQuery.bind(idx++, offset); + versionsQuery.bind(idx++, limit); + versionsQuery.bind(idx++, offset); // Execute query - List versions = groupsQuery.map(SearchedVersionMapper.instance).list(); + List versions = versionsQuery.map(SearchedVersionMapper.instance).list(); // Execute count query Integer count = countQuery.mapTo(Integer.class).one(); @@ -1598,15 +1624,6 @@ public void deleteArtifactVersion(String groupId, String artifactId, String vers throws ArtifactNotFoundException, VersionNotFoundException, RegistryStorageException { log.debug("Deleting version {} of artifact {} {}", version, groupId, artifactId); - //For deleting artifact versions we need to list always every single version, including disabled ones. - List versions = getArtifactVersions(groupId, artifactId, DEFAULT); - - // If there is only one version, but it's not the version being deleted, then - // we can't find the version to delete! This is an optimization. - if (versions.size() == 1 && !versions.iterator().next().equals(version)) { - throw new VersionNotFoundException(groupId, artifactId, version); - } - handles.withHandle(handle -> { // Delete version int rows = handle.createUpdate(sqlStatements.deleteVersion()) @@ -2260,12 +2277,13 @@ public void exportData(Function handler) throws RegistryStorageExc return null; }); - // Export all artifact branches + // Export all branches ///////////////////////////////// + // TODO add the list of versions to the BranchEntity when exporting handles.withHandle(handle -> { - Stream stream = handle.createQuery(sqlStatements.exportArtifactBranches()) + Stream stream = handle.createQuery(sqlStatements.exportBranches()) .setFetchSize(50) - .map(ArtifactBranchEntityMapper.instance) + .map(BranchEntityMapper.instance) .stream(); // Process and then close the stream. try (stream) { @@ -2546,7 +2564,7 @@ public void deleteAllUserData() { handle.createUpdate(sqlStatements.deleteAllVersionComments()) .execute(); - handle.createUpdate(sqlStatements.deleteAllArtifactBranches()) + handle.createUpdate(sqlStatements.deleteAllBranches()) .execute(); handle.createUpdate(sqlStatements.deleteAllVersions()) @@ -2777,8 +2795,14 @@ public GroupSearchResultsDto searchGroups(Set filters, OrderBy ord binder.bind(countQuery, idx); idx++; } - groupsQuery.bind(idx++, limit); - groupsQuery.bind(idx++, offset); + // TODO find a better way to swap arguments + if ("mssql".equals(sqlStatements.dbType())) { + groupsQuery.bind(idx++, offset); + groupsQuery.bind(idx++, limit); + } else { + groupsQuery.bind(idx++, limit); + groupsQuery.bind(idx++, offset); + } // Execute query List groups = groupsQuery.map(SearchedGroupMapper.instance).list(); @@ -3238,175 +3262,439 @@ public Optional contentIdFromHash(String contentHash) { @Override @Transactional - public Map> getArtifactBranches(GA ga) { + public BranchMetaDataDto createBranch(GA ga, BranchId branchId, String description, List versions) { + try { + String user = securityIdentity.getPrincipal().getName(); + Date now = new Date(); - var data1 = handles.withHandleNoException(handle -> { + handles.withHandle(handle -> { + // Insert a row into the groups table + handle.createUpdate(sqlStatements.insertBranch()) + .bind(0, ga.getRawGroupId()) + .bind(1, ga.getRawArtifactId()) + .bind(2, branchId.getRawBranchId()) + .bind(3, description) + .bind(4, true) + .bind(5, user) + .bind(6, now) + .bind(7, user) + .bind(8, now) + .execute(); - if (!isArtifactExists(ga.getRawGroupIdWithDefaultString(), ga.getRawArtifactId())) { - throw new ArtifactNotFoundException(ga.getRawGroupIdWithDefaultString(), ga.getRawArtifactId()); + // Append each of the versions onto the branch + if (versions != null) { + versions.forEach(version -> { + appendVersionToBranchRaw(handle, ga, branchId, new VersionId(version)); + }); + } + + return null; + }); + + return BranchMetaDataDto.builder() + .groupId(ga.getRawGroupId()) + .artifactId(ga.getRawArtifactId()) + .branchId(branchId.getRawBranchId()) + .description(description) + .owner(user) + .createdOn(now.getTime()) + .modifiedBy(user) + .modifiedOn(now.getTime()) + .build(); + } catch (Exception ex) { + if (sqlStatements.isPrimaryKeyViolation(ex)) { + throw new BranchAlreadyExistsException(ga.getRawGroupIdWithDefaultString(), ga.getRawArtifactId(), branchId.getRawBranchId()); } + throw ex; + } + } - return handle.createQuery(sqlStatements.selectArtifactBranches()) - .bind(0, ga.getRawGroupId()) - .bind(1, ga.getRawArtifactId()) - .map(ArtifactBranchDtoMapper.instance) - .list(); + @Override + @Transactional + public void updateBranchMetaData(GA ga, BranchId branchId, EditableBranchMetaDataDto dto) { + String modifiedBy = securityIdentity.getPrincipal().getName(); + Date modifiedOn = new Date(); + log.debug("Updating metadata for branch {} of {}/{}.", branchId, ga.getRawGroupIdWithNull(), ga.getRawArtifactId()); + + handles.withHandleNoException(handle -> { + // Update the row in the groups table + int rows = handle.createUpdate(sqlStatements.updateBranch()) + .bind(0, dto.getDescription()) + .bind(1, modifiedBy) + .bind(2, modifiedOn) + .bind(3, ga.getRawGroupId()) + .bind(4, ga.getRawArtifactId()) + .bind(5, branchId.getRawBranchId()) + .execute(); + if (rows == 0) { + throw new BranchNotFoundException(ga.getRawGroupIdWithDefaultString(), ga.getRawArtifactId(), branchId.getRawBranchId()); + } + + return null; }); + } - var data2 = new HashMap>(); - for (ArtifactBranchDto dto : data1) { - data2.compute(new BranchId(dto.getBranchId()), (_ignored, v) -> { - if (v == null) { - var initial = new ArrayList(); - initial.add(dto); - return initial; - } else { - v.add(dto); - return v; - } + @Override + public BranchSearchResultsDto getBranches(GA ga, int offset, int limit) { + return handles.withHandleNoException(handle -> { + List binders = new LinkedList<>(); + + StringBuilder selectTemplate = new StringBuilder(); + StringBuilder where = new StringBuilder(); + StringBuilder orderByQuery = new StringBuilder(); + StringBuilder limitOffset = new StringBuilder(); + + // Formulate the SELECT clause for the artifacts query + selectTemplate.append("SELECT {{selectColumns}} FROM branches b "); + + // Formulate the WHERE clause for both queries + where.append(" WHERE b.groupId = ? AND b.artifactId = ?"); + binders.add((query, idx) -> { + query.bind(idx, ga.getRawGroupId()); + }); + binders.add((query, idx) -> { + query.bind(idx, ga.getRawArtifactId()); }); - } - var data3 = new HashMap>(); - for (Entry> entry : data2.entrySet()) { - data3.put(entry.getKey(), entry.getValue().stream() - .sorted(Comparator.comparingInt(ArtifactBranchDto::getBranchOrder).reversed()) // Highest first - .map(ArtifactBranchDto::toGAV) - .collect(toList())); - } + // Add order by to artifact query + orderByQuery.append(" ORDER BY b.branchId ASC"); - return data3; - } + // Add limit and offset to query + if ("mssql".equals(sqlStatements.dbType())) { + limitOffset.append(" OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"); + } else { + limitOffset.append(" LIMIT ? OFFSET ?"); + } + + // Query for the branc + String branchesQuerySql = new StringBuilder(selectTemplate) + .append(where) + .append(orderByQuery) + .append(limitOffset) + .toString() + .replace("{{selectColumns}}", "*"); + Query branchesQuery = handle.createQuery(branchesQuerySql); + // Query for the total row count + String countQuerySql = new StringBuilder(selectTemplate) + .append(where) + .toString() + .replace("{{selectColumns}}", "count(b.branchId)"); + Query countQuery = handle.createQuery(countQuerySql); + // Bind all query parameters + int idx = 0; + for (SqlStatementVariableBinder binder : binders) { + binder.bind(branchesQuery, idx); + binder.bind(countQuery, idx); + idx++; + } + // TODO find a better way to swap arguments + if ("mssql".equals(sqlStatements.dbType())) { + branchesQuery.bind(idx++, offset); + branchesQuery.bind(idx++, limit); + } else { + branchesQuery.bind(idx++, limit); + branchesQuery.bind(idx++, offset); + } - @Override - @Transactional - public List getArtifactBranch(GA ga, BranchId branchId, ArtifactRetrievalBehavior behavior) { + // Execute query + List branches = branchesQuery.map(SearchedBranchMapper.instance).list(); + // Execute count query + Integer count = countQuery.mapTo(Integer.class).one(); - String sql; - switch (behavior) { - case DEFAULT: - sql = sqlStatements.selectArtifactBranchOrdered(); - break; - case SKIP_DISABLED_LATEST: - sql = sqlStatements.selectArtifactBranchOrderedNotDisabled(); - break; - default: - throw new UnreachableCodeException(); - } - var finalSql = sql; + // If no branches are found, it might be because the artifact does not exist. We + // need to check for that here. + getArtifactMetaDataRaw(handle, ga.getRawGroupIdWithNull(), ga.getRawArtifactId()); - var res = handles.withHandleNoException(handle -> { + BranchSearchResultsDto results = new BranchSearchResultsDto(); + results.setBranches(branches); + results.setCount(count); + return results; + }); + } - return handle.createQuery(finalSql) + @Override + public BranchMetaDataDto getBranchMetaData(GA ga, BranchId branchId) { + return handles.withHandle(handle -> { + Optional res = handle.createQuery(sqlStatements.selectBranch()) .bind(0, ga.getRawGroupId()) .bind(1, ga.getRawArtifactId()) .bind(2, branchId.getRawBranchId()) - .map(ArtifactBranchDtoMapper.instance) - .list() - .stream() - .map(ArtifactBranchDto::toGAV) - .collect(toList()); + .map(BranchMetaDataDtoMapper.instance) + .findOne(); + return res.orElseThrow(() -> new BranchNotFoundException(ga.getRawGroupIdWithDefaultString(), ga.getRawArtifactId(), branchId.getRawBranchId())); }); + } - if (res.isEmpty()) { - throw new ArtifactBranchNotFoundException(ga, branchId); - } + @Override + public VersionSearchResultsDto getBranchVersions(GA ga, BranchId branchId, int offset, int limit) { + return handles.withHandleNoException(handle -> { + List binders = new LinkedList<>(); - return res; - } + StringBuilder selectTemplate = new StringBuilder(); + StringBuilder where = new StringBuilder(); + StringBuilder orderByQuery = new StringBuilder(); + StringBuilder limitOffset = new StringBuilder(); + + // Formulate the SELECT clause for the artifacts query + selectTemplate.append("SELECT {{selectColumns}} FROM branch_versions bv " + + "JOIN versions v ON bv.groupId = v.groupId AND bv.artifactId = v.artifactId AND bv.version = v.version " + + "JOIN artifacts a ON a.groupId = v.groupId AND a.artifactId = v.artifactId "); + + // Formulate the WHERE clause for both queries + where.append(" WHERE bv.groupId = ? AND bv.artifactId = ? AND bv.branchId = ?"); + binders.add((query, idx) -> { + query.bind(idx, ga.getRawGroupId()); + }); + binders.add((query, idx) -> { + query.bind(idx, ga.getRawArtifactId()); + }); + binders.add((query, idx) -> { + query.bind(idx, branchId.getRawBranchId()); + }); + + // Add order by to artifact query + orderByQuery.append(" ORDER BY bv.branchOrder DESC"); + + // Add limit and offset to artifact query + if ("mssql".equals(sqlStatements.dbType())) { + limitOffset.append(" OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"); + } else { + limitOffset.append(" LIMIT ? OFFSET ?"); + } + + // Query for the versions + String versionsQuerySql = new StringBuilder(selectTemplate) + .append(where) + .append(orderByQuery) + .append(limitOffset) + .toString() + .replace("{{selectColumns}}", "v.*, a.type"); + Query versionsQuery = handle.createQuery(versionsQuerySql); + // Query for the total row count + String countQuerySql = new StringBuilder(selectTemplate) + .append(where) + .toString() + .replace("{{selectColumns}}", "count(v.globalId)"); + Query countQuery = handle.createQuery(countQuerySql); + // Bind all query parameters + int idx = 0; + for (SqlStatementVariableBinder binder : binders) { + binder.bind(versionsQuery, idx); + binder.bind(countQuery, idx); + idx++; + } + + // Bind the limit and offset + // TODO find a better way to swap arguments + if ("mssql".equals(sqlStatements.dbType())) { + versionsQuery.bind(idx++, offset); + versionsQuery.bind(idx, limit); + } else { + versionsQuery.bind(idx++, limit); + versionsQuery.bind(idx, offset); + } + + // Execute query + List versions = versionsQuery.map(SearchedVersionMapper.instance).list(); + // Execute count query + Integer count = countQuery.mapTo(Integer.class).one(); + + VersionSearchResultsDto results = new VersionSearchResultsDto(); + results.setVersions(versions); + results.setCount(count); + return results; + }); + } @Override @Transactional - public void createOrUpdateArtifactBranch(GAV gav, BranchId branchId) { - if (BranchId.LATEST.equals(branchId)) { - throw new NotAllowedException("Artifact branch 'latest' cannot be updated."); + public void appendVersionToBranch(GA ga, BranchId branchId, VersionId version) { + try { + handles.withHandle(handle -> { + appendVersionToBranchRaw(handle, ga, branchId, version); + return null; + }); + } catch (Exception ex) { + if (sqlStatements.isPrimaryKeyViolation(ex)) { + throw new VersionAlreadyExistsOnBranchException(ga.getRawGroupIdWithDefaultString(), ga.getRawArtifactId(), version.getRawVersionId(), branchId.getRawBranchId()); + } + throw ex; } - handles.withHandleNoException(handle -> { - createOrUpdateArtifactBranchRaw(handle, gav, branchId); - }); } - - /** - * IMPORTANT: Private methods can't be @Transactional. Callers MUST have started a transaction. - */ - private void createOrUpdateArtifactBranchRaw(Handle handle, GAV gav, BranchId branchId) { + public void appendVersionToBranchRaw(Handle handle, GA ga, BranchId branchId, VersionId version) { try { - handle.createUpdate(sqlStatements.insertArtifactBranch()) - .bind(0, gav.getRawGroupId()) - .bind(1, gav.getRawArtifactId()) + // Insert a row into the groups table + handle.createUpdate(sqlStatements.appendBranchVersion()) + .bind(0, ga.getRawGroupId()) + .bind(1, ga.getRawArtifactId()) .bind(2, branchId.getRawBranchId()) - .bind(3, gav.getRawVersionId()) - .bind(4, gav.getRawGroupId()) - .bind(5, gav.getRawArtifactId()) + .bind(3, version.getRawVersionId()) + .bind(4, ga.getRawGroupId()) + .bind(5, ga.getRawArtifactId()) .bind(6, branchId.getRawBranchId()) .execute(); } catch (Exception ex) { + if (sqlStatements.isPrimaryKeyViolation(ex)) { + throw new VersionAlreadyExistsOnBranchException(ga.getRawGroupIdWithDefaultString(), ga.getRawArtifactId(), version.getRawVersionId(), branchId.getRawBranchId()); + } if (sqlStatements.isForeignKeyViolation(ex)) { - throw new VersionNotFoundException(gav, ex); + throw new VersionNotFoundException(ga.getRawGroupIdWithDefaultString(), ga.getRawArtifactId(), version.getRawVersionId()); } throw ex; } } - @Override @Transactional - public void createOrReplaceArtifactBranch(GA ga, BranchId branchId, List versions) { - if (BranchId.LATEST.equals(branchId)) { - throw new NotAllowedException("Artifact branch 'latest' cannot be replaced."); - } - if (versions.isEmpty()) { - throw new ValidationException("Artifact branch replace operation requires at least one version. " + - "Use the delete operation instead if this is intentional."); - } - - handles.withHandleNoException(handle -> { - - // Check that the versions actually exist before deleting - - for (VersionId versionId : versions) { - if (!isArtifactVersionExists(ga.getRawGroupIdWithNull(), ga.getRawArtifactId(), versionId.getRawVersionId())) { - throw new VersionNotFoundException(ga.getRawGroupIdWithNull(), ga.getRawArtifactId(), versionId.getRawVersionId()); - } - } - - try { - deleteArtifactBranchRaw(ga, branchId); - } catch (ArtifactBranchNotFoundException ignored) { - // Branch does not exist, it will be created - } + public void replaceBranchVersions(GA ga, BranchId branchId, List versions) { + handles.withHandle(handle -> { + // Delete all previous versions. + handle.createUpdate(sqlStatements.deleteBranchVersions()) + .bind(0, ga.getRawGroupId()) + .bind(1, ga.getRawArtifactId()) + .bind(2, branchId.getRawBranchId()) + .execute(); - var reversed = new ArrayDeque<>(versions).descendingIterator(); - while (reversed.hasNext()) { - createOrUpdateArtifactBranch(new GAV(ga, reversed.next()), branchId); + // Insert each version new + int branchOrder = 0; + for (VersionId version : versions) { + handle.createUpdate(sqlStatements.insertBranchVersion()) + .bind(0, ga.getRawGroupId()) + .bind(1, ga.getRawArtifactId()) + .bind(2, branchId.getRawBranchId()) + .bind(3, branchOrder++) + .bind(4, version.getRawVersionId()) + .execute(); } + return null; + }); + } +// +// @Override +// @Transactional +// public Map> getBranches(GA ga) { +// +// var data1 = handles.withHandleNoException(handle -> { +// +// if (!isArtifactExists(ga.getRawGroupIdWithDefaultString(), ga.getRawArtifactId())) { +// throw new ArtifactNotFoundException(ga.getRawGroupIdWithDefaultString(), ga.getRawArtifactId()); +// } +// +// return handle.createQuery(sqlStatements.selectBranches()) +// .bind(0, ga.getRawGroupId()) +// .bind(1, ga.getRawArtifactId()) +// .map(BranchDtoMapper.instance) +// .list(); +// }); +// +// var data2 = new HashMap>(); +// for (BranchDto dto : data1) { +// data2.compute(new BranchId(dto.getBranchId()), (_ignored, v) -> { +// if (v == null) { +// var initial = new ArrayList(); +// initial.add(dto); +// return initial; +// } else { +// v.add(dto); +// return v; +// } +// }); +// } +// +// var data3 = new HashMap>(); +// for (Entry> entry : data2.entrySet()) { +// data3.put(entry.getKey(), entry.getValue().stream() +// .sorted(Comparator.comparingInt(BranchDto::getBranchOrder).reversed()) // Highest first +// .map(BranchDto::toGAV) +// .collect(toList())); +// } +// +// return data3; +// } +// +// +// @Override +// @Transactional +// public List getBranch(GA ga, BranchId branchId, ArtifactRetrievalBehavior behavior) { +// +// String sql; +// switch (behavior) { +// case DEFAULT: +// sql = sqlStatements.selectBranchOrdered(); +// break; +// case SKIP_DISABLED_LATEST: +// sql = sqlStatements.selectBranchOrderedNotDisabled(); +// break; +// default: +// throw new UnreachableCodeException(); +// } +// var finalSql = sql; +// +// var res = handles.withHandleNoException(handle -> { +// +// return handle.createQuery(finalSql) +// .bind(0, ga.getRawGroupId()) +// .bind(1, ga.getRawArtifactId()) +// .bind(2, branchId.getRawBranchId()) +// .map(BranchDtoMapper.instance) +// .list() +// .stream() +// .map(BranchDto::toGAV) +// .collect(toList()); +// }); +// +// if (res.isEmpty()) { +// throw new BranchNotFoundException(ga, branchId); +// } +// +// return res; +// } - // Clean versions only *after* we successfully insert - var gavs = handle.createQuery(sqlStatements.selectVersionsWithoutArtifactBranch()) - .bind(0, ga.getRawGroupId()) - .bind(1, ga.getRawArtifactId()) - .map(GAVMapper.instance) - .list(); + /** + * This method ensures that the named branch exists for the version *and* also adds the + * version to that branch. + * + * IMPORTANT: Private methods can't be @Transactional. Callers MUST have started a transaction. + */ + private void createOrUpdateBranchRaw(Handle handle, GAV gav, BranchId branchId, boolean userDefined) { + // First make sure the branch exists. + try { + String user = securityIdentity.getPrincipal().getName(); + Date now = new Date(); - for (GAV gav : gavs) { - deleteArtifactVersion(gav.getRawGroupIdWithNull(), gav.getRawArtifactId(), gav.getRawVersionId()); + handle.createUpdate(sqlStatements.insertBranch()) + .bind(0, gav.getRawGroupId()) + .bind(1, gav.getRawArtifactId()) + .bind(2, branchId.getRawBranchId()) + .bind(3, (String) null) + .bind(4, userDefined) + .bind(5, user) + .bind(6, now) + .bind(7, user) + .bind(8, now) + .execute(); + } catch (Exception ex) { + if (!sqlStatements.isPrimaryKeyViolation(ex)) { + throw ex; } - }); + } + + // Now add the version to it. + appendVersionToBranchRaw(handle, gav, branchId, gav.getVersionId()); } @Override @Transactional - public GAV getArtifactBranchTip(GA ga, BranchId branchId, ArtifactRetrievalBehavior behavior) { + public GAV getBranchTip(GA ga, BranchId branchId, RetrievalBehavior behavior) { return handles.withHandleNoException(handle -> { switch (behavior) { - case DEFAULT: - return handle.createQuery(sqlStatements.selectArtifactBranchTip()) + return handle.createQuery(sqlStatements.selectBranchTip()) .bind(0, ga.getRawGroupId()) .bind(1, ga.getRawArtifactId()) .bind(2, branchId.getRawBranchId()) @@ -3414,16 +3702,15 @@ public GAV getArtifactBranchTip(GA ga, BranchId branchId, ArtifactRetrievalBehav .findOne() .orElseThrow(() -> new VersionNotFoundException(ga.getRawGroupIdWithDefaultString(), ga.getRawArtifactId(), "")); - case SKIP_DISABLED_LATEST: - return handle.createQuery(sqlStatements.selectArtifactBranchTipNotDisabled()) + return handle.createQuery(sqlStatements.selectBranchTipNotDisabled()) .bind(0, ga.getRawGroupId()) .bind(1, ga.getRawArtifactId()) .bind(2, branchId.getRawBranchId()) .map(GAVMapper.instance) .findOne() .orElseThrow(() -> new VersionNotFoundException(ga.getRawGroupIdWithDefaultString(), ga.getRawArtifactId(), - "")); + "")); } throw new UnreachableCodeException(); }); @@ -3444,47 +3731,22 @@ private GAV getGAVByGlobalId(long globalId) { } - /** - * Delete an artifact branch without version cleanup. - *

- * IMPORTANT: Private methods can't be @Transactional. Callers MUST have started a transaction. - */ - private void deleteArtifactBranchRaw(GA ga, BranchId branchId) { - - handles.withHandleNoException(handle -> { - - var affected = handle.createUpdate(sqlStatements.deleteArtifactBranch()) - .bind(0, ga.getRawGroupId()) - .bind(1, ga.getRawArtifactId()) - .bind(2, branchId.getRawBranchId()) - .execute(); - - if (affected == 0) { - throw new ArtifactBranchNotFoundException(ga, branchId); - } - }); - } - - @Override @Transactional - public void deleteArtifactBranch(GA ga, BranchId branchId) { + public void deleteBranch(GA ga, BranchId branchId) { if (BranchId.LATEST.equals(branchId)) { throw new NotAllowedException("Artifact branch 'latest' cannot be deleted."); } handles.withHandleNoException(handle -> { - - deleteArtifactBranchRaw(ga, branchId); - - var gavs = handle.createQuery(sqlStatements.selectVersionsWithoutArtifactBranch()) + var affected = handle.createUpdate(sqlStatements.deleteBranch()) .bind(0, ga.getRawGroupId()) .bind(1, ga.getRawArtifactId()) - .map(GAVMapper.instance) - .list(); + .bind(2, branchId.getRawBranchId()) + .execute(); - for (GAV gav : gavs) { - deleteArtifactVersion(gav.getRawGroupIdWithNull(), gav.getRawArtifactId(), gav.getRawVersionId()); + if (affected == 0) { + throw new BranchNotFoundException(ga.getRawGroupIdWithDefaultString(), ga.getRawArtifactId(), branchId.getRawBranchId()); } }); } @@ -3492,25 +3754,25 @@ public void deleteArtifactBranch(GA ga, BranchId branchId) { @Override @Transactional - public void importArtifactBranch(ArtifactBranchEntity entity) { - var gav = entity.toGAV(); - var branchId = entity.toBranchId(); - handles.withHandleNoException(handle -> { - try { - handle.createUpdate(sqlStatements.importArtifactBranch()) - .bind(0, gav.getRawGroupId()) - .bind(1, gav.getRawArtifactId()) - .bind(2, branchId.getRawBranchId()) - .bind(3, entity.branchOrder) - .bind(4, gav.getRawVersionId()) - .execute(); - } catch (Exception ex) { - if (sqlStatements.isForeignKeyViolation(ex)) { - throw new VersionNotFoundException(gav, ex); - } - throw ex; - } - }); + public void importBranch(BranchEntity entity) { +// var gav = entity.toGAV(); +// var branchId = entity.toBranchId(); +// handles.withHandleNoException(handle -> { +// try { +// handle.createUpdate(sqlStatements.importBranch()) +// .bind(0, gav.getRawGroupId()) +// .bind(1, gav.getRawArtifactId()) +// .bind(2, branchId.getRawBranchId()) +// .bind(3, entity.branchOrder) +// .bind(4, gav.getRawVersionId()) +// .execute(); +// } catch (Exception ex) { +// if (sqlStatements.isForeignKeyViolation(ex)) { +// throw new VersionNotFoundException(gav, ex); +// } +// throw ex; +// } +// }); } @Override diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/CommonSqlStatements.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/CommonSqlStatements.java index 13f3c733f4..6f08701a2f 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/CommonSqlStatements.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/CommonSqlStatements.java @@ -160,6 +160,11 @@ public String selectArtifactVersions() { return "SELECT version FROM versions WHERE groupId = ? AND artifactId = ?"; } + @Override + public String selectArtifactVersionsNotDisabled() { + return "SELECT version FROM versions WHERE groupId = ? AND artifactId = ? AND state != 'DISABLED'"; + } + /** * @see io.apicurio.registry.storage.impl.sql.SqlStatements#selectArtifactVersionMetaData() */ @@ -723,8 +728,8 @@ public String exportGroups() { @Override - public String exportArtifactBranches() { - return "SELECT * FROM artifact_branches ab"; + public String exportBranches() { + return "SELECT * FROM branches b"; } @@ -1028,100 +1033,73 @@ public String selectGAVByGlobalId() { @Override - public String selectArtifactBranches() { - return "SELECT ab.groupId, ab.artifactId, ab.branchId, ab.branchOrder, ab.version FROM artifact_branches ab " + - "WHERE ab.groupId = ? AND ab.artifactId = ?"; + public String insertBranch() { + return "INSERT INTO branches (groupId, artifactId, branchId, description, userDefined, owner, createdOn, modifiedBy, modifiedOn) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; } - @Override - public String selectArtifactBranchOrdered() { - return "SELECT ab.groupId, ab.artifactId, ab.branchId, ab.branchOrder, ab.version FROM artifact_branches ab " + - "WHERE ab.groupId = ? AND ab.artifactId = ? AND ab.branchId = ? " + - "ORDER BY ab.branchOrder DESC"; + public String updateBranch() { + return "UPDATE branches SET description = ? , modifiedBy = ? , modifiedOn = ? WHERE groupId = ? AND artifactId = ? AND branchId = ?"; } - @Override - public String selectArtifactBranchOrderedNotDisabled() { - return "SELECT ab.groupId, ab.artifactId, ab.branchId, ab.branchOrder, ab.version FROM artifact_branches ab " + - "JOIN versions v ON ab.groupId = v.groupId AND ab.artifactId = v.artifactId AND ab.version = v.version " + - "WHERE ab.groupId = ? AND ab.artifactId = ? AND ab.branchId = ? AND v.state != 'DISABLED' " + - "ORDER BY ab.branchOrder DESC"; + public String selectBranch() { + return "SELECT b.* FROM branches b WHERE b.groupId = ? AND b.artifactId = ? AND b.branchId = ?"; } - @Override - public String insertArtifactBranch() { - // Note: Duplicated value of branchOrder is prevented by primary key - return "INSERT INTO artifact_branches (groupId, artifactId, branchId, branchOrder, version) " + - "SELECT ?, ?, ?, COALESCE(MAX(ab.branchOrder), 0) + 1, ? FROM artifact_branches ab " + - "WHERE ab.groupId = ? AND ab.artifactId = ? AND ab.branchId = ?"; + public String selectBranchTip() { + return "SELECT bv.groupId, bv.artifactId, bv.version FROM branch_versions bv " + + "WHERE bv.groupId = ? AND bv.artifactId = ? AND bv.branchId = ? " + + "ORDER BY bv.branchOrder DESC LIMIT 1"; } @Override - public String selectArtifactBranchTip() { - return "SELECT ab.groupId, ab.artifactId, ab.version FROM artifact_branches ab " + - "WHERE ab.groupId = ? AND ab.artifactId = ? AND ab.branchId = ? " + - "ORDER BY ab.branchOrder DESC LIMIT 1"; + public String selectBranchTipNotDisabled() { + return "SELECT bv.groupId, bv.artifactId, bv.version " + + "FROM branch_versions bv " + + "JOIN versions v ON bv.groupId = v.groupId AND bv.artifactId = v.artifactId AND bv.version = v.version " + + "WHERE bv.groupId = ? AND bv.artifactId = ? AND bv.branchId = ? AND v.state != 'DISABLED' " + + "ORDER BY bv.branchOrder DESC LIMIT 1"; } @Override - public String selectArtifactBranchTipNotDisabled() { - return "SELECT ab.groupId, ab.artifactId, ab.version FROM artifact_branches ab " + - "JOIN versions v ON ab.groupId = v.groupId AND ab.artifactId = v.artifactId AND ab.version = v.version " + - "WHERE ab.groupId = ? AND ab.artifactId = ? AND ab.branchId = ? AND v.state != 'DISABLED' " + - "ORDER BY ab.branchOrder DESC LIMIT 1"; + public String insertBranchVersion() { + return "INSERT INTO branch_versions (groupId, artifactId, branchId, branchOrder, version) " + + "VALUES (?, ?, ?, ?, ?)"; } @Override - public String deleteArtifactBranch() { - return "DELETE FROM artifact_branches " + - "WHERE groupId = ? AND artifactId = ? AND branchId = ?"; + public String appendBranchVersion() { + return "INSERT INTO branch_versions (groupId, artifactId, branchId, branchOrder, version) " + + "SELECT ?, ?, ?, COALESCE(MAX(bv.branchOrder), 0) + 1, ? " + + "FROM branch_versions bv " + + "WHERE bv.groupId = ? AND bv.artifactId = ? AND bv.branchId = ?"; } - @Override - public String deleteAllArtifactBranchesInArtifact() { - return "DELETE FROM artifact_branches " + - "WHERE groupId = ? AND artifactId = ?"; - } - - - @Override - public String deleteAllArtifactBranchesInGroup() { - return "DELETE FROM artifact_branches " + - "WHERE groupId = ?"; - } - - - @Override - public String deleteAllArtifactBranches() { - return "DELETE FROM artifact_branches"; + public String deleteBranchVersions() { + return "DELETE FROM branch_versions " + + "WHERE groupId = ? AND artifactId = ? AND branchId = ?"; } - @Override - public String deleteVersionInArtifactBranches() { - return "DELETE FROM artifact_branches " + - "WHERE groupId = ? AND artifactId = ? AND version = ?"; + public String deleteBranch() { + return "DELETE FROM branches " + + "WHERE groupId = ? AND artifactId = ? AND branchId = ?"; } - @Override - public String selectVersionsWithoutArtifactBranch() { - return "SELECT DISTINCT v.groupId, v.artifactId, v.version FROM versions v " + - "LEFT JOIN artifact_branches ab ON v.groupId = ab.groupId AND v.artifactId = ab.artifactId AND v.version = ab.version " + - "WHERE v.groupId = ? AND v.artifactId = ? AND ab.branchId IS NULL"; + public String deleteAllBranches() { + return "DELETE FROM branches"; } - @Override - public String importArtifactBranch() { - return "INSERT INTO artifact_branches (groupId, artifactId, branchId, branchOrder, version) " + - "VALUES(?, ?, ?, ?, ?)"; + public String importBranch() { + return insertBranch(); } } diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/SQLServerSqlStatements.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/SQLServerSqlStatements.java index a18a1be7a2..800fb8daac 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/SQLServerSqlStatements.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/SQLServerSqlStatements.java @@ -8,7 +8,6 @@ public class SQLServerSqlStatements extends CommonSqlStatements { /** * Constructor. - * @param config */ public SQLServerSqlStatements() { } @@ -38,7 +37,7 @@ public boolean isForeignKeyViolation(Exception error) { } /** - * @see io.apicurio.registry.storage.impl.sql.SqlStatements.core.storage.jdbc.ISqlStatements#isDatabaseInitialized() + * @see SqlStatements#isDatabaseInitialized() */ @Override public String isDatabaseInitialized() { @@ -126,14 +125,14 @@ public String selectGroups() { } @Override - public String selectArtifactBranchTip() { + public String selectBranchTip() { return "SELECT ab.groupId, ab.artifactId, ab.version FROM artifact_branches ab " + "WHERE ab.groupId = ? AND ab.artifactId = ? AND ab.branchId = ? " + "ORDER BY ab.branchOrder DESC OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"; } @Override - public String selectArtifactBranchTipNotDisabled() { + public String selectBranchTipNotDisabled() { return "SELECT ab.groupId, ab.artifactId, ab.version FROM artifact_branches ab " + "JOIN versions v ON ab.groupId = v.groupId AND ab.artifactId = v.artifactId AND ab.version = v.version " + "WHERE ab.groupId = ? AND ab.artifactId = ? AND ab.branchId = ? AND v.state != 'DISABLED' " + diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/SqlStatements.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/SqlStatements.java index 8dc4711b52..c0413dab13 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/SqlStatements.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/SqlStatements.java @@ -5,7 +5,6 @@ /** * Returns SQL statements used by the JDB artifactStore implementation. There are different * implementations of this interface depending on the database being used. - * */ public interface SqlStatements { @@ -16,15 +15,11 @@ public interface SqlStatements { /** * Returns true if the given exception represents a primary key violation. - * - * @param error */ public boolean isPrimaryKeyViolation(Exception error); /** * Returns true if the given exception represents a foreign key violation. - * - * @param error */ public boolean isForeignKeyViolation(Exception error); @@ -40,9 +35,6 @@ public interface SqlStatements { /** * A sequence of statements needed to upgrade the DB from one version to another. - * - * @param fromVersion - * @param toVersion */ public List databaseUpgrade(int fromVersion, int toVersion); @@ -123,10 +115,15 @@ public interface SqlStatements { public String selectArtifactVersionContentByGlobalId(); /** - * A statement used to select all version #s for a given artifactId. + * A statement used to select all version numbers (only) for a given artifactId. */ public String selectArtifactVersions(); + /** + * A statement used to select non-disabled version numbers (only) for a given artifactId. + */ + public String selectArtifactVersionsNotDisabled(); + /** * A statement used to select all versions for a given artifactId. */ @@ -468,7 +465,7 @@ public interface SqlStatements { public String exportArtifactVersions(); - public String exportArtifactBranches(); + public String exportBranches(); /* * The next few statements support importing data into the DB. @@ -484,7 +481,7 @@ public interface SqlStatements { public String importArtifactVersion(); - public String importArtifactBranch(); + public String importBranch(); public String selectMaxContentId(); @@ -571,29 +568,25 @@ public interface SqlStatements { public String selectGAVByGlobalId(); - public String selectArtifactBranches(); - - public String selectArtifactBranchOrdered(); - - public String selectArtifactBranchOrderedNotDisabled(); + public String insertBranch(); - public String insertArtifactBranch(); + public String updateBranch(); - public String selectArtifactBranchTip(); + public String selectBranch(); - public String selectArtifactBranchTipNotDisabled(); + public String selectBranchTip(); - public String deleteArtifactBranch(); + public String selectBranchTipNotDisabled(); - public String deleteVersionInArtifactBranches(); + public String insertBranchVersion(); - public String deleteAllArtifactBranchesInArtifact(); + public String appendBranchVersion(); - public String deleteAllArtifactBranchesInGroup(); + public String deleteBranchVersions(); - public String deleteAllArtifactBranches(); + public String deleteBranch(); - public String selectVersionsWithoutArtifactBranch(); + public String deleteAllBranches(); public String createDataSnapshot(); diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/jdb/Sql.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/jdb/Sql.java index 9d961e3153..a72e2a7ce3 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/jdb/Sql.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/jdb/Sql.java @@ -16,5 +16,6 @@ public interface Sql { public Q bind(int position, byte[] value); + public Q bind(int position, Boolean value); } diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/jdb/SqlImpl.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/jdb/SqlImpl.java index 1d78315d1a..1f0eef90c5 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/jdb/SqlImpl.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/jdb/SqlImpl.java @@ -68,6 +68,12 @@ public Q bind(int position, Date value) { return (Q) this; } + @Override + public Q bind(int position, Boolean value) { + this.parameters.add(new SqlParam(position, value, SqlParamType.BOOLEAN)); + return (Q) this; + } + /** * @see io.apicurio.registry.storage.impl.sql.jdb.Sql#bind(int, byte[]) */ diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/jdb/SqlParam.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/jdb/SqlParam.java index 73d24616a9..77c1ccd6a7 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/jdb/SqlParam.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/jdb/SqlParam.java @@ -67,6 +67,9 @@ public void bindTo(PreparedStatement statement) { case STRING: statement.setString(position, (String) value); break; + case BOOLEAN: + statement.setBoolean(position, (Boolean) value); + break; default: throw new RuntimeSqlException("bindTo not supported for SqlParamType: " + type); } diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/jdb/SqlParamType.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/jdb/SqlParamType.java index e9a2051a48..3f47dfa6ce 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/jdb/SqlParamType.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/jdb/SqlParamType.java @@ -2,6 +2,6 @@ public enum SqlParamType { - STRING, INTEGER, LONG, DATE, BYTES, ENUM + STRING, INTEGER, LONG, DATE, BYTES, ENUM, BOOLEAN } diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/ArtifactBranchDtoMapper.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/ArtifactBranchDtoMapper.java deleted file mode 100644 index ca0d7ff2fb..0000000000 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/ArtifactBranchDtoMapper.java +++ /dev/null @@ -1,28 +0,0 @@ -package io.apicurio.registry.storage.impl.sql.mappers; - -import io.apicurio.registry.storage.dto.ArtifactBranchDto; -import io.apicurio.registry.storage.impl.sql.jdb.RowMapper; - -import java.sql.ResultSet; -import java.sql.SQLException; - -public class ArtifactBranchDtoMapper implements RowMapper { - - public static final ArtifactBranchDtoMapper instance = new ArtifactBranchDtoMapper(); - - - private ArtifactBranchDtoMapper() { - } - - - @Override - public ArtifactBranchDto map(ResultSet rs) throws SQLException { - return ArtifactBranchDto.builder() - .groupId(rs.getString("groupId")) - .artifactId(rs.getString("artifactId")) - .branchId(rs.getString("branchId")) - .branchOrder(rs.getInt("branchOrder")) - .version(rs.getString("version")) - .build(); - } -} diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/ArtifactBranchEntityMapper.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/ArtifactBranchEntityMapper.java deleted file mode 100644 index f46da07f7c..0000000000 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/ArtifactBranchEntityMapper.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.apicurio.registry.storage.impl.sql.mappers; - -import io.apicurio.registry.storage.impl.sql.SqlUtil; -import io.apicurio.registry.storage.impl.sql.jdb.RowMapper; -import io.apicurio.registry.utils.impexp.ArtifactBranchEntity; - -import java.sql.ResultSet; -import java.sql.SQLException; - -public class ArtifactBranchEntityMapper implements RowMapper { - - public static final ArtifactBranchEntityMapper instance = new ArtifactBranchEntityMapper(); - - - private ArtifactBranchEntityMapper() { - } - - - @Override - public ArtifactBranchEntity map(ResultSet rs) throws SQLException { - return ArtifactBranchEntity.builder() - .groupId(SqlUtil.denormalizeGroupId(rs.getString("groupId"))) - .artifactId(rs.getString("artifactId")) - .branchId(rs.getString("branchId")) - .branchOrder(rs.getInt("branchOrder")) - .version(rs.getString("version")) - .build(); - } -} diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/BranchEntityMapper.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/BranchEntityMapper.java new file mode 100644 index 0000000000..b1cd2bb04d --- /dev/null +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/BranchEntityMapper.java @@ -0,0 +1,32 @@ +package io.apicurio.registry.storage.impl.sql.mappers; + +import io.apicurio.registry.storage.impl.sql.SqlUtil; +import io.apicurio.registry.storage.impl.sql.jdb.RowMapper; +import io.apicurio.registry.utils.impexp.BranchEntity; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class BranchEntityMapper implements RowMapper { + + public static final BranchEntityMapper instance = new BranchEntityMapper(); + + + private BranchEntityMapper() { + } + + + @Override + public BranchEntity map(ResultSet rs) throws SQLException { + return BranchEntity.builder() + .groupId(SqlUtil.denormalizeGroupId(rs.getString("groupId"))) + .artifactId(rs.getString("artifactId")) + .branchId(rs.getString("branchId")) + .description(rs.getString("description")) + .owner(rs.getString("owner")) + .createdOn(rs.getTimestamp("createdOn").getTime()) + .modifiedBy(rs.getString("modifiedBy")) + .modifiedOn(rs.getTimestamp("modifiedOn").getTime()) + .build(); + } +} diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/BranchMetaDataDtoMapper.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/BranchMetaDataDtoMapper.java new file mode 100644 index 0000000000..6edffdea87 --- /dev/null +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/BranchMetaDataDtoMapper.java @@ -0,0 +1,38 @@ +package io.apicurio.registry.storage.impl.sql.mappers; + +import io.apicurio.registry.storage.dto.BranchMetaDataDto; +import io.apicurio.registry.storage.impl.sql.SqlUtil; +import io.apicurio.registry.storage.impl.sql.jdb.RowMapper; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class BranchMetaDataDtoMapper implements RowMapper { + + public static final BranchMetaDataDtoMapper instance = new BranchMetaDataDtoMapper(); + + /** + * Constructor. + */ + private BranchMetaDataDtoMapper() { + } + + /** + * @see RowMapper#map(ResultSet) + */ + @Override + public BranchMetaDataDto map(ResultSet rs) throws SQLException { + return BranchMetaDataDto.builder() + .groupId(SqlUtil.denormalizeGroupId(rs.getString("groupId"))) + .artifactId(rs.getString("artifactId")) + .branchId(rs.getString("branchId")) + .description(rs.getString("description")) + .userDefined(rs.getBoolean("userDefined")) + .owner(rs.getString("owner")) + .createdOn(rs.getTimestamp("createdOn").getTime()) + .modifiedBy(rs.getString("modifiedBy")) + .modifiedOn(rs.getTimestamp("modifiedOn").getTime()) + .build(); + } + +} \ No newline at end of file diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/SearchedBranchMapper.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/SearchedBranchMapper.java new file mode 100644 index 0000000000..e6dbb14990 --- /dev/null +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/SearchedBranchMapper.java @@ -0,0 +1,37 @@ +package io.apicurio.registry.storage.impl.sql.mappers; + +import io.apicurio.registry.storage.dto.SearchedBranchDto; +import io.apicurio.registry.storage.impl.sql.SqlUtil; +import io.apicurio.registry.storage.impl.sql.jdb.RowMapper; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class SearchedBranchMapper implements RowMapper { + + public static final SearchedBranchMapper instance = new SearchedBranchMapper(); + + /** + * Constructor. + */ + private SearchedBranchMapper() { + } + + /** + * @see RowMapper#map(ResultSet) + */ + @Override + public SearchedBranchDto map(ResultSet rs) throws SQLException { + return SearchedBranchDto.builder() + .groupId(SqlUtil.denormalizeGroupId(rs.getString("groupId"))) + .artifactId(rs.getString("artifactId")) + .branchId(rs.getString("branchId")) + .description(rs.getString("description")) + .userDefined(rs.getBoolean("userDefined")) + .owner(rs.getString("owner")) + .createdOn(rs.getTimestamp("createdOn").getTime()) + .modifiedBy(rs.getString("modifiedBy")) + .modifiedOn(rs.getTimestamp("modifiedOn").getTime()) + .build(); + } +} diff --git a/app/src/main/java/io/apicurio/registry/storage/importing/AbstractDataImporter.java b/app/src/main/java/io/apicurio/registry/storage/importing/AbstractDataImporter.java index 44bd7e76f7..8e6a2d0f33 100644 --- a/app/src/main/java/io/apicurio/registry/storage/importing/AbstractDataImporter.java +++ b/app/src/main/java/io/apicurio/registry/storage/importing/AbstractDataImporter.java @@ -36,8 +36,8 @@ public void importEntity(Entity entity) { case Comment: importComment((CommentEntity) entity); break; - case ArtifactBranch: - importArtifactBranch((ArtifactBranchEntity) entity); + case Branch: + importBranch((BranchEntity) entity); break; case Manifest: ManifestEntity manifest = (ManifestEntity) entity; @@ -67,5 +67,5 @@ public void importEntity(Entity entity) { protected abstract void importGroup(GroupEntity entity); - protected abstract void importArtifactBranch(ArtifactBranchEntity entity); + protected abstract void importBranch(BranchEntity entity); } diff --git a/app/src/main/java/io/apicurio/registry/storage/importing/SqlDataImporter.java b/app/src/main/java/io/apicurio/registry/storage/importing/SqlDataImporter.java index b1abcf691c..7294681039 100644 --- a/app/src/main/java/io/apicurio/registry/storage/importing/SqlDataImporter.java +++ b/app/src/main/java/io/apicurio/registry/storage/importing/SqlDataImporter.java @@ -41,7 +41,7 @@ public class SqlDataImporter extends AbstractDataImporter { // To keep track of which versions have been imported private final Set gavDone = new HashSet<>(); - private final Map> artifactBranchesWaitingForVersion = new HashMap<>(); + private final Map> artifactBranchesWaitingForVersion = new HashMap<>(); public SqlDataImporter(Logger logger, RegistryStorageContentUtils utils, RegistryStorage storage, boolean preserveGlobalId, boolean preserveContentId) { @@ -202,20 +202,20 @@ public void importComment(CommentEntity entity) { @Override - protected void importArtifactBranch(ArtifactBranchEntity entity) { - try { - var gav = entity.toGAV(); - if (!gavDone.contains(gav)) { - // The version hasn't been imported yet. Need to wait for it. - artifactBranchesWaitingForVersion.computeIfAbsent(gav, _ignored -> new ArrayList<>()) - .add(entity); - } else { - storage.importArtifactBranch(entity); - log.debug("Artifact branch imported successfully: {}", entity); - } - } catch (Exception ex) { - log.warn("Failed to import artifact branch {}: {}", entity, ex.getMessage()); - } + protected void importBranch(BranchEntity entity) { +// try { +// var gav = entity.toGAV(); +// if (!gavDone.contains(gav)) { +// // The version hasn't been imported yet. Need to wait for it. +// artifactBranchesWaitingForVersion.computeIfAbsent(gav, _ignored -> new ArrayList<>()) +// .add(entity); +// } else { +// storage.importBranch(entity); +// log.debug("Artifact branch imported successfully: {}", entity); +// } +// } catch (Exception ex) { +// log.warn("Failed to import artifact branch {}: {}", entity, ex.getMessage()); +// } } /** diff --git a/app/src/main/resources/io/apicurio/registry/storage/impl/sql/h2.ddl b/app/src/main/resources/io/apicurio/registry/storage/impl/sql/h2.ddl index 661f04f4c9..32a8e52d95 100644 --- a/app/src/main/resources/io/apicurio/registry/storage/impl/sql/h2.ddl +++ b/app/src/main/resources/io/apicurio/registry/storage/impl/sql/h2.ddl @@ -91,8 +91,14 @@ ALTER TABLE version_comments ADD CONSTRAINT FK_version_comments_1 FOREIGN KEY (g CREATE INDEX IDX_version_comments_1 ON version_comments(owner); -- This table is defined way down here because it has a FK to the artifacts table *and* the versions table -CREATE TABLE artifact_branches (groupId VARCHAR(512) NOT NULL, artifactId VARCHAR(512) NOT NULL, branchId VARCHAR(256) NOT NULL, branchOrder INT NOT NULL, version VARCHAR(256) NOT NULL); -ALTER TABLE artifact_branches ADD PRIMARY KEY (groupId, artifactId, branchId, branchOrder); -ALTER TABLE artifact_branches ADD CONSTRAINT FK_artifact_branches_1 FOREIGN KEY (groupId, artifactId) REFERENCES artifacts(groupId, artifactId) ON DELETE CASCADE; -ALTER TABLE artifact_branches ADD CONSTRAINT FK_artifact_branches_2 FOREIGN KEY (groupId, artifactId, version) REFERENCES versions(groupId, artifactId, version) ON DELETE CASCADE; -CREATE INDEX IDX_artifact_branches_1 ON artifact_branches(groupId, artifactId, branchId, branchOrder); +CREATE TABLE branches (groupId VARCHAR(512) NOT NULL, artifactId VARCHAR(512) NOT NULL, branchId VARCHAR(256) NOT NULL, description VARCHAR(1024), userDefined BOOLEAN NOT NULL, owner VARCHAR(256), createdOn TIMESTAMP WITHOUT TIME ZONE NOT NULL, modifiedBy VARCHAR(256), modifiedOn TIMESTAMP WITHOUT TIME ZONE NOT NULL); +ALTER TABLE branches ADD PRIMARY KEY (groupId, artifactId, branchId); +ALTER TABLE branches ADD CONSTRAINT FK_branches_1 FOREIGN KEY (groupId, artifactId) REFERENCES artifacts(groupId, artifactId) ON DELETE CASCADE; + +CREATE TABLE branch_versions (groupId VARCHAR(512) NOT NULL, artifactId VARCHAR(512) NOT NULL, branchId VARCHAR(256) NOT NULL, branchOrder INT NOT NULL, version VARCHAR(256) NOT NULL); +ALTER TABLE branch_versions ADD PRIMARY KEY (groupId, artifactId, branchId, version); +ALTER TABLE branch_versions ADD CONSTRAINT FK_branch_versions_1 FOREIGN KEY (groupId, artifactId, branchId) REFERENCES branches(groupId, artifactId, branchId) ON DELETE CASCADE; +ALTER TABLE branch_versions ADD CONSTRAINT FK_branch_versions_2 FOREIGN KEY (groupId, artifactId, version) REFERENCES versions(groupId, artifactId, version) ON DELETE CASCADE; +CREATE INDEX IDX_branch_versions_1 ON branch_versions(groupId, artifactId, branchId, branchOrder); +CREATE INDEX IDX_branch_versions_2 ON branch_versions(branchId); +CREATE INDEX IDX_branch_versions_3 ON branch_versions(branchOrder); diff --git a/app/src/main/resources/io/apicurio/registry/storage/impl/sql/mssql.ddl b/app/src/main/resources/io/apicurio/registry/storage/impl/sql/mssql.ddl index b859874a3c..ebc7e17565 100644 --- a/app/src/main/resources/io/apicurio/registry/storage/impl/sql/mssql.ddl +++ b/app/src/main/resources/io/apicurio/registry/storage/impl/sql/mssql.ddl @@ -91,8 +91,14 @@ ALTER TABLE version_comments ADD CONSTRAINT FK_version_comments_1 FOREIGN KEY (g CREATE INDEX IDX_version_comments_1 ON version_comments(owner); -- This table is defined way down here because it has a FK to the artifacts table *and* the versions table -CREATE TABLE artifact_branches (groupId NVARCHAR(512) NOT NULL, artifactId NVARCHAR(512) NOT NULL, branchId NVARCHAR(256) NOT NULL, branchOrder INT NOT NULL, version NVARCHAR(256) NOT NULL); -ALTER TABLE artifact_branches ADD PRIMARY KEY (groupId, artifactId, branchId, branchOrder); -ALTER TABLE artifact_branches ADD CONSTRAINT FK_artifact_branches_1 FOREIGN KEY (groupId, artifactId) REFERENCES artifacts(groupId, artifactId); -ALTER TABLE artifact_branches ADD CONSTRAINT FK_artifact_branches_2 FOREIGN KEY (groupId, artifactId, version) REFERENCES versions(groupId, artifactId, version) ON DELETE CASCADE; -CREATE INDEX IDX_artifact_branches_1 ON artifact_branches(groupId, artifactId, branchId, branchOrder); +CREATE TABLE branches (groupId NVARCHAR(512) NOT NULL, artifactId NVARCHAR(512) NOT NULL, branchId NVARCHAR(256) NOT NULL, description NVARCHAR(1024), userDefined BIT NOT NULL, owner NVARCHAR(256), createdOn DATETIME2(6) NOT NULL, modifiedBy NVARCHAR(256), modifiedOn DATETIME2(6) NOT NULL); +ALTER TABLE branches ADD PRIMARY KEY (groupId, artifactId, branchId); +ALTER TABLE branches ADD CONSTRAINT FK_branches_1 FOREIGN KEY (groupId, artifactId) REFERENCES artifacts(groupId, artifactId) ON DELETE CASCADE; + +CREATE TABLE branch_versions (groupId NVARCHAR(512) NOT NULL, artifactId NVARCHAR(512) NOT NULL, branchId NVARCHAR(256) NOT NULL, branchOrder INT NOT NULL, version NVARCHAR(256) NOT NULL); +ALTER TABLE branch_versions ADD PRIMARY KEY (groupId, artifactId, branchId, version); +ALTER TABLE branch_versions ADD CONSTRAINT FK_branch_versions_1 FOREIGN KEY (groupId, artifactId, branchId) REFERENCES branches(groupId, artifactId, branchId) ON DELETE CASCADE; +ALTER TABLE branch_versions ADD CONSTRAINT FK_branch_versions_2 FOREIGN KEY (groupId, artifactId, version) REFERENCES versions(groupId, artifactId, version) ON DELETE CASCADE; +CREATE INDEX IDX_branch_versions_1 ON branch_versions(groupId, artifactId, branchId, branchOrder); +CREATE INDEX IDX_branch_versions_2 ON branch_versions(branchId); +CREATE INDEX IDX_branch_versions_3 ON branch_versions(branchOrder); diff --git a/app/src/main/resources/io/apicurio/registry/storage/impl/sql/postgresql.ddl b/app/src/main/resources/io/apicurio/registry/storage/impl/sql/postgresql.ddl index 30baf9d926..0c60cb6166 100644 --- a/app/src/main/resources/io/apicurio/registry/storage/impl/sql/postgresql.ddl +++ b/app/src/main/resources/io/apicurio/registry/storage/impl/sql/postgresql.ddl @@ -91,8 +91,14 @@ ALTER TABLE version_comments ADD CONSTRAINT FK_version_comments_1 FOREIGN KEY (g CREATE INDEX IDX_version_comments_1 ON version_comments(owner); -- This table is defined way down here because it has a FK to the artifacts table *and* the versions table -CREATE TABLE artifact_branches (groupId VARCHAR(512) NOT NULL, artifactId VARCHAR(512) NOT NULL, branchId VARCHAR(256) NOT NULL, branchOrder INT NOT NULL, version VARCHAR(256) NOT NULL); -ALTER TABLE artifact_branches ADD PRIMARY KEY (groupId, artifactId, branchId, branchOrder); -ALTER TABLE artifact_branches ADD CONSTRAINT FK_artifact_branches_1 FOREIGN KEY (groupId, artifactId) REFERENCES artifacts(groupId, artifactId) ON DELETE CASCADE; -ALTER TABLE artifact_branches ADD CONSTRAINT FK_artifact_branches_2 FOREIGN KEY (groupId, artifactId, version) REFERENCES versions(groupId, artifactId, version) ON DELETE CASCADE; -CREATE INDEX IDX_artifact_branches_1 ON artifact_branches(groupId, artifactId, branchId, branchOrder); +CREATE TABLE branches (groupId VARCHAR(512) NOT NULL, artifactId VARCHAR(512) NOT NULL, branchId VARCHAR(256) NOT NULL, description VARCHAR(1024), userDefined BOOLEAN NOT NULL, owner VARCHAR(256), createdOn TIMESTAMP WITHOUT TIME ZONE NOT NULL, modifiedBy VARCHAR(256), modifiedOn TIMESTAMP WITHOUT TIME ZONE NOT NULL); +ALTER TABLE branches ADD PRIMARY KEY (groupId, artifactId, branchId); +ALTER TABLE branches ADD CONSTRAINT FK_branches_1 FOREIGN KEY (groupId, artifactId) REFERENCES artifacts(groupId, artifactId) ON DELETE CASCADE; + +CREATE TABLE branch_versions (groupId VARCHAR(512) NOT NULL, artifactId VARCHAR(512) NOT NULL, branchId VARCHAR(256) NOT NULL, branchOrder INT NOT NULL, version VARCHAR(256) NOT NULL); +ALTER TABLE branch_versions ADD PRIMARY KEY (groupId, artifactId, branchId, version); +ALTER TABLE branch_versions ADD CONSTRAINT FK_branch_versions_1 FOREIGN KEY (groupId, artifactId, branchId) REFERENCES branches(groupId, artifactId, branchId) ON DELETE CASCADE; +ALTER TABLE branch_versions ADD CONSTRAINT FK_branch_versions_2 FOREIGN KEY (groupId, artifactId, version) REFERENCES versions(groupId, artifactId, version) ON DELETE CASCADE; +CREATE INDEX IDX_branch_versions_1 ON branch_versions(groupId, artifactId, branchId, branchOrder); +CREATE INDEX IDX_branch_versions_2 ON branch_versions(branchId); +CREATE INDEX IDX_branch_versions_3 ON branch_versions(branchOrder); diff --git a/app/src/test/java/io/apicurio/registry/AbstractResourceTestBase.java b/app/src/test/java/io/apicurio/registry/AbstractResourceTestBase.java index f4d137d726..751e52bd49 100644 --- a/app/src/test/java/io/apicurio/registry/AbstractResourceTestBase.java +++ b/app/src/test/java/io/apicurio/registry/AbstractResourceTestBase.java @@ -15,7 +15,6 @@ import io.apicurio.registry.storage.dto.ArtifactReferenceDto; import io.apicurio.registry.types.ArtifactMediaTypes; import io.apicurio.registry.types.ArtifactState; -import io.apicurio.registry.types.ContentTypes; import io.apicurio.registry.types.RuleType; import io.apicurio.registry.utils.tests.TestUtils; import io.apicurio.rest.client.auth.exception.NotAuthorizedException; @@ -166,7 +165,7 @@ protected CreateArtifactResponse createArtifactExtendedRaw(String groupId, Strin VersionContent versionContent = new VersionContent(); createVersion.setContent(versionContent); versionContent.setContent(content); - versionContent.setContentType(ContentTypes.APPLICATION_JSON); + versionContent.setContentType(contentType); if (versionReferences != null) { var references = versionReferences.stream().map(r -> { diff --git a/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/BranchesTest.java b/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/BranchesTest.java new file mode 100644 index 0000000000..9852fd5bfe --- /dev/null +++ b/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/BranchesTest.java @@ -0,0 +1,556 @@ +package io.apicurio.registry.noprofile.rest.v3; + +import io.apicurio.registry.AbstractResourceTestBase; +import io.apicurio.registry.rest.client.models.AddVersionToBranch; +import io.apicurio.registry.rest.client.models.BranchMetaData; +import io.apicurio.registry.rest.client.models.BranchSearchResults; +import io.apicurio.registry.rest.client.models.CreateBranch; +import io.apicurio.registry.rest.client.models.CreateVersion; +import io.apicurio.registry.rest.client.models.EditableBranchMetaData; +import io.apicurio.registry.rest.client.models.VersionMetaData; +import io.apicurio.registry.rest.client.models.VersionSearchResults; +import io.apicurio.registry.types.ArtifactType; +import io.apicurio.registry.types.ContentTypes; +import io.apicurio.registry.utils.tests.TestUtils; +import io.quarkus.test.junit.QuarkusTest; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.List; + +@QuarkusTest +public class BranchesTest extends AbstractResourceTestBase { + + @Test + public void testLatestBranch() throws Exception { + String groupId = TestUtils.generateGroupId(); + String artifactId = TestUtils.generateArtifactId(); + + createArtifact(groupId, artifactId, ArtifactType.JSON, "{}", ContentTypes.APPLICATION_JSON); + createArtifactVersion(groupId, artifactId, "{}", ContentTypes.APPLICATION_JSON); + + BranchMetaData latest = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("latest").get(); + Assertions.assertNotNull(latest); + Assertions.assertEquals("latest", latest.getBranchId()); + + VersionSearchResults versions = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("latest").versions().get(); + Assertions.assertEquals(2, versions.getCount()); + } + + @Test + public void testCreateBranch() throws Exception { + String groupId = TestUtils.generateGroupId(); + String artifactId = TestUtils.generateArtifactId(); + + createArtifact(groupId, artifactId, ArtifactType.JSON, "{}", ContentTypes.APPLICATION_JSON); + + CreateBranch createBranch = new CreateBranch(); + createBranch.setBranchId("1.x"); + createBranch.setDescription("Version 1.x"); + BranchMetaData branch = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().post(createBranch); + + Assertions.assertNotNull(branch); + Assertions.assertEquals(groupId, branch.getGroupId()); + Assertions.assertEquals(artifactId, branch.getArtifactId()); + Assertions.assertEquals("1.x", branch.getBranchId()); + Assertions.assertEquals("Version 1.x", branch.getDescription()); + } + + @Test + public void testCreateBranchWithVersions() throws Exception { + String groupId = TestUtils.generateGroupId(); + String artifactId = TestUtils.generateArtifactId(); + + createArtifact(groupId, artifactId, ArtifactType.JSON, "{}", ContentTypes.APPLICATION_JSON); + createArtifactVersion(groupId, artifactId, "{}", ContentTypes.APPLICATION_JSON); + + CreateBranch createBranch = new CreateBranch(); + createBranch.setBranchId("1.x"); + createBranch.setDescription("Version 1.x"); + createBranch.setVersions(List.of("1", "2")); + BranchMetaData branch = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().post(createBranch); + + Assertions.assertNotNull(branch); + Assertions.assertEquals(groupId, branch.getGroupId()); + Assertions.assertEquals(artifactId, branch.getArtifactId()); + Assertions.assertEquals("1.x", branch.getBranchId()); + Assertions.assertEquals("Version 1.x", branch.getDescription()); + + VersionSearchResults versions = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("1.x").versions().get(); + Assertions.assertEquals(2, versions.getCount()); + + // Try to create branch with versions that do not exist. + Assertions.assertThrows(Exception.class, () -> { + CreateBranch cb = new CreateBranch(); + cb.setBranchId("invalid"); + cb.setVersions(List.of("77", "99")); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().post(cb); + }); + } + + @Test + public void testGetBranch() throws Exception { + String groupId = TestUtils.generateGroupId(); + String artifactId = TestUtils.generateArtifactId(); + + createArtifact(groupId, artifactId, ArtifactType.JSON, "{}", ContentTypes.APPLICATION_JSON); + + // Create a branch + CreateBranch createBranch = new CreateBranch(); + createBranch.setBranchId("1.x"); + createBranch.setDescription("Version 1.x"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().post(createBranch); + + // Fetch that branch and assert + BranchMetaData branch = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("1.x").get(); + Assertions.assertNotNull(branch); + Assertions.assertEquals(groupId, branch.getGroupId()); + Assertions.assertEquals(artifactId, branch.getArtifactId()); + Assertions.assertEquals("1.x", branch.getBranchId()); + Assertions.assertEquals("Version 1.x", branch.getDescription()); + + // Get a branch that does not exist + Assertions.assertThrows(Exception.class, () -> { + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("invalid").get(); + }); + + // Get a branch from an artifact that doesn't exist. + Assertions.assertThrows(Exception.class, () -> { + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId("invalid").branches().byBranchId("1.x").get(); + }); + } + + @Test + public void testGetBranches() throws Exception { + String groupId = TestUtils.generateGroupId(); + String artifactId = TestUtils.generateArtifactId(); + + createArtifact(groupId, artifactId, ArtifactType.JSON, "{}", ContentTypes.APPLICATION_JSON); + createArtifactVersion(groupId, artifactId, "{}", ContentTypes.APPLICATION_JSON); + createArtifactVersion(groupId, artifactId, "{}", ContentTypes.APPLICATION_JSON); + + CreateBranch createBranch = new CreateBranch(); + createBranch.setBranchId("1.x"); + createBranch.setDescription("Version 1.x"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().post(createBranch); + + createBranch = new CreateBranch(); + createBranch.setBranchId("2.x"); + createBranch.setDescription("Version 2.x"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().post(createBranch); + + createBranch = new CreateBranch(); + createBranch.setBranchId("3.x"); + createBranch.setDescription("Version 3.x"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().post(createBranch); + + BranchSearchResults results = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().get(); + Assertions.assertNotNull(results); + // There should be FOUR: latest, 1.x, 2.x, 3.x + Assertions.assertEquals(4, results.getCount()); + + Assertions.assertEquals("1.x", results.getBranches().get(0).getBranchId()); + Assertions.assertEquals("2.x", results.getBranches().get(1).getBranchId()); + Assertions.assertEquals("3.x", results.getBranches().get(2).getBranchId()); + Assertions.assertEquals("latest", results.getBranches().get(3).getBranchId()); + + // Get a branch from an artifact that doesn't exist. + Assertions.assertThrows(Exception.class, () -> { + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId("invalid").branches().get(); + }); + } + + @Test + public void testUpdateBranch() throws Exception { + String groupId = TestUtils.generateGroupId(); + String artifactId = TestUtils.generateArtifactId(); + + createArtifact(groupId, artifactId, ArtifactType.JSON, "{}", ContentTypes.APPLICATION_JSON); + + // Create a branch + CreateBranch createBranch = new CreateBranch(); + createBranch.setBranchId("1.x"); + createBranch.setDescription("Version 1.x"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().post(createBranch); + + // Make sure it really exists + BranchMetaData branch = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("1.x").get(); + Assertions.assertNotNull(branch); + Assertions.assertEquals(groupId, branch.getGroupId()); + Assertions.assertEquals(artifactId, branch.getArtifactId()); + Assertions.assertEquals("1.x", branch.getBranchId()); + Assertions.assertEquals("Version 1.x", branch.getDescription()); + + // Update it + EditableBranchMetaData update = new EditableBranchMetaData(); + update.setDescription("Updated version 1.x branch."); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("1.x").put(update); + + // Check it now + branch = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("1.x").get(); + Assertions.assertNotNull(branch); + Assertions.assertEquals(groupId, branch.getGroupId()); + Assertions.assertEquals(artifactId, branch.getArtifactId()); + Assertions.assertEquals("Updated version 1.x branch.", branch.getDescription()); + + // Update a branch that does not exist + Assertions.assertThrows(Exception.class, () -> { + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("invalid").put(update); + }); + + // Update a branch in an artifact that does not exist + Assertions.assertThrows(Exception.class, () -> { + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId("invalid").branches().byBranchId("1.x").put(update); + }); + } + + @Test + public void testDeleteBranch() throws Exception { + String groupId = TestUtils.generateGroupId(); + String artifactId = TestUtils.generateArtifactId(); + + createArtifact(groupId, artifactId, ArtifactType.JSON, "{}", ContentTypes.APPLICATION_JSON); + createArtifactVersion(groupId, artifactId, "{}", ContentTypes.APPLICATION_JSON); + createArtifactVersion(groupId, artifactId, "{}", ContentTypes.APPLICATION_JSON); + + // Create a branch + CreateBranch createBranch = new CreateBranch(); + createBranch.setBranchId("1.x"); + createBranch.setDescription("Version 1.x"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().post(createBranch); + + // Create a branch + createBranch = new CreateBranch(); + createBranch.setBranchId("2.x"); + createBranch.setDescription("Version 2.x"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().post(createBranch); + + // Create a branch + createBranch = new CreateBranch(); + createBranch.setBranchId("3.x"); + createBranch.setDescription("Version 3.x"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().post(createBranch); + + var results = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().get(); + Assertions.assertEquals(4, results.getCount()); + + var bmd = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("2.x").get(); + Assertions.assertEquals("2.x", bmd.getBranchId()); + + // Now delete branch 2.x + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("2.x").delete(); + + // Assert that it's gone + results = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().get(); + Assertions.assertEquals(3, results.getCount()); + + // Try to get the branch that was deleted + Assertions.assertThrows(Exception.class, () -> { + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("2.x").get(); + }); + + // Try to delete a branch that does not exist + Assertions.assertThrows(Exception.class, () -> { + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("invalid").delete(); + }); + + // Try to delete a branch of an artifact that does not exist + Assertions.assertThrows(Exception.class, () -> { + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId("invalid").branches().byBranchId("2.x").delete(); + }); + } + + @Test + public void testGetVersionsInBranch() throws Exception { + String groupId = TestUtils.generateGroupId(); + String artifactId = TestUtils.generateArtifactId(); + + // Create artifact + createArtifact(groupId, artifactId, ArtifactType.JSON, "{}", ContentTypes.APPLICATION_JSON); + // Create v2 + CreateVersion createVersion = TestUtils.clientCreateVersion("{}", ContentTypes.APPLICATION_JSON); + createVersion.setName("v2"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().post(createVersion); + // Create v3 + createVersion = TestUtils.clientCreateVersion("{}", ContentTypes.APPLICATION_JSON); + createVersion.setName("v3"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().post(createVersion); + // Create v4 + createVersion = TestUtils.clientCreateVersion("{}", ContentTypes.APPLICATION_JSON); + createVersion.setName("v4"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().post(createVersion); + // Create v5 + createVersion = TestUtils.clientCreateVersion("{}", ContentTypes.APPLICATION_JSON); + createVersion.setName("v5"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().post(createVersion); + + // Create a branch + CreateBranch createBranch = new CreateBranch(); + createBranch.setBranchId("2-3"); + createBranch.setDescription("Contains versions 2, 3"); + createBranch.setVersions(List.of("2", "3")); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().post(createBranch); + + // Create a branch + createBranch = new CreateBranch(); + createBranch.setBranchId("2-4"); + createBranch.setDescription("Contains versions 2, 3, 4"); + createBranch.setVersions(List.of("2", "3", "4")); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().post(createBranch); + + // Create a branch + createBranch = new CreateBranch(); + createBranch.setBranchId("5"); + createBranch.setDescription("Contains versions 2, 3, 4"); + createBranch.setVersions(List.of("5")); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().post(createBranch); + + // Now make sure the branches contain the versions we think. + var results = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("2-3").versions().get(); + Assertions.assertEquals(2, results.getCount()); + Assertions.assertEquals("v3", results.getVersions().get(0).getName()); + Assertions.assertEquals("v2", results.getVersions().get(1).getName()); + + results = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("2-4").versions().get(); + Assertions.assertEquals(3, results.getCount()); + Assertions.assertEquals("v4", results.getVersions().get(0).getName()); + Assertions.assertEquals("v3", results.getVersions().get(1).getName()); + Assertions.assertEquals("v2", results.getVersions().get(2).getName()); + + results = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("5").versions().get(); + Assertions.assertEquals(1, results.getCount()); + Assertions.assertEquals("v5", results.getVersions().get(0).getName()); + + // Get versions in a branch that does not exist. + Assertions.assertThrows(Exception.class, () -> { + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("invalid").versions().get(); + }); + + // Get versions in a branch of an artifact that does not exist + Assertions.assertThrows(Exception.class, () -> { + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId("invalid").branches().byBranchId("2-4").versions().get(); + }); + } + + @Test + public void testReplaceBranchVersions() throws Exception { + String groupId = TestUtils.generateGroupId(); + String artifactId = TestUtils.generateArtifactId(); + + // Create artifact + createArtifact(groupId, artifactId, ArtifactType.JSON, "{}", ContentTypes.APPLICATION_JSON, req -> { + req.getFirstVersion().setName("v1"); + }); + // Create v2 + CreateVersion createVersion = TestUtils.clientCreateVersion("{}", ContentTypes.APPLICATION_JSON); + createVersion.setName("v2"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().post(createVersion); + // Create v3 + createVersion = TestUtils.clientCreateVersion("{}", ContentTypes.APPLICATION_JSON); + createVersion.setName("v3"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().post(createVersion); + // Create v4 + createVersion = TestUtils.clientCreateVersion("{}", ContentTypes.APPLICATION_JSON); + createVersion.setName("v4"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().post(createVersion); + // Create v5 + createVersion = TestUtils.clientCreateVersion("{}", ContentTypes.APPLICATION_JSON); + createVersion.setName("v5"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().post(createVersion); + + // Create a branch + CreateBranch createBranch = new CreateBranch(); + createBranch.setBranchId("test-branch"); + createBranch.setVersions(List.of("2", "3", "4")); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().post(createBranch); + + // Make sure the branch has 2,3,4 on it. + var results = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("test-branch").versions().get(); + Assertions.assertEquals(3, results.getCount()); + Assertions.assertEquals("v4", results.getVersions().get(0).getName()); + Assertions.assertEquals("v3", results.getVersions().get(1).getName()); + Assertions.assertEquals("v2", results.getVersions().get(2).getName()); + + // Now replace the versions on the branch + List newVersions = List.of("1", "3", "5"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("test-branch").versions().put(newVersions); + + // Make sure the branch now has 1,3,5 on it. + results = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("test-branch").versions().get(); + Assertions.assertEquals(3, results.getCount()); + Assertions.assertEquals("v5", results.getVersions().get(0).getName()); + Assertions.assertEquals("v3", results.getVersions().get(1).getName()); + Assertions.assertEquals("v1", results.getVersions().get(2).getName()); + + // Replace versions in a branch that does not exist + Assertions.assertThrows(Exception.class, () -> { + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("invalid-branch").versions().put(newVersions); + }); + + // Replace versions in a branch of an artifact that does not exist + Assertions.assertThrows(Exception.class, () -> { + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId("invalid").branches().byBranchId("test-branch").versions().put(newVersions); + }); + + } + + @Test + public void testAppendVersionToBranch() throws Exception { + String groupId = TestUtils.generateGroupId(); + String artifactId = TestUtils.generateArtifactId(); + + // Create artifact + createArtifact(groupId, artifactId, ArtifactType.JSON, "{}", ContentTypes.APPLICATION_JSON, req -> { + req.getFirstVersion().setName("v1"); + }); + // Create v2 + CreateVersion createVersion = TestUtils.clientCreateVersion("{}", ContentTypes.APPLICATION_JSON); + createVersion.setName("v2"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().post(createVersion); + // Create v3 + createVersion = TestUtils.clientCreateVersion("{}", ContentTypes.APPLICATION_JSON); + createVersion.setName("v3"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().post(createVersion); + // Create v4 + createVersion = TestUtils.clientCreateVersion("{}", ContentTypes.APPLICATION_JSON); + createVersion.setName("v4"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().post(createVersion); + // Create v5 + createVersion = TestUtils.clientCreateVersion("{}", ContentTypes.APPLICATION_JSON); + createVersion.setName("v5"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().post(createVersion); + + // Create a branch + CreateBranch createBranch = new CreateBranch(); + createBranch.setBranchId("1-4"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().post(createBranch); + + // Create a branch + createBranch = new CreateBranch(); + createBranch.setBranchId("2-3"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().post(createBranch); + + // Create a branch + createBranch = new CreateBranch(); + createBranch.setBranchId("3-5"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().post(createBranch); + + // Append some versions to the branches + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("1-4").versions().post(addVersion("1")); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("1-4").versions().post(addVersion("2")); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("1-4").versions().post(addVersion("3")); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("1-4").versions().post(addVersion("4")); + + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("2-3").versions().post(addVersion("2")); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("2-3").versions().post(addVersion("3")); + + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("3-5").versions().post(addVersion("3")); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("3-5").versions().post(addVersion("4")); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("3-5").versions().post(addVersion("5")); + + // Check the results - make sure the versions are on the branches + var results = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("1-4").versions().get(); + Assertions.assertEquals(4, results.getCount()); + Assertions.assertEquals("v4", results.getVersions().get(0).getName()); + Assertions.assertEquals("v3", results.getVersions().get(1).getName()); + Assertions.assertEquals("v2", results.getVersions().get(2).getName()); + Assertions.assertEquals("v1", results.getVersions().get(3).getName()); + + results = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("2-3").versions().get(); + Assertions.assertEquals(2, results.getCount()); + Assertions.assertEquals("v3", results.getVersions().get(0).getName()); + Assertions.assertEquals("v2", results.getVersions().get(1).getName()); + + results = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("3-5").versions().get(); + Assertions.assertEquals(3, results.getCount()); + Assertions.assertEquals("v5", results.getVersions().get(0).getName()); + Assertions.assertEquals("v4", results.getVersions().get(1).getName()); + Assertions.assertEquals("v3", results.getVersions().get(2).getName()); + + // Append a version to a branch that does not exist + Assertions.assertThrows(Exception.class, () -> { + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("invalid").versions().post(addVersion("3")); + }); + + // Append a version to a branch of an artifact that does not exist + Assertions.assertThrows(Exception.class, () -> { + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId("invalid").branches().byBranchId("2-3").versions().post(addVersion("3")); + }); + } + + @Test + public void testGetMostRecentVersionFromBranch() throws Exception { + String groupId = TestUtils.generateGroupId(); + String artifactId = TestUtils.generateArtifactId(); + + // Create artifact + createArtifact(groupId, artifactId, ArtifactType.JSON, "{}", ContentTypes.APPLICATION_JSON, req -> { + req.getFirstVersion().setName("v1"); + }); + // Create v2 + CreateVersion createVersion = TestUtils.clientCreateVersion("{}", ContentTypes.APPLICATION_JSON); + createVersion.setName("v2"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().post(createVersion); + // Create v3 + createVersion = TestUtils.clientCreateVersion("{}", ContentTypes.APPLICATION_JSON); + createVersion.setName("v3"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().post(createVersion); + // Create v4 + createVersion = TestUtils.clientCreateVersion("{}", ContentTypes.APPLICATION_JSON); + createVersion.setName("v4"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().post(createVersion); + // Create v5 + createVersion = TestUtils.clientCreateVersion("{}", ContentTypes.APPLICATION_JSON); + createVersion.setName("v5"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().post(createVersion); + // Create v6 + createVersion = TestUtils.clientCreateVersion("{}", ContentTypes.APPLICATION_JSON); + createVersion.setName("v6"); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().post(createVersion); + + // Create a branch + CreateBranch createBranch = new CreateBranch(); + createBranch.setBranchId("evens"); + createBranch.setVersions(List.of("2", "4")); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().post(createBranch); + + // Create a branch + createBranch = new CreateBranch(); + createBranch.setBranchId("odds"); + createBranch.setVersions(List.of("1", "3")); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().post(createBranch); + + // Get the most recent version from each branch + VersionMetaData vmd = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().byVersionExpression("branch=evens").get(); + Assertions.assertEquals("v4", vmd.getName()); + vmd = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().byVersionExpression("branch=odds").get(); + Assertions.assertEquals("v3", vmd.getName()); + vmd = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().byVersionExpression("branch=latest").get(); + Assertions.assertEquals("v6", vmd.getName()); + + // Append versions to the branches. + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("evens").versions().post(addVersion("6")); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("odds").versions().post(addVersion("5")); + + // Get the most recent version from each branch + vmd = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().byVersionExpression("branch=evens").get(); + Assertions.assertEquals("v6", vmd.getName()); + vmd = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().byVersionExpression("branch=odds").get(); + Assertions.assertEquals("v5", vmd.getName()); + vmd = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().byVersionExpression("branch=latest").get(); + Assertions.assertEquals("v6", vmd.getName()); + + // Get the most recent version from a branch that does not exist + Assertions.assertThrows(Exception.class, () -> { + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().byVersionExpression("branch=invalid").get(); + }); + + } + + private static AddVersionToBranch addVersion(String version) { + AddVersionToBranch rval = new AddVersionToBranch(); + rval.setVersion(version); + return rval; + } + +} diff --git a/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/GroupsResourceTest.java b/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/GroupsResourceTest.java index 1d5684abd8..8637661be6 100644 --- a/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/GroupsResourceTest.java +++ b/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/GroupsResourceTest.java @@ -1,11 +1,8 @@ package io.apicurio.registry.noprofile.rest.v3; import io.apicurio.registry.AbstractResourceTestBase; -import io.apicurio.registry.model.BranchId; import io.apicurio.registry.model.GroupId; -import io.apicurio.registry.rest.client.models.CreateArtifact; import io.apicurio.registry.rest.client.models.CreateVersion; -import io.apicurio.registry.rest.v3.beans.ArtifactBranch; import io.apicurio.registry.rest.v3.beans.ArtifactMetaData; import io.apicurio.registry.rest.v3.beans.ArtifactReference; import io.apicurio.registry.rest.v3.beans.Comment; @@ -48,14 +45,11 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.UUID; import static io.restassured.RestAssured.given; import static java.net.HttpURLConnection.HTTP_NO_CONTENT; import static java.net.HttpURLConnection.HTTP_OK; -import static java.util.concurrent.TimeUnit.SECONDS; -import static java.util.stream.Collectors.toSet; import static org.hamcrest.CoreMatchers.anyOf; import static org.hamcrest.CoreMatchers.anything; import static org.hamcrest.Matchers.endsWith; @@ -70,7 +64,6 @@ import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.testcontainers.shaded.org.awaitility.Awaitility.await; @QuarkusTest public class GroupsResourceTest extends AbstractResourceTestBase { @@ -499,7 +492,7 @@ public void testGetArtifact() throws Exception { .then() .statusCode(404) .body("error_code", equalTo(404)) - .body("message", equalTo("No version '' found for artifact with ID 'testGetArtifact/MissingAPI' in group 'GroupsResourceTest'.")); + .body("message", equalTo("No version '' found for artifact with ID 'testGetArtifact/MissingAPI' in group 'GroupsResourceTest'.")); } @Test @@ -2770,514 +2763,4 @@ public void testGetArtifactVersionWithReferences() throws Exception { .body("paths.widgets.get.responses.200.content.json.schema.items.$ref", equalTo("#/components/schemas/Widget")); } - - @Test - public void testBranches() throws Exception { - var artifactContent1 = resourceToString("openapi-empty.json"); - var artifactContent2 = artifactContent1.replace("1.0.0", "1.1.0"); - var artifactContent3 = artifactContent1.replace("1.0.0", "1.2.0"); - var artifactContent4 = artifactContent1.replace("1.0.0", "1.3.0"); - var artifactId = UUID.randomUUID().toString(); - - // Create an artifact version, there should just be the latest branch - - CreateArtifact createArtifact1 = TestUtils.clientCreateArtifact(artifactId, ArtifactType.OPENAPI, artifactContent1, ContentTypes.APPLICATION_JSON); - clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .post(createArtifact1); - - var branches = clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .branches() - .get(); - - assertEquals(Set.of( - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId(BranchId.LATEST.getRawBranchId()).versions(List.of("1")).build() - ), convert(branches)); - - // Create an artifact version, with branches - CreateVersion createVersion2 = TestUtils.clientCreateVersion(artifactContent2, ContentTypes.APPLICATION_JSON); - createVersion2.setBranches(List.of("branch1", "branch2", "branch3")); - clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .versions() - .post(createVersion2); - - branches = clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .branches() - .get(); - - assertEquals(Set.of( - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId(BranchId.LATEST.getRawBranchId()).versions(List.of("2", "1")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch1").versions(List.of("2")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch2").versions(List.of("2")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch3").versions(List.of("2")).build() - ), convert(branches)); - - // Create another artifact version, with branches 1 and 3 - - CreateVersion createVersion3 = TestUtils.clientCreateVersion(artifactContent3, ContentTypes.APPLICATION_JSON); - createVersion3.setBranches(List.of("branch1", "branch3")); - clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .versions() - .post(createVersion3); - - branches = clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .branches() - .get(); - - assertEquals(Set.of( - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId(BranchId.LATEST.getRawBranchId()).versions(List.of("3", "2", "1")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch1").versions(List.of("3", "2")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch2").versions(List.of("2")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch3").versions(List.of("3", "2")).build() - ), convert(branches)); - - // Test an endpoint to get a specific branch - - var branch = clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .branches() - .byBranchId("branch1") - .get(); - - assertEquals( - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch1").versions(List.of("3", "2")).build(), - convert(branch) - ); - - // Create an additional version, and add it manually to a branch - - CreateVersion createVersion4 = TestUtils.clientCreateVersion(artifactContent4, ContentTypes.APPLICATION_JSON); - clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .versions() - .post(createVersion4); - - assertEquals(Set.of( - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId(BranchId.LATEST.getRawBranchId()).versions(List.of("3", "2", "1")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch1").versions(List.of("3", "2")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch2").versions(List.of("2")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch3").versions(List.of("3", "2")).build() - ), convert(branches)); - - branch = clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .branches() - .byBranchId("branch2") - .post("4"); - - assertEquals( - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch2").versions(List.of("4", "2")).build(), - convert(branch) - ); - - branches = clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .branches() - .get(); - - assertEquals(Set.of( - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId(BranchId.LATEST.getRawBranchId()).versions(List.of("4", "3", "2", "1")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch1").versions(List.of("3", "2")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch2").versions(List.of("4", "2")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch3").versions(List.of("3", "2")).build() - ), convert(branches)); - - // Try to replace a branch - - branch = clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .branches() - .byBranchId("branch1") - .put(convert(ArtifactBranch.builder().versions(List.of("4", "1")).build())); // We support omitting the repeated data - - assertEquals( - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch1").versions(List.of("4", "1")).build(), - convert(branch) - ); - - branches = clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .branches() - .get(); - - assertEquals(Set.of( - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId(BranchId.LATEST.getRawBranchId()).versions(List.of("4", "3", "2", "1")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch1").versions(List.of("4", "1")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch2").versions(List.of("4", "2")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch3").versions(List.of("3", "2")).build() - ), convert(branches)); - - // Try to replace a non-existent branch - - branch = clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .branches() - .byBranchId("branch4") - .put(convert(ArtifactBranch.builder().versions(List.of("1", "2", "3", "4")).build())); // We support omitting the repeated data - - assertEquals( - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch4").versions(List.of("1", "2", "3", "4")).build(), - convert(branch) - ); - - branches = clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .branches() - .get(); - - assertEquals(Set.of( - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId(BranchId.LATEST.getRawBranchId()).versions(List.of("4", "3", "2", "1")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch1").versions(List.of("4", "1")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch2").versions(List.of("4", "2")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch3").versions(List.of("3", "2")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch4").versions(List.of("1", "2", "3", "4")).build() - ), convert(branches)); - - // Failure mode: Try to replace a branch with empty version sequence - - var error = assertThrows(io.apicurio.registry.rest.client.models.Error.class, () -> { - clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .branches() - .byBranchId("branch4") - .put(convert(ArtifactBranch.builder().versions(List.of()).build())); - }); - - assertNotNull(error); - assertEquals(400, error.getErrorCode()); - assertEquals("ValidationException", error.getName()); - - // Adding existing version is allowed, but not recommended - - branch = clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .branches() - .byBranchId("branch2") - .post("2"); - - assertEquals( - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch2").versions(List.of("2", "4", "2")).build(), - convert(branch) - ); - - // Failure mode: Adding a version to the latest branch is not allowed at the moment - // It could be used to "hide" a bad latest version, but it's probably better to use the artifact state feature. - // The latest branch is used in a lot of internal features, that currently do not expect duplicates or any updates. - - error = assertThrows(io.apicurio.registry.rest.client.models.Error.class, () -> { - clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .branches() - .byBranchId(BranchId.LATEST.getRawBranchId()) - .post("3"); - }); - - assertNotNull(error); - assertEquals(409, error.getErrorCode()); - assertEquals("NotAllowedException", error.getName()); - - // Failure mode: Latest branch cannot be replaced - - error = assertThrows(io.apicurio.registry.rest.client.models.Error.class, () -> { - clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .branches() - .byBranchId(BranchId.LATEST.getRawBranchId()) - .put(convert(ArtifactBranch.builder().versions(List.of("4")).build())); - }); - - assertNotNull(error); - assertEquals(409, error.getErrorCode()); - assertEquals("NotAllowedException", error.getName()); - - // Smoke test version expressions, include them here since we've done some setup - - var version = clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .versions() - .byVersionExpression("branch=latest") - .get(); - - assertNotNull(version); - assertEquals("4", version.getVersion()); - - version = clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .versions() - .byVersionExpression("branch=branch2") - .get(); - - assertNotNull(version); - assertEquals("2", version.getVersion()); - - error = assertThrows(io.apicurio.registry.rest.client.models.Error.class, () -> { - clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .versions() - .byVersionExpression("branch=") - .get(); - }); - - assertNotNull(error); - assertEquals(400, error.getErrorCode()); - assertEquals("ValidationException", error.getName()); - - // Delete a branch - - clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .branches() - .byBranchId("branch2") - .delete(); - - error = assertThrows(io.apicurio.registry.rest.client.models.Error.class, () -> { - clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .branches() - .byBranchId("branch2") - .get(); - }); - - assertNotNull(error); - assertEquals(404, error.getErrorCode()); - assertEquals("ArtifactBranchNotFoundException", error.getName()); - - // Failure mode: Version expression for a deleted branch - - error = assertThrows(io.apicurio.registry.rest.client.models.Error.class, () -> { - clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .versions() - .byVersionExpression("branch=branch2") - .get(); - }); - - assertNotNull(error); - assertEquals(404, error.getErrorCode()); - assertEquals("VersionNotFoundException", error.getName()); - - // Failure mode: Latest branch cannot be deleted - - error = assertThrows(io.apicurio.registry.rest.client.models.Error.class, () -> { - clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .branches() - .byBranchId(BranchId.LATEST.getRawBranchId()) - .delete(); - }); - - assertNotNull(error); - assertEquals(409, error.getErrorCode()); - assertEquals("NotAllowedException", error.getName()); - - // Delete a version, make sure it is removed from branches - - branches = clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .branches() - .get(); - - assertEquals(Set.of( - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId(BranchId.LATEST.getRawBranchId()).versions(List.of("4", "3", "2", "1")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch1").versions(List.of("4", "1")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch3").versions(List.of("3", "2")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch4").versions(List.of("1", "2", "3", "4")).build() - ), convert(branches)); - - clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .versions() - .byVersionExpression("2") - .delete(); - - await().atMost(3, SECONDS).until(() -> { - try { - clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .versions() - .byVersionExpression("2") - .get(); - return false; - } catch (Exception ignored) { - return true; - } - }); - - branches = clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .branches() - .get(); - - assertEquals(Set.of( - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId(BranchId.LATEST.getRawBranchId()).versions(List.of("4", "3", "1")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch1").versions(List.of("4", "1")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch3").versions(List.of("3")).build(), - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId("branch4").versions(List.of("1", "3", "4")).build() - ), convert(branches)); - - // Delete the entire artifact and recreate it. Make sure branches have been cleaned up. - - clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .delete(); - - await().atMost(3, SECONDS).until(() -> { - try { - clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .versions() - .byVersionExpression("branch=latest") - .get(); - return false; - } catch (Exception ignored) { - return true; - } - }); - - CreateArtifact createArtifact = TestUtils.clientCreateArtifact(artifactId, ArtifactType.OPENAPI, artifactContent1, ContentTypes.APPLICATION_JSON); - clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .post(createArtifact); - - branches = clientV3 - .groups() - .byGroupId(GROUP) - .artifacts() - .byArtifactId(artifactId) - .branches() - .get(); - - assertEquals(Set.of( - ArtifactBranch.builder().groupId(GROUP).artifactId(artifactId).branchId(BranchId.LATEST.getRawBranchId()).versions(List.of("1")).build() - ), convert(branches)); - } - - - private static ArtifactBranch convert(io.apicurio.registry.rest.client.models.ArtifactBranch origin) { - assertNotNull(origin); - return ArtifactBranch.builder() - .groupId(origin.getGroupId()) - .artifactId(origin.getArtifactId()) - .branchId(origin.getBranchId()) - .versions(origin.getVersions()) - .build(); - } - - - private static Set convert(List origin) { - return origin - .stream() - .map(GroupsResourceTest::convert) - .collect(toSet()); - } - - - private static io.apicurio.registry.rest.client.models.ArtifactBranch convert(ArtifactBranch origin) { - assertNotNull(origin); - var res = new io.apicurio.registry.rest.client.models.ArtifactBranch(); - res.setGroupId(origin.getGroupId()); - res.setArtifactId(origin.getArtifactId()); - res.setBranchId(origin.getBranchId()); - res.setVersions(origin.getVersions()); - return res; - } } diff --git a/app/src/test/java/io/apicurio/registry/noprofile/storage/AbstractRegistryStorageTest.java b/app/src/test/java/io/apicurio/registry/noprofile/storage/AbstractRegistryStorageTest.java index 65cfeb4d8d..a43b199ad8 100644 --- a/app/src/test/java/io/apicurio/registry/noprofile/storage/AbstractRegistryStorageTest.java +++ b/app/src/test/java/io/apicurio/registry/noprofile/storage/AbstractRegistryStorageTest.java @@ -540,7 +540,7 @@ public abstract class AbstractRegistryStorageTest extends AbstractResourceTestBa // updateVersionState(GROUP_ID, artifactId, "2", VersionState.DISABLED); // storage().deleteArtifactVersion(GROUP_ID, artifactId, "3"); // -// GAV latestGAV = storage().getArtifactBranchTip(new GA(GROUP_ID, artifactId), BranchId.LATEST, DEFAULT); +// GAV latestGAV = storage().getBranchTip(new GA(GROUP_ID, artifactId), BranchId.LATEST, DEFAULT); // ArtifactVersionMetaDataDto artifactMetaData = storage().getArtifactVersionMetaData(GROUP_ID, aid2, latestGAV.getRawVersionId()); // Assertions.assertNotNull(artifactMetaData); // Assertions.assertEquals("2", artifactMetaData.getVersion()); @@ -966,11 +966,11 @@ public abstract class AbstractRegistryStorageTest extends AbstractResourceTestBa // // // @Test -// public void testArtifactBranches() { +// public void testBranches() { // // var ga = new GA(GROUP_ID, "foo"); // -// Assertions.assertThrows(ArtifactNotFoundException.class, () -> storage().getArtifactBranches(ga)); +// Assertions.assertThrows(ArtifactNotFoundException.class, () -> storage().getBranches(ga)); // // var content = ContentHandle.create(OPENAPI_CONTENT); // ArtifactVersionMetaDataDto dtoV1 = storage().createArtifact(GROUP_ID, ga.getRawArtifactId(), null, ArtifactType.OPENAPI, content, null); @@ -978,20 +978,20 @@ public abstract class AbstractRegistryStorageTest extends AbstractResourceTestBa // Assertions.assertEquals(ga.getRawGroupIdWithDefaultString(), dtoV1.getGroupId()); // Assertions.assertEquals(ga.getRawArtifactId(), dtoV1.getArtifactId()); // -// var branches = storage().getArtifactBranches(ga); +// var branches = storage().getBranches(ga); // Assertions.assertEquals(Map.of(BranchId.LATEST, List.of(new GAV(ga, dtoV1.getVersion()))), branches); // -// var latestBranch = storage().getArtifactBranch(ga, BranchId.LATEST, DEFAULT); +// var latestBranch = storage().getBranch(ga, BranchId.LATEST, DEFAULT); // Assertions.assertEquals(List.of(new GAV(ga, dtoV1.getVersion())), latestBranch); // -// var gavV1 = storage().getArtifactBranchTip(ga, BranchId.LATEST, DEFAULT); +// var gavV1 = storage().getBranchTip(ga, BranchId.LATEST, DEFAULT); // Assertions.assertNotNull(gavV1); // Assertions.assertEquals(gavV1.getRawGroupIdWithDefaultString(), dtoV1.getGroupId()); // Assertions.assertEquals(gavV1.getRawArtifactId(), dtoV1.getArtifactId()); // Assertions.assertEquals(gavV1.getRawVersionId(), dtoV1.getVersion()); // // var otherBranchId = new BranchId("other"); -// storage().createOrUpdateArtifactBranch(gavV1, otherBranchId); +// storage().createOrUpdateBranch(gavV1, otherBranchId); // // content = ContentHandle.create(OPENAPI_CONTENT_V2); // var dtoV2 = storage().createArtifactVersion(ga.getRawGroupIdWithDefaultString(), ga.getRawArtifactId(), null, ArtifactType.OPENAPI, content, null); @@ -999,60 +999,60 @@ public abstract class AbstractRegistryStorageTest extends AbstractResourceTestBa // Assertions.assertEquals(ga.getRawGroupIdWithDefaultString(), dtoV2.getGroupId()); // Assertions.assertEquals(ga.getRawArtifactId(), dtoV2.getArtifactId()); // -// branches = storage().getArtifactBranches(ga); +// branches = storage().getBranches(ga); // Assertions.assertEquals(Map.of( // BranchId.LATEST, List.of(new GAV(ga, dtoV2.getVersion()), new GAV(ga, dtoV1.getVersion())), // otherBranchId, List.of(new GAV(ga, dtoV1.getVersion())) // ), branches); // -// latestBranch = storage().getArtifactBranch(ga, BranchId.LATEST, DEFAULT); +// latestBranch = storage().getBranch(ga, BranchId.LATEST, DEFAULT); // Assertions.assertEquals(List.of(new GAV(ga, dtoV2.getVersion()), new GAV(ga, dtoV1.getVersion())), latestBranch); // -// var otherBranch = storage().getArtifactBranch(ga, otherBranchId, DEFAULT); +// var otherBranch = storage().getBranch(ga, otherBranchId, DEFAULT); // Assertions.assertEquals(List.of(new GAV(ga, dtoV1.getVersion())), otherBranch); // -// var gavV2 = storage().getArtifactBranchTip(ga, BranchId.LATEST, DEFAULT); +// var gavV2 = storage().getBranchTip(ga, BranchId.LATEST, DEFAULT); // Assertions.assertNotNull(gavV2); // Assertions.assertEquals(gavV2.getRawGroupIdWithDefaultString(), dtoV2.getGroupId()); // Assertions.assertEquals(gavV2.getRawArtifactId(), dtoV2.getArtifactId()); // Assertions.assertEquals(gavV2.getRawVersionId(), dtoV2.getVersion()); // -// gavV1 = storage().getArtifactBranchTip(ga, otherBranchId, DEFAULT); +// gavV1 = storage().getBranchTip(ga, otherBranchId, DEFAULT); // Assertions.assertNotNull(gavV1); // Assertions.assertEquals(gavV1.getRawGroupIdWithDefaultString(), dtoV1.getGroupId()); // Assertions.assertEquals(gavV1.getRawArtifactId(), dtoV1.getArtifactId()); // Assertions.assertEquals(gavV1.getRawVersionId(), dtoV1.getVersion()); // -// storage().createOrUpdateArtifactBranch(gavV2, otherBranchId); +// storage().createOrUpdateBranch(gavV2, otherBranchId); // -// branches = storage().getArtifactBranches(ga); +// branches = storage().getBranches(ga); // Assertions.assertEquals(Map.of( // BranchId.LATEST, List.of(new GAV(ga, dtoV2.getVersion()), new GAV(ga, dtoV1.getVersion())), // otherBranchId, List.of(new GAV(ga, dtoV2.getVersion()), new GAV(ga, dtoV1.getVersion())) // ), branches); // -// Assertions.assertEquals(storage().getArtifactBranch(ga, BranchId.LATEST, DEFAULT), storage().getArtifactBranch(ga, otherBranchId, DEFAULT)); -// Assertions.assertEquals(storage().getArtifactBranchTip(ga, BranchId.LATEST, DEFAULT), storage().getArtifactBranchTip(ga, otherBranchId, DEFAULT)); +// Assertions.assertEquals(storage().getBranch(ga, BranchId.LATEST, DEFAULT), storage().getBranch(ga, otherBranchId, DEFAULT)); +// Assertions.assertEquals(storage().getBranchTip(ga, BranchId.LATEST, DEFAULT), storage().getBranchTip(ga, otherBranchId, DEFAULT)); // // updateVersionState(gavV2.getRawGroupIdWithDefaultString(), gavV2.getRawArtifactId(), gavV2.getRawVersionId(), VersionState.DISABLED); -// Assertions.assertEquals(List.of(gavV1), storage().getArtifactBranch(ga, BranchId.LATEST, SKIP_DISABLED_LATEST)); -// Assertions.assertEquals(gavV1, storage().getArtifactBranchTip(ga, BranchId.LATEST, ArtifactRetrievalBehavior.SKIP_DISABLED_LATEST)); +// Assertions.assertEquals(List.of(gavV1), storage().getBranch(ga, BranchId.LATEST, SKIP_DISABLED_LATEST)); +// Assertions.assertEquals(gavV1, storage().getBranchTip(ga, BranchId.LATEST, ArtifactRetrievalBehavior.SKIP_DISABLED_LATEST)); // // updateVersionState(gavV2.getRawGroupIdWithDefaultString(), gavV2.getRawArtifactId(), gavV2.getRawVersionId(), VersionState.ENABLED); -// Assertions.assertEquals(List.of(gavV2, gavV1), storage().getArtifactBranch(ga, BranchId.LATEST, SKIP_DISABLED_LATEST)); -// Assertions.assertEquals(gavV2, storage().getArtifactBranchTip(ga, BranchId.LATEST, ArtifactRetrievalBehavior.SKIP_DISABLED_LATEST)); +// Assertions.assertEquals(List.of(gavV2, gavV1), storage().getBranch(ga, BranchId.LATEST, SKIP_DISABLED_LATEST)); +// Assertions.assertEquals(gavV2, storage().getBranchTip(ga, BranchId.LATEST, ArtifactRetrievalBehavior.SKIP_DISABLED_LATEST)); // // storage().deleteArtifactVersion(gavV1.getRawGroupIdWithDefaultString(), gavV1.getRawArtifactId(), gavV1.getRawVersionId()); // -// Assertions.assertEquals(List.of(gavV2), storage().getArtifactBranch(ga, BranchId.LATEST, DEFAULT)); -// Assertions.assertEquals(List.of(gavV2), storage().getArtifactBranch(ga, otherBranchId, DEFAULT)); +// Assertions.assertEquals(List.of(gavV2), storage().getBranch(ga, BranchId.LATEST, DEFAULT)); +// Assertions.assertEquals(List.of(gavV2), storage().getBranch(ga, otherBranchId, DEFAULT)); // -// storage().deleteArtifactBranch(ga, otherBranchId); +// storage().deleteBranch(ga, otherBranchId); // -// Assertions.assertThrows(ArtifactBranchNotFoundException.class, () -> storage().getArtifactBranch(ga, otherBranchId, DEFAULT)); -// Assertions.assertThrows(VersionNotFoundException.class, () -> storage().getArtifactBranchTip(ga, otherBranchId, DEFAULT)); +// Assertions.assertThrows(BranchNotFoundException.class, () -> storage().getBranch(ga, otherBranchId, DEFAULT)); +// Assertions.assertThrows(VersionNotFoundException.class, () -> storage().getBranchTip(ga, otherBranchId, DEFAULT)); // -// Assertions.assertThrows(NotAllowedException.class, () -> storage().deleteArtifactBranch(ga, BranchId.LATEST)); +// Assertions.assertThrows(NotAllowedException.class, () -> storage().deleteBranch(ga, BranchId.LATEST)); // } // // private void updateVersionState(String groupId, String artifactId, String version, VersionState newState) { diff --git a/app/src/test/java/io/apicurio/registry/noprofile/storage/RegistryStorageSmokeTest.java b/app/src/test/java/io/apicurio/registry/noprofile/storage/RegistryStorageSmokeTest.java index 8c0d9bbc7f..3ce66747b7 100644 --- a/app/src/test/java/io/apicurio/registry/noprofile/storage/RegistryStorageSmokeTest.java +++ b/app/src/test/java/io/apicurio/registry/noprofile/storage/RegistryStorageSmokeTest.java @@ -6,7 +6,7 @@ import io.apicurio.registry.model.GA; import io.apicurio.registry.model.GAV; import io.apicurio.registry.storage.RegistryStorage; -import io.apicurio.registry.storage.RegistryStorage.ArtifactRetrievalBehavior; +import io.apicurio.registry.storage.RegistryStorage.RetrievalBehavior; import io.apicurio.registry.storage.dto.ArtifactVersionMetaDataDto; import io.apicurio.registry.storage.dto.ContentWrapperDto; import io.apicurio.registry.storage.dto.EditableArtifactMetaDataDto; @@ -117,7 +117,7 @@ public void testArtifactsAndMeta() throws Exception { assertNotNull(a1.getVersion()); assertNotNull(a1.getContent()); - GAV latestGAV = getStorage().getArtifactBranchTip(new GA(GROUP_ID, artifactId1), BranchId.LATEST, ArtifactRetrievalBehavior.DEFAULT); + GAV latestGAV = getStorage().getBranchTip(new GA(GROUP_ID, artifactId1), BranchId.LATEST, RetrievalBehavior.DEFAULT); ArtifactVersionMetaDataDto metaLatest = getStorage().getArtifactVersionMetaData(GROUP_ID, artifactId1, latestGAV.getRawVersionId()); assertEquals(vmdDto1_2, metaLatest); diff --git a/app/src/test/java/io/apicurio/registry/storage/impl/kafkasql/KafkasqlRecoverFromSnapshotTest.java b/app/src/test/java/io/apicurio/registry/storage/impl/kafkasql/KafkasqlRecoverFromSnapshotTest.java deleted file mode 100644 index 53e052a6a4..0000000000 --- a/app/src/test/java/io/apicurio/registry/storage/impl/kafkasql/KafkasqlRecoverFromSnapshotTest.java +++ /dev/null @@ -1,156 +0,0 @@ -package io.apicurio.registry.storage.impl.kafkasql; - -import io.apicurio.registry.AbstractResourceTestBase; -import io.apicurio.registry.rest.client.models.CreateArtifact; -import io.apicurio.registry.rest.client.models.CreateRule; -import io.apicurio.registry.rest.client.models.RuleType; -import io.apicurio.registry.types.ArtifactType; -import io.apicurio.registry.types.ContentTypes; -import io.apicurio.registry.utils.kafka.KafkaUtil; -import io.apicurio.registry.utils.tests.KafkasqlRecoverFromSnapshotTestProfile; -import io.apicurio.registry.utils.tests.TestUtils; -import io.quarkus.test.common.QuarkusTestResource; -import io.quarkus.test.common.QuarkusTestResourceLifecycleManager; -import io.quarkus.test.junit.QuarkusTest; -import io.quarkus.test.junit.TestProfile; -import lombok.SneakyThrows; -import org.apache.kafka.clients.CommonClientConfigs; -import org.apache.kafka.clients.producer.KafkaProducer; -import org.apache.kafka.clients.producer.ProducerRecord; -import org.apache.kafka.common.header.internals.RecordHeader; -import org.apache.kafka.common.serialization.StringSerializer; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; - -import java.net.URISyntaxException; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.nio.file.Paths; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.Set; -import java.util.UUID; -import java.util.concurrent.ExecutionException; - -@QuarkusTest -@TestProfile(KafkasqlRecoverFromSnapshotTestProfile.class) -@QuarkusTestResource(value = KafkasqlRecoverFromSnapshotTest.KafkaSqlSnapshotTestInitializer.class, restrictToAnnotatedClass = true) -public class KafkasqlRecoverFromSnapshotTest extends AbstractResourceTestBase { - - private static final String NEW_ARTIFACTS_SNAPSHOT_TEST_GROUP_ID = "SNAPSHOT_TEST_GROUP_ID"; - - @BeforeAll - public void init() { - //Create a bunch of artifacts and rules, so they're added on top of the snapshot. - String simpleAvro = resourceToString("avro.json"); - - for (int idx = 0; idx < 1000; idx++) { - System.out.println("Iteration: " + idx); - String artifactId = UUID.randomUUID().toString(); - CreateArtifact createArtifact = TestUtils.clientCreateArtifact(artifactId, ArtifactType.AVRO, simpleAvro, - ContentTypes.APPLICATION_JSON); - clientV3.groups().byGroupId(NEW_ARTIFACTS_SNAPSHOT_TEST_GROUP_ID).artifacts().post(createArtifact, config -> config.headers.add("X-Registry-ArtifactId", artifactId)); - CreateRule createRule = new CreateRule(); - createRule.setRuleType(RuleType.VALIDITY); - createRule.setConfig("SYNTAX_ONLY"); - clientV3.groups().byGroupId(NEW_ARTIFACTS_SNAPSHOT_TEST_GROUP_ID).artifacts().byArtifactId(artifactId).rules().post(createRule); } - } - - @Test - public void testRecoverFromSnapshot() throws InterruptedException { - //We expect 4001 artifacts coming from the snapshot - Assertions.assertEquals(1000, clientV3.groups().byGroupId("default").artifacts().get().getCount()); - //We expect another 1000 artifacts coming added on top of the snapshot - Assertions.assertEquals(1000, clientV3.groups().byGroupId(NEW_ARTIFACTS_SNAPSHOT_TEST_GROUP_ID).artifacts().get().getCount()); - } - - protected static class KafkaSqlSnapshotTestInitializer implements QuarkusTestResourceLifecycleManager { - - KafkaProducer dataProducer; - KafkaProducer snapshotsProducer; - - public KafkaSqlSnapshotTestInitializer() { - } - - @Override - public int order() { - return 10001; - } - - @Override - @SneakyThrows - public Map start() { - Properties props = connectionProperties(); - - KafkaUtil.createTopics(props, Set.of("kafkasql-snapshots", "kafkasql-journal"), Collections.emptyMap()); - - prepareSnapshotMarker(props); - prepareSnapshotMessages(props); - - return Collections.emptyMap(); - } - - private void prepareSnapshotMarker(Properties props) throws ExecutionException, InterruptedException { - StringSerializer keySerializer = new StringSerializer(); - StringSerializer valueSerializer = new StringSerializer(); - - //Create the data producer to send a snapshot marker - dataProducer = new KafkaProducer<>(props, keySerializer, valueSerializer); - RecordHeader messageTypeHeader = new RecordHeader("mt", "CreateSnapshot1Message".getBytes(StandardCharsets.UTF_8)); - ProducerRecord snapshotMarkerRecord = new ProducerRecord<>("kafkasql-journal", 0, - "{\"uuid\":\"1345b402-c707-457e-af76-10c1045e68e8\",\"messageType\":\"CreateSnapshot1Message\",\"partitionKey\":\"__GLOBAL_PARTITION__\"}", "{\n" - + " \"snapshotLocation\": \"/io/apicurio/registry/storage/impl/kafkasql/943e6945-5aef-4ca0-a3cd-31af380840ea.sql\",\n" - + " \"snapshotId\": \"943e6945-5aef-4ca0-a3cd-31af380840ea\",\n" - + " \"key\": {\n" - + " \"uuid\": \"943e6945-5aef-4ca0-a3cd-31af380840ea\",\n" - + " \"messageType\": \"CreateSnapshot1Message\",\n" - + " \"partitionKey\": \"__GLOBAL_PARTITION__\"\n" - + " }\n" - + " }", List.of(messageTypeHeader)); - - //Send snapshot marker - dataProducer.send(snapshotMarkerRecord).get(); - } - - private void prepareSnapshotMessages(Properties props) throws URISyntaxException, ExecutionException, InterruptedException { - StringSerializer keySerializer = new StringSerializer(); - StringSerializer valueSerializer = new StringSerializer(); - - URL resource = getClass().getResource("/io/apicurio/registry/storage/impl/kafkasql/943e6945-5aef-4ca0-a3cd-31af380840ea.sql"); - String snapshotLocation = Paths.get(resource.toURI()).toFile().getAbsolutePath(); - - //Send three messages to the snapshots topic, two invalid, and one valid. Only the latest valid one must be processed. - ProducerRecord olderInvalidSnapshot = new ProducerRecord<>("kafkasql-snapshots", 0, "1312b402-c707-457e-af76-10c1045e68e8", - "snapshotLocation", - Collections.emptyList()); - ProducerRecord record = new ProducerRecord<>("kafkasql-snapshots", 0, "943e6945-5aef-4ca0-a3cd-31af380840ea", snapshotLocation, - Collections.emptyList()); - ProducerRecord newerInvalidSnaphot = new ProducerRecord<>("kafkasql-snapshots", 0, "1322b402-c707-457e-af76-10c1045e68e8", "", - Collections.emptyList()); - - // Create the Kafka Producer - snapshotsProducer = new KafkaProducer<>(props, keySerializer, valueSerializer); - - snapshotsProducer.send(olderInvalidSnapshot).get(); - snapshotsProducer.send(record).get(); - snapshotsProducer.send(newerInvalidSnaphot).get(); - } - - public Properties connectionProperties() { - Properties properties = new Properties(); - properties.put(CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG, System.getProperty("bootstrap.servers.external")); - properties.put(CommonClientConfigs.CONNECTIONS_MAX_IDLE_MS_CONFIG, 10000); - properties.put(CommonClientConfigs.REQUEST_TIMEOUT_MS_CONFIG, 5000); - return properties; - } - - @Override - public void stop() { - dataProducer.close(); - snapshotsProducer.close(); - } - } -} diff --git a/app/src/test/java/io/apicurio/registry/storage/impl/readonly/ReadOnlyRegistryStorageTest.java b/app/src/test/java/io/apicurio/registry/storage/impl/readonly/ReadOnlyRegistryStorageTest.java index 270987cf52..8535505557 100644 --- a/app/src/test/java/io/apicurio/registry/storage/impl/readonly/ReadOnlyRegistryStorageTest.java +++ b/app/src/test/java/io/apicurio/registry/storage/impl/readonly/ReadOnlyRegistryStorageTest.java @@ -36,6 +36,7 @@ public class ReadOnlyRegistryStorageTest { static { EXPECTED_METHODS = Map.ofEntries( // Keep alphabetical + entry("appendVersionToBranch3", new State(true, s -> s.appendVersionToBranch(null, null, null))), entry("consumeDownload1", new State(true, s -> s.consumeDownload(null))), entry("contentIdFromHash1", new State(false, s -> s.contentIdFromHash(null))), entry("countArtifacts0", new State(false, RegistryStorage::countArtifacts)), @@ -45,16 +46,16 @@ public class ReadOnlyRegistryStorageTest { entry("createArtifact8", new State(true, s -> s.createArtifact(null, null, null, null, null, null, null, null))), entry("createArtifactRule4", new State(true, s -> s.createArtifactRule(null, null, null, null))), entry("createArtifactVersionComment4", new State(true, s -> s.createArtifactVersionComment(null, null, null, null))), + entry("createArtifactVersion7", new State(true, s -> s.createArtifactVersion(null, null, null, null, null, null, null))), + entry("createBranch4", new State(true, s -> s.createBranch(null, null, null, null))), entry("createDownload1", new State(true, s -> s.createDownload(null))), entry("createGlobalRule2", new State(true, s -> s.createGlobalRule(null, null))), entry("createGroup1", new State(true, s -> s.createGroup(null))), - entry("createOrReplaceArtifactBranch3", new State(true, s -> s.createOrReplaceArtifactBranch(null, null, null))), - entry("createOrUpdateArtifactBranch2", new State(true, s -> s.createOrUpdateArtifactBranch(null, null))), entry("createRoleMapping3", new State(true, s -> s.createRoleMapping(null, null, null))), entry("deleteAllExpiredDownloads0", new State(true, RegistryStorage::deleteAllExpiredDownloads)), entry("deleteAllUserData0", new State(true, RegistryStorage::deleteAllUserData)), entry("deleteArtifact2", new State(true, s -> s.deleteArtifact(null, null))), - entry("deleteArtifactBranch2", new State(true, s -> s.deleteArtifactBranch(null, null))), + entry("deleteBranch2", new State(true, s -> s.deleteBranch(null, null))), entry("deleteArtifactRule3", new State(true, s -> s.deleteArtifactRule(null, null, null))), entry("deleteArtifactRules2", new State(true, s -> s.deleteArtifactRules(null, null))), entry("deleteArtifacts1", new State(true, s -> s.deleteArtifacts(null))), @@ -68,9 +69,10 @@ public class ReadOnlyRegistryStorageTest { entry("exportData1", new State(false, s -> s.exportData(null))), entry("getContentByHash1", new State(false, s -> s.getContentByHash(null))), entry("getContentById1", new State(false, s -> s.getContentById(0))), - entry("getArtifactBranch3", new State(false, s -> s.getArtifactBranch(null, null, null))), - entry("getArtifactBranches1", new State(false, s -> s.getArtifactBranches(null))), - entry("getArtifactBranchTip3", new State(false, s -> s.getArtifactBranchTip(null, null, null))), + entry("getBranchMetaData2", new State(false, s -> s.getBranchMetaData(null, null))), + entry("getBranches3", new State(false, s -> s.getBranches(null, 0, 0))), + entry("getBranchVersions4", new State(false, s -> s.getBranchVersions(null, null, 0, 0))), + entry("getBranchTip3", new State(false, s -> s.getBranchTip(null, null, null))), entry("getArtifactIds1", new State(false, s -> s.getArtifactIds(null))), entry("getArtifactMetaData2", new State(false, s -> s.getArtifactMetaData(null, null))), entry("getArtifactRule3", new State(false, s -> s.getArtifactRule(null, null, null))), @@ -82,7 +84,7 @@ public class ReadOnlyRegistryStorageTest { entry("getArtifactVersionMetaData3", new State(false, s -> s.getArtifactVersionMetaData(null, null, null))), entry("getArtifactVersionMetaDataByContent5", new State(false, s -> s.getArtifactVersionMetaDataByContent(null, null, false, null, null))), entry("getArtifactVersions2", new State(false, s -> s.getArtifactVersions(null, null))), - entry("getArtifactVersions3", new State(false, s -> s.getArtifactVersions(null, null, RegistryStorage.ArtifactRetrievalBehavior.DEFAULT))), + entry("getArtifactVersions3", new State(false, s -> s.getArtifactVersions(null, null, RegistryStorage.RetrievalBehavior.DEFAULT))), entry("getEnabledArtifactContentIds2", new State(false, s -> s.getEnabledArtifactContentIds(null, null))), entry("getArtifactVersionsByContentId1", new State(false, s -> s.getArtifactVersionsByContentId(0))), entry("getConfigProperties0", new State(false, DynamicConfigStorage::getConfigProperties)), @@ -100,7 +102,7 @@ public class ReadOnlyRegistryStorageTest { entry("getRoleMappings0", new State(false, RegistryStorage::getRoleMappings)), entry("searchRoleMappings2", new State(false, s -> s.searchRoleMappings(0, 20))), entry("getStaleConfigProperties1", new State(false, s -> s.getStaleConfigProperties(null))), - entry("importArtifactBranch1", new State(true, s -> s.importArtifactBranch(null))), + entry("importBranch1", new State(true, s -> s.importBranch(null))), entry("importArtifactRule1", new State(true, s -> s.importArtifactRule(null))), entry("importArtifactVersion1", new State(true, s -> s.importArtifactVersion(null))), entry("importComment1", new State(true, s -> s.importComment(null))), @@ -122,8 +124,9 @@ public class ReadOnlyRegistryStorageTest { entry("nextCommentId0", new State(true, RegistryStorage::nextCommentId)), entry("nextContentId0", new State(true, RegistryStorage::nextContentId)), entry("nextGlobalId0", new State(true, RegistryStorage::nextGlobalId)), - entry("resetCommentId0", new State(true, RegistryStorage::resetCommentId)), + entry("replaceBranchVersions3", new State(true, s -> s.replaceBranchVersions(null, null, null))), entry("resetContentId0", new State(true, RegistryStorage::resetContentId)), + entry("resetCommentId0", new State(true, RegistryStorage::resetCommentId)), entry("resetGlobalId0", new State(true, RegistryStorage::resetGlobalId)), entry("resolveReferences1", new State(false, s -> s.resolveReferences(null))), entry("searchArtifacts5", new State(false, s -> s.searchArtifacts(null, null, null, 0, 0))), @@ -135,11 +138,11 @@ public class ReadOnlyRegistryStorageTest { s.setConfigProperty(dto); })), entry("storageName0", new State(false, RegistryStorage::storageName)), - entry("createArtifactVersion7", new State(true, s -> s.createArtifactVersion(null, null, null, null, null, null, null))), entry("updateArtifactMetaData3", new State(true, s -> s.updateArtifactMetaData(null, null, null))), entry("updateArtifactRule4", new State(true, s -> s.updateArtifactRule(null, null, null, null))), entry("updateArtifactVersionComment5", new State(true, s -> s.updateArtifactVersionComment(null, null, null, null, null))), entry("updateArtifactVersionMetaData4", new State(true, s -> s.updateArtifactVersionMetaData(null, null, null, null))), + entry("updateBranchMetaData3", new State(true, s -> s.updateBranchMetaData(null, null, null))), entry("updateContentCanonicalHash3", new State(true, s -> s.updateContentCanonicalHash(null, 0, null))), entry("updateGlobalRule2", new State(true, s -> s.updateGlobalRule(null, null))), entry("updateGroupMetaData2", new State(true, s -> s.updateGroupMetaData(null, null))), diff --git a/app/src/test/resources/io/apicurio/registry/storage/impl/kafkasql/943e6945-5aef-4ca0-a3cd-31af380840ea.sql b/app/src/test/resources/io/apicurio/registry/storage/impl/kafkasql/943e6945-5aef-4ca0-a3cd-31af380840ea.sql deleted file mode 100644 index 63eab1f3fb..0000000000 --- a/app/src/test/resources/io/apicurio/registry/storage/impl/kafkasql/943e6945-5aef-4ca0-a3cd-31af380840ea.sql +++ /dev/null @@ -1,4326 +0,0 @@ --- H2 2.2.224; -; -CREATE USER IF NOT EXISTS "SA" SALT 'aac9be0bb0fcc4d4' HASH '1e1e5cf17bec98111f5d959ce3c26b2baf984043666c43e479643e63223e0557' ADMIN; -CREATE MEMORY TABLE "PUBLIC"."APICURIO"( - "PROPNAME" CHARACTER VARYING(255) NOT NULL, - "PROPVALUE" CHARACTER VARYING(255) -); -ALTER TABLE "PUBLIC"."APICURIO" ADD CONSTRAINT "PUBLIC"."CONSTRAINT_6" PRIMARY KEY("PROPNAME"); --- 1 +/- SELECT COUNT(*) FROM PUBLIC.APICURIO; -INSERT INTO "PUBLIC"."APICURIO" VALUES -('db_version', '100'); -CREATE MEMORY TABLE "PUBLIC"."SEQUENCES"( - "SEQNAME" CHARACTER VARYING(32) SELECTIVITY 100 NOT NULL, - "SEQVALUE" BIGINT SELECTIVITY 100 NOT NULL -); -ALTER TABLE "PUBLIC"."SEQUENCES" ADD CONSTRAINT "PUBLIC"."CONSTRAINT_63" PRIMARY KEY("SEQNAME"); --- 2 +/- SELECT COUNT(*) FROM PUBLIC.SEQUENCES; -INSERT INTO "PUBLIC"."SEQUENCES" VALUES -('contentId', 1), -('globalId', 1000); -CREATE MEMORY TABLE "PUBLIC"."CONFIG"( - "PROPNAME" CHARACTER VARYING(255) NOT NULL, - "PROPVALUE" CHARACTER VARYING(1024) NOT NULL, - "MODIFIEDON" BIGINT NOT NULL -); -ALTER TABLE "PUBLIC"."CONFIG" ADD CONSTRAINT "PUBLIC"."CONSTRAINT_7" PRIMARY KEY("PROPNAME"); --- 0 +/- SELECT COUNT(*) FROM PUBLIC.CONFIG; -CREATE INDEX "PUBLIC"."IDX_CONFIG_1" ON "PUBLIC"."CONFIG"("MODIFIEDON" NULLS FIRST); -CREATE MEMORY TABLE "PUBLIC"."ACLS"( - "PRINCIPALID" CHARACTER VARYING(256) NOT NULL, - "ROLE" CHARACTER VARYING(32) NOT NULL, - "PRINCIPALNAME" CHARACTER VARYING(256) -); -ALTER TABLE "PUBLIC"."ACLS" ADD CONSTRAINT "PUBLIC"."CONSTRAINT_1" PRIMARY KEY("PRINCIPALID"); --- 0 +/- SELECT COUNT(*) FROM PUBLIC.ACLS; -CREATE MEMORY TABLE "PUBLIC"."DOWNLOADS"( - "DOWNLOADID" CHARACTER VARYING(128) NOT NULL, - "EXPIRES" BIGINT NOT NULL, - "CONTEXT" CHARACTER VARYING(1024) -); -ALTER TABLE "PUBLIC"."DOWNLOADS" ADD CONSTRAINT "PUBLIC"."CONSTRAINT_F" PRIMARY KEY("DOWNLOADID"); --- 0 +/- SELECT COUNT(*) FROM PUBLIC.DOWNLOADS; -CREATE HASH INDEX "PUBLIC"."IDX_DOWN_1" ON "PUBLIC"."DOWNLOADS"("EXPIRES" NULLS FIRST); -CREATE MEMORY TABLE "PUBLIC"."GLOBAL_RULES"( - "TYPE" CHARACTER VARYING(32) NOT NULL, - "CONFIGURATION" CHARACTER VARYING NOT NULL -); -ALTER TABLE "PUBLIC"."GLOBAL_RULES" ADD CONSTRAINT "PUBLIC"."CONSTRAINT_A" PRIMARY KEY("TYPE"); --- 0 +/- SELECT COUNT(*) FROM PUBLIC.GLOBAL_RULES; -CREATE MEMORY TABLE "PUBLIC"."CONTENT"( - "CONTENTID" BIGINT NOT NULL, - "CANONICALHASH" CHARACTER VARYING(64) NOT NULL, - "CONTENTHASH" CHARACTER VARYING(64) NOT NULL, - "CONTENTTYPE" CHARACTER VARYING(64) NOT NULL, - "CONTENT" BINARY VARYING NOT NULL, - "REFS" CHARACTER VARYING -); -ALTER TABLE "PUBLIC"."CONTENT" ADD CONSTRAINT "PUBLIC"."CONSTRAINT_638" PRIMARY KEY("CONTENTID"); --- 1 +/- SELECT COUNT(*) FROM PUBLIC.CONTENT; -INSERT INTO "PUBLIC"."CONTENT" VALUES -(1, 'd9c975dfeb6b5541c8d36f129fa8c8e2ea72d528c11f47431b893456fd652df0', 'c32174985da7b6fd91d1830d513cf4b746c0fe65535d4bd7c31ea7a60b7954c5', 'application/json', X'7b0a20202020227479706522203a20227265636f7264222c0a20202020226e616d6522203a202275736572496e666f222c0a20202020226e616d65737061636522203a20226d792e6578616d706c65222c0a20202020226669656c647322203a205b7b226e616d6522203a2022616765222c20227479706522203a2022696e74227d5d0a7d20', NULL); -CREATE HASH INDEX "PUBLIC"."IDX_CONTENT_1" ON "PUBLIC"."CONTENT"("CANONICALHASH" NULLS FIRST); -CREATE HASH INDEX "PUBLIC"."IDX_CONTENT_2" ON "PUBLIC"."CONTENT"("CONTENTHASH" NULLS FIRST); -CREATE MEMORY TABLE "PUBLIC"."CONTENT_REFERENCES"( - "CONTENTID" BIGINT NOT NULL, - "GROUPID" CHARACTER VARYING(512), - "ARTIFACTID" CHARACTER VARYING(512) NOT NULL, - "VERSION" CHARACTER VARYING(256), - "NAME" CHARACTER VARYING(512) NOT NULL -); -ALTER TABLE "PUBLIC"."CONTENT_REFERENCES" ADD CONSTRAINT "PUBLIC"."CONSTRAINT_5" PRIMARY KEY("CONTENTID", "NAME"); --- 0 +/- SELECT COUNT(*) FROM PUBLIC.CONTENT_REFERENCES; -CREATE MEMORY TABLE "PUBLIC"."GROUPS"( - "GROUPID" CHARACTER VARYING(512) NOT NULL, - "DESCRIPTION" CHARACTER VARYING(1024), - "ARTIFACTSTYPE" CHARACTER VARYING(32), - "OWNER" CHARACTER VARYING(256), - "CREATEDON" TIMESTAMP NOT NULL, - "MODIFIEDBY" CHARACTER VARYING(256), - "MODIFIEDON" TIMESTAMP, - "LABELS" CHARACTER VARYING -); -ALTER TABLE "PUBLIC"."GROUPS" ADD CONSTRAINT "PUBLIC"."CONSTRAINT_7D" PRIMARY KEY("GROUPID"); --- 1 +/- SELECT COUNT(*) FROM PUBLIC."GROUPS"; -INSERT INTO "PUBLIC"."GROUPS" VALUES -('__$GROUPID$__', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:50.454', '', TIMESTAMP '2024-05-21 13:43:50.454', NULL); -CREATE MEMORY TABLE "PUBLIC"."GROUP_LABELS"( - "GROUPID" CHARACTER VARYING(512) NOT NULL, - "LABELKEY" CHARACTER VARYING(256) NOT NULL, - "LABELVALUE" CHARACTER VARYING(512) -); --- 0 +/- SELECT COUNT(*) FROM PUBLIC.GROUP_LABELS; -CREATE INDEX "PUBLIC"."IDX_GLABELS_1" ON "PUBLIC"."GROUP_LABELS"("LABELKEY" NULLS FIRST); -CREATE INDEX "PUBLIC"."IDX_GLABELS_2" ON "PUBLIC"."GROUP_LABELS"("LABELVALUE" NULLS FIRST); -CREATE MEMORY TABLE "PUBLIC"."GROUP_RULES"( - "GROUPID" CHARACTER VARYING(512) NOT NULL, - "TYPE" CHARACTER VARYING(32) NOT NULL, - "CONFIGURATION" CHARACTER VARYING(1024) NOT NULL -); -ALTER TABLE "PUBLIC"."GROUP_RULES" ADD CONSTRAINT "PUBLIC"."CONSTRAINT_F8" PRIMARY KEY("GROUPID", "TYPE"); --- 0 +/- SELECT COUNT(*) FROM PUBLIC.GROUP_RULES; -CREATE MEMORY TABLE "PUBLIC"."ARTIFACTS"( - "GROUPID" CHARACTER VARYING(512) NOT NULL, - "ARTIFACTID" CHARACTER VARYING(512) NOT NULL, - "TYPE" CHARACTER VARYING(32) NOT NULL, - "OWNER" CHARACTER VARYING(256), - "CREATEDON" TIMESTAMP NOT NULL, - "MODIFIEDBY" CHARACTER VARYING(256), - "MODIFIEDON" TIMESTAMP, - "NAME" CHARACTER VARYING(512), - "DESCRIPTION" CHARACTER VARYING(1024), - "LABELS" CHARACTER VARYING -); -ALTER TABLE "PUBLIC"."ARTIFACTS" ADD CONSTRAINT "PUBLIC"."CONSTRAINT_C" PRIMARY KEY("GROUPID", "ARTIFACTID"); --- 1000 +/- SELECT COUNT(*) FROM PUBLIC.ARTIFACTS; -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', 'cb91ebe7-5a1b-462f-bc5d-3e05a5b4d0dc', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:50.454', '', TIMESTAMP '2024-05-21 13:43:50.454', NULL, NULL, NULL), -('__$GROUPID$__', '06c4c0c1-d00f-4664-b405-5bf8f7c3e9ea', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:56.645', '', TIMESTAMP '2024-05-21 13:43:56.645', NULL, NULL, NULL), -('__$GROUPID$__', '7fb9cda5-e93d-4b1c-8fd7-ba55ac70008d', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:56.675', '', TIMESTAMP '2024-05-21 13:43:56.675', NULL, NULL, NULL), -('__$GROUPID$__', 'cf77f4e5-9143-4e19-9d86-fc515eb12479', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:56.707', '', TIMESTAMP '2024-05-21 13:43:56.707', NULL, NULL, NULL), -('__$GROUPID$__', 'd57c8ddd-e38c-4465-bf43-0df1abf594aa', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:56.736', '', TIMESTAMP '2024-05-21 13:43:56.736', NULL, NULL, NULL), -('__$GROUPID$__', '96d02ee0-cf26-4e6d-949d-2edff4f251df', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:56.767', '', TIMESTAMP '2024-05-21 13:43:56.767', NULL, NULL, NULL), -('__$GROUPID$__', '0145500e-4636-48f4-ae94-b171ab8bbb4e', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:56.796', '', TIMESTAMP '2024-05-21 13:43:56.796', NULL, NULL, NULL), -('__$GROUPID$__', '65fb3521-9945-475b-87bc-32f11d13799b', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:56.823', '', TIMESTAMP '2024-05-21 13:43:56.823', NULL, NULL, NULL), -('__$GROUPID$__', '22d74f07-581f-4bc5-8a16-171fa9979403', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:56.859', '', TIMESTAMP '2024-05-21 13:43:56.859', NULL, NULL, NULL), -('__$GROUPID$__', '0cc7ef24-bb6d-4324-a03d-cf23a67fe464', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:56.886', '', TIMESTAMP '2024-05-21 13:43:56.886', NULL, NULL, NULL), -('__$GROUPID$__', '79c6ce7d-3b49-4e8a-bb2d-8c262dac2e55', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:56.914', '', TIMESTAMP '2024-05-21 13:43:56.914', NULL, NULL, NULL), -('__$GROUPID$__', '942913c8-c70e-4b29-9a5b-cd0b64a56872', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:56.947', '', TIMESTAMP '2024-05-21 13:43:56.947', NULL, NULL, NULL), -('__$GROUPID$__', '7e467e02-2f34-45db-9e54-768e2baf8964', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:56.974', '', TIMESTAMP '2024-05-21 13:43:56.974', NULL, NULL, NULL), -('__$GROUPID$__', '24f5c66e-6519-4ed0-bd16-5a1405e4db87', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.001', '', TIMESTAMP '2024-05-21 13:43:57.001', NULL, NULL, NULL), -('__$GROUPID$__', 'bf1362ab-1cd4-4cbb-b555-d600e6b91aa6', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.035', '', TIMESTAMP '2024-05-21 13:43:57.035', NULL, NULL, NULL), -('__$GROUPID$__', 'c7be03fd-e62a-4560-a23b-5457462124d6', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.067', '', TIMESTAMP '2024-05-21 13:43:57.067', NULL, NULL, NULL), -('__$GROUPID$__', 'e65be352-8ad1-4da1-9232-270d86605600', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.095', '', TIMESTAMP '2024-05-21 13:43:57.095', NULL, NULL, NULL), -('__$GROUPID$__', 'd24e1068-1a9a-4664-9f3f-f02c3a816190', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.121', '', TIMESTAMP '2024-05-21 13:43:57.121', NULL, NULL, NULL), -('__$GROUPID$__', '205db78b-e3a3-4ad5-ac0a-c053c5adf2fb', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.145', '', TIMESTAMP '2024-05-21 13:43:57.145', NULL, NULL, NULL), -('__$GROUPID$__', '260f6311-dabd-410c-a5c8-ed18d7966ef0', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.171', '', TIMESTAMP '2024-05-21 13:43:57.171', NULL, NULL, NULL), -('__$GROUPID$__', '39173b57-91dd-43ec-b206-6708f9b44dac', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.199', '', TIMESTAMP '2024-05-21 13:43:57.199', NULL, NULL, NULL), -('__$GROUPID$__', 'a5b27784-cca6-4e99-8a57-e7c93325d53b', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.226', '', TIMESTAMP '2024-05-21 13:43:57.226', NULL, NULL, NULL), -('__$GROUPID$__', '40428271-3b48-41ae-adab-896cfeeb9e32', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.253', '', TIMESTAMP '2024-05-21 13:43:57.253', NULL, NULL, NULL), -('__$GROUPID$__', '7c560561-7bbd-4fc6-85de-9ea373a4979d', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.281', '', TIMESTAMP '2024-05-21 13:43:57.281', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', 'f6742416-4b6c-4726-8a4f-7ee4f861d3ad', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.307', '', TIMESTAMP '2024-05-21 13:43:57.307', NULL, NULL, NULL), -('__$GROUPID$__', 'bde4b305-7eb8-4fc0-a5a9-a3051b8c8ba7', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.331', '', TIMESTAMP '2024-05-21 13:43:57.331', NULL, NULL, NULL), -('__$GROUPID$__', '88f7b085-7ba2-4341-aac3-3d2a9aa7ec9c', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.357', '', TIMESTAMP '2024-05-21 13:43:57.357', NULL, NULL, NULL), -('__$GROUPID$__', '4243f08c-608c-42ba-b28e-c0b8b988249c', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.38', '', TIMESTAMP '2024-05-21 13:43:57.38', NULL, NULL, NULL), -('__$GROUPID$__', '58c490f9-8a61-4ceb-9345-360500e15881', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.404', '', TIMESTAMP '2024-05-21 13:43:57.404', NULL, NULL, NULL), -('__$GROUPID$__', '9150c976-babe-492d-8edb-785497ffd23d', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.429', '', TIMESTAMP '2024-05-21 13:43:57.429', NULL, NULL, NULL), -('__$GROUPID$__', 'cec97fd5-9151-4bff-9133-45c746560e91', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.454', '', TIMESTAMP '2024-05-21 13:43:57.454', NULL, NULL, NULL), -('__$GROUPID$__', '9117820f-8856-4f31-b70e-51f977d8c5fc', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.479', '', TIMESTAMP '2024-05-21 13:43:57.479', NULL, NULL, NULL), -('__$GROUPID$__', 'e15b51dc-cc77-4797-8d02-c2c03e5a73a3', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.504', '', TIMESTAMP '2024-05-21 13:43:57.504', NULL, NULL, NULL), -('__$GROUPID$__', '8a5e64dc-a9a3-42f7-ad68-a6ae4d0e0c5b', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.528', '', TIMESTAMP '2024-05-21 13:43:57.528', NULL, NULL, NULL), -('__$GROUPID$__', 'c4b4703c-fbab-4421-8ac9-da3709b99174', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.552', '', TIMESTAMP '2024-05-21 13:43:57.552', NULL, NULL, NULL), -('__$GROUPID$__', 'c03f8abd-3a16-4478-97ce-3d6491b829f4', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.577', '', TIMESTAMP '2024-05-21 13:43:57.577', NULL, NULL, NULL), -('__$GROUPID$__', '803a029b-da61-4baa-8da3-8a327b6c6d56', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.601', '', TIMESTAMP '2024-05-21 13:43:57.601', NULL, NULL, NULL), -('__$GROUPID$__', 'ae131edb-debc-4415-95ad-94e781aa00cd', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.625', '', TIMESTAMP '2024-05-21 13:43:57.625', NULL, NULL, NULL), -('__$GROUPID$__', 'fc01cf2b-000f-454a-a428-e456de015c34', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.648', '', TIMESTAMP '2024-05-21 13:43:57.648', NULL, NULL, NULL), -('__$GROUPID$__', '2c160926-5265-4bf5-a1cc-0c87e6953b97', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.673', '', TIMESTAMP '2024-05-21 13:43:57.673', NULL, NULL, NULL), -('__$GROUPID$__', '02f72213-36d5-40e1-9ce6-03ac4df92087', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.697', '', TIMESTAMP '2024-05-21 13:43:57.697', NULL, NULL, NULL), -('__$GROUPID$__', 'e285c686-5a40-4ff4-9178-ab332512120a', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.72', '', TIMESTAMP '2024-05-21 13:43:57.72', NULL, NULL, NULL), -('__$GROUPID$__', 'd5598f2e-228d-440f-ae93-fc683a5ae7ef', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.744', '', TIMESTAMP '2024-05-21 13:43:57.744', NULL, NULL, NULL), -('__$GROUPID$__', 'ec81316a-6522-47bd-879b-52fbc2425a58', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.767', '', TIMESTAMP '2024-05-21 13:43:57.767', NULL, NULL, NULL), -('__$GROUPID$__', '8d1857de-b458-4476-9f20-a26ac8343b62', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.791', '', TIMESTAMP '2024-05-21 13:43:57.791', NULL, NULL, NULL), -('__$GROUPID$__', 'a28731d2-ae4a-4044-9299-e6a51fd37b8d', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.814', '', TIMESTAMP '2024-05-21 13:43:57.814', NULL, NULL, NULL), -('__$GROUPID$__', '0124d710-92c8-4058-9dd9-49b36690fa5f', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.837', '', TIMESTAMP '2024-05-21 13:43:57.837', NULL, NULL, NULL), -('__$GROUPID$__', '214ca507-695e-47a4-b32e-2f307f05050a', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.862', '', TIMESTAMP '2024-05-21 13:43:57.862', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '32be4fca-566c-4ca1-ad6a-3bb408f44abc', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.886', '', TIMESTAMP '2024-05-21 13:43:57.886', NULL, NULL, NULL), -('__$GROUPID$__', '55556b17-156d-46ba-b800-259e5a12c0a8', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.909', '', TIMESTAMP '2024-05-21 13:43:57.909', NULL, NULL, NULL), -('__$GROUPID$__', 'd1e5c01d-94a2-4c24-a9f1-187d30c4393e', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.932', '', TIMESTAMP '2024-05-21 13:43:57.932', NULL, NULL, NULL), -('__$GROUPID$__', '6b556835-d792-42ac-9471-6b33e7864bde', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.957', '', TIMESTAMP '2024-05-21 13:43:57.957', NULL, NULL, NULL), -('__$GROUPID$__', '56852352-e7f2-4b51-b909-ddf0e222c60e', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:57.98', '', TIMESTAMP '2024-05-21 13:43:57.98', NULL, NULL, NULL), -('__$GROUPID$__', 'a08e294c-867e-4dbe-87e6-f54da187cdac', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.003', '', TIMESTAMP '2024-05-21 13:43:58.003', NULL, NULL, NULL), -('__$GROUPID$__', 'cece0559-1bec-4d4c-ad4f-42bb2726ffd3', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.027', '', TIMESTAMP '2024-05-21 13:43:58.027', NULL, NULL, NULL), -('__$GROUPID$__', '00ab9a7f-ffbc-4964-9425-af4b96d26aff', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.051', '', TIMESTAMP '2024-05-21 13:43:58.051', NULL, NULL, NULL), -('__$GROUPID$__', '79bbfbec-e2ea-4a35-b3f1-ca4739fd3962', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.074', '', TIMESTAMP '2024-05-21 13:43:58.074', NULL, NULL, NULL), -('__$GROUPID$__', '199c6822-ea36-487c-986c-d5f413e19169', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.095', '', TIMESTAMP '2024-05-21 13:43:58.095', NULL, NULL, NULL), -('__$GROUPID$__', '839d0a48-a0d3-4de9-a843-6866041d7020', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.119', '', TIMESTAMP '2024-05-21 13:43:58.119', NULL, NULL, NULL), -('__$GROUPID$__', 'de24e91e-2f4f-4b0d-9eb8-c0d73b3dd7ce', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.142', '', TIMESTAMP '2024-05-21 13:43:58.142', NULL, NULL, NULL), -('__$GROUPID$__', '5639b90a-ea6f-4915-be3b-f37b7333e897', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.164', '', TIMESTAMP '2024-05-21 13:43:58.164', NULL, NULL, NULL), -('__$GROUPID$__', '449f37e8-3aa2-4341-b159-2d7ee7e29f92', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.187', '', TIMESTAMP '2024-05-21 13:43:58.187', NULL, NULL, NULL), -('__$GROUPID$__', 'e9543445-d707-4c42-a6a9-d70da13c8c4f', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.208', '', TIMESTAMP '2024-05-21 13:43:58.208', NULL, NULL, NULL), -('__$GROUPID$__', '537a3424-8448-43df-aee1-fdf94a405fd7', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.231', '', TIMESTAMP '2024-05-21 13:43:58.231', NULL, NULL, NULL), -('__$GROUPID$__', '6f303807-c47d-4c62-b81e-e97745a04413', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.256', '', TIMESTAMP '2024-05-21 13:43:58.256', NULL, NULL, NULL), -('__$GROUPID$__', 'e530388d-0135-4c7f-938b-7f44b9680768', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.278', '', TIMESTAMP '2024-05-21 13:43:58.278', NULL, NULL, NULL), -('__$GROUPID$__', '2c3b36ad-435c-41f1-a5f5-8432c60bca6d', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.301', '', TIMESTAMP '2024-05-21 13:43:58.301', NULL, NULL, NULL), -('__$GROUPID$__', 'e151bf47-022f-40de-9513-0ed57ce301c6', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.323', '', TIMESTAMP '2024-05-21 13:43:58.323', NULL, NULL, NULL), -('__$GROUPID$__', 'e90869f3-31fc-4404-92fb-d1e5b8af348c', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.346', '', TIMESTAMP '2024-05-21 13:43:58.346', NULL, NULL, NULL), -('__$GROUPID$__', '40be1886-3bfa-4a33-abad-201143d3b0bc', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.368', '', TIMESTAMP '2024-05-21 13:43:58.368', NULL, NULL, NULL), -('__$GROUPID$__', 'befce9a3-c954-4842-a474-1fce8f4b051d', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.39', '', TIMESTAMP '2024-05-21 13:43:58.39', NULL, NULL, NULL), -('__$GROUPID$__', '10170629-99a2-4f60-ba1d-88ce1d28b13d', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.412', '', TIMESTAMP '2024-05-21 13:43:58.412', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', 'e3ede857-18bb-46ba-81c0-50bdb0f26f57', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.434', '', TIMESTAMP '2024-05-21 13:43:58.434', NULL, NULL, NULL), -('__$GROUPID$__', '62cb03b5-2622-4d11-8113-241062bdc91b', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.457', '', TIMESTAMP '2024-05-21 13:43:58.457', NULL, NULL, NULL), -('__$GROUPID$__', 'ea526d21-9e7e-4855-b60f-7087e1b87a01', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.48', '', TIMESTAMP '2024-05-21 13:43:58.48', NULL, NULL, NULL), -('__$GROUPID$__', '8ffb371e-96b6-49d5-8e9f-ec7696f4157f', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.505', '', TIMESTAMP '2024-05-21 13:43:58.505', NULL, NULL, NULL), -('__$GROUPID$__', '62428daf-16a8-4a2a-bfd9-fbc17a93a141', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.529', '', TIMESTAMP '2024-05-21 13:43:58.529', NULL, NULL, NULL), -('__$GROUPID$__', 'fb7e54ed-34b1-489f-bbc5-60a31e4c1aa0', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.553', '', TIMESTAMP '2024-05-21 13:43:58.553', NULL, NULL, NULL), -('__$GROUPID$__', 'a5c6a8cc-6856-49d8-807c-c774f7d5d65d', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.575', '', TIMESTAMP '2024-05-21 13:43:58.575', NULL, NULL, NULL), -('__$GROUPID$__', '306d3824-a1ce-4596-8bc2-01443c7a43db', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.596', '', TIMESTAMP '2024-05-21 13:43:58.596', NULL, NULL, NULL), -('__$GROUPID$__', '4bf53e95-c27a-4009-8e71-87f2ed009d68', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.618', '', TIMESTAMP '2024-05-21 13:43:58.618', NULL, NULL, NULL), -('__$GROUPID$__', '23a2bb48-a268-4d36-a0bc-978c8c75aeb2', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.64', '', TIMESTAMP '2024-05-21 13:43:58.64', NULL, NULL, NULL), -('__$GROUPID$__', 'c9114a0d-07c1-4b39-9440-d03950d62c99', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.662', '', TIMESTAMP '2024-05-21 13:43:58.662', NULL, NULL, NULL), -('__$GROUPID$__', '91655f37-8c16-4f8c-8ece-e415820fdad1', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.685', '', TIMESTAMP '2024-05-21 13:43:58.685', NULL, NULL, NULL), -('__$GROUPID$__', 'd3a235b6-d619-4d97-9bf3-d0876bb3583e', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.707', '', TIMESTAMP '2024-05-21 13:43:58.707', NULL, NULL, NULL), -('__$GROUPID$__', '12b59891-7e14-4a1c-a655-3de16a22755b', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.73', '', TIMESTAMP '2024-05-21 13:43:58.73', NULL, NULL, NULL), -('__$GROUPID$__', 'a3dad4e9-38d7-4dac-b9c4-6da1b9926ced', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.752', '', TIMESTAMP '2024-05-21 13:43:58.752', NULL, NULL, NULL), -('__$GROUPID$__', '1aacb405-f68e-4fa4-a7ff-d373d41b9d80', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.774', '', TIMESTAMP '2024-05-21 13:43:58.774', NULL, NULL, NULL), -('__$GROUPID$__', '062ab44f-c239-4435-a0b5-ec8a132a2e1b', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.796', '', TIMESTAMP '2024-05-21 13:43:58.796', NULL, NULL, NULL), -('__$GROUPID$__', 'fabe72d3-1ff0-4bc4-968b-aedecdc2d1ce', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.818', '', TIMESTAMP '2024-05-21 13:43:58.818', NULL, NULL, NULL), -('__$GROUPID$__', '1e15ea38-2ab6-4281-b043-87bf8302449d', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.84', '', TIMESTAMP '2024-05-21 13:43:58.84', NULL, NULL, NULL), -('__$GROUPID$__', '33463eb9-26e3-4863-8783-259c90a4d63b', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.865', '', TIMESTAMP '2024-05-21 13:43:58.865', NULL, NULL, NULL), -('__$GROUPID$__', '1d37f479-48e0-46eb-ba88-483f4571510f', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.887', '', TIMESTAMP '2024-05-21 13:43:58.887', NULL, NULL, NULL), -('__$GROUPID$__', 'cdf08e3c-5dd0-4726-b674-a6567224b754', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.911', '', TIMESTAMP '2024-05-21 13:43:58.911', NULL, NULL, NULL), -('__$GROUPID$__', 'c18e19fe-709f-4d89-bfc9-122553f9dfca', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.934', '', TIMESTAMP '2024-05-21 13:43:58.934', NULL, NULL, NULL), -('__$GROUPID$__', '8532027d-4499-4c94-8638-088e88241f67', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.96', '', TIMESTAMP '2024-05-21 13:43:58.96', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '26addda1-eea3-4653-885f-7bc591420db5', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:58.983', '', TIMESTAMP '2024-05-21 13:43:58.983', NULL, NULL, NULL), -('__$GROUPID$__', '9abb3a60-fc6a-4b59-b90d-637ae175cc51', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.004', '', TIMESTAMP '2024-05-21 13:43:59.004', NULL, NULL, NULL), -('__$GROUPID$__', '3e6c74c9-4f38-4ea1-89c0-1075327d19a6', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.028', '', TIMESTAMP '2024-05-21 13:43:59.028', NULL, NULL, NULL), -('__$GROUPID$__', '9f23de25-402d-400c-847c-07df61e6d1fb', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.049', '', TIMESTAMP '2024-05-21 13:43:59.049', NULL, NULL, NULL), -('__$GROUPID$__', '9ddbd237-994a-4d41-9d6c-80e496c8d81a', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.071', '', TIMESTAMP '2024-05-21 13:43:59.071', NULL, NULL, NULL), -('__$GROUPID$__', 'ce2a35d0-ca15-4992-8db9-cb4e468bffc5', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.094', '', TIMESTAMP '2024-05-21 13:43:59.094', NULL, NULL, NULL), -('__$GROUPID$__', '94f1e799-1617-4e5b-a511-692be80d9523', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.118', '', TIMESTAMP '2024-05-21 13:43:59.118', NULL, NULL, NULL), -('__$GROUPID$__', '2cb80271-6478-4447-85da-dd0590201afe', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.139', '', TIMESTAMP '2024-05-21 13:43:59.139', NULL, NULL, NULL), -('__$GROUPID$__', '9808560c-e77c-425a-a268-f73566409aef', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.162', '', TIMESTAMP '2024-05-21 13:43:59.162', NULL, NULL, NULL), -('__$GROUPID$__', 'e7498139-69e5-41ab-8e00-ca7476dfe9f2', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.184', '', TIMESTAMP '2024-05-21 13:43:59.184', NULL, NULL, NULL), -('__$GROUPID$__', '8b2840d4-e0b0-4ec9-a063-f6b8a90e8ad9', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.206', '', TIMESTAMP '2024-05-21 13:43:59.206', NULL, NULL, NULL), -('__$GROUPID$__', '6d5d8ff6-2f0f-4786-a648-15ff251a1914', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.227', '', TIMESTAMP '2024-05-21 13:43:59.227', NULL, NULL, NULL), -('__$GROUPID$__', '527ce35e-1bbd-4108-919f-f14435255512', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.248', '', TIMESTAMP '2024-05-21 13:43:59.248', NULL, NULL, NULL), -('__$GROUPID$__', '24f0a809-8834-41d6-9df6-2220457ad47a', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.269', '', TIMESTAMP '2024-05-21 13:43:59.269', NULL, NULL, NULL), -('__$GROUPID$__', '45f8961d-a704-43b0-95c2-67b2e66b4ed7', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.291', '', TIMESTAMP '2024-05-21 13:43:59.291', NULL, NULL, NULL), -('__$GROUPID$__', 'a43d24ad-cfae-498d-8317-5276cc3ac738', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.313', '', TIMESTAMP '2024-05-21 13:43:59.313', NULL, NULL, NULL), -('__$GROUPID$__', '4916f24d-41fe-4b21-bdec-df2cdb8c731d', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.332', '', TIMESTAMP '2024-05-21 13:43:59.332', NULL, NULL, NULL), -('__$GROUPID$__', '03a6e71e-e03c-48cc-a247-9d23c4c0d9f6', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.353', '', TIMESTAMP '2024-05-21 13:43:59.353', NULL, NULL, NULL), -('__$GROUPID$__', '9256bb73-5dfd-4c0f-a465-b05837f4d742', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.375', '', TIMESTAMP '2024-05-21 13:43:59.375', NULL, NULL, NULL), -('__$GROUPID$__', 'ac466933-364a-43c1-ae7b-2ef8d861a31f', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.397', '', TIMESTAMP '2024-05-21 13:43:59.397', NULL, NULL, NULL), -('__$GROUPID$__', '474d1959-4a40-4c2e-b0a3-6c541462ae96', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.418', '', TIMESTAMP '2024-05-21 13:43:59.418', NULL, NULL, NULL), -('__$GROUPID$__', 'abdcd870-dd91-4ba9-8fff-fa34a815c8b9', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.439', '', TIMESTAMP '2024-05-21 13:43:59.439', NULL, NULL, NULL), -('__$GROUPID$__', 'dd457eab-0c2c-4f57-bac3-023d8f8fc502', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.46', '', TIMESTAMP '2024-05-21 13:43:59.46', NULL, NULL, NULL), -('__$GROUPID$__', 'ed5511e1-4a82-4d33-956d-6e5c1e3d0d63', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.48', '', TIMESTAMP '2024-05-21 13:43:59.48', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '64001f5f-8ad0-46a1-9ecd-003929388f76', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.501', '', TIMESTAMP '2024-05-21 13:43:59.501', NULL, NULL, NULL), -('__$GROUPID$__', 'bb956a13-c28d-40a1-8f77-beebf7a0e8ff', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.522', '', TIMESTAMP '2024-05-21 13:43:59.522', NULL, NULL, NULL), -('__$GROUPID$__', 'c0bb2d05-99d8-4f6c-a7a8-cca60483aa4f', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.543', '', TIMESTAMP '2024-05-21 13:43:59.543', NULL, NULL, NULL), -('__$GROUPID$__', '6fa48c41-bf5f-4f1f-b618-38d780c32b0d', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.567', '', TIMESTAMP '2024-05-21 13:43:59.567', NULL, NULL, NULL), -('__$GROUPID$__', 'ebaa3136-8d5d-4331-a276-f192328a4a04', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.589', '', TIMESTAMP '2024-05-21 13:43:59.589', NULL, NULL, NULL), -('__$GROUPID$__', '8d58e655-0a62-4b98-8fe9-787f7c323afd', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.612', '', TIMESTAMP '2024-05-21 13:43:59.612', NULL, NULL, NULL), -('__$GROUPID$__', 'de272f93-b580-4de5-88d7-cb85c6669147', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.635', '', TIMESTAMP '2024-05-21 13:43:59.635', NULL, NULL, NULL), -('__$GROUPID$__', '5faf6fae-fed3-46dd-80c8-c884895367a3', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.658', '', TIMESTAMP '2024-05-21 13:43:59.658', NULL, NULL, NULL), -('__$GROUPID$__', '41db40e7-200a-4ee2-9d42-a79a5d818503', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.682', '', TIMESTAMP '2024-05-21 13:43:59.682', NULL, NULL, NULL), -('__$GROUPID$__', '036b4484-66f8-480f-8e0c-f4b4890ba5e2', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.702', '', TIMESTAMP '2024-05-21 13:43:59.702', NULL, NULL, NULL), -('__$GROUPID$__', '6e6407dc-eb9b-47b9-a739-b53257028740', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.723', '', TIMESTAMP '2024-05-21 13:43:59.723', NULL, NULL, NULL), -('__$GROUPID$__', 'bcc8dff9-f568-46cb-836f-e29d6fe9a302', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.742', '', TIMESTAMP '2024-05-21 13:43:59.742', NULL, NULL, NULL), -('__$GROUPID$__', '05a15e87-b5c0-430e-af1f-273a38bddfc0', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.764', '', TIMESTAMP '2024-05-21 13:43:59.764', NULL, NULL, NULL), -('__$GROUPID$__', 'b57e48bc-477b-44bc-8f67-8f1243e993ca', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.786', '', TIMESTAMP '2024-05-21 13:43:59.786', NULL, NULL, NULL), -('__$GROUPID$__', '01291422-dc34-4940-be49-03c0a4223a4f', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.808', '', TIMESTAMP '2024-05-21 13:43:59.808', NULL, NULL, NULL), -('__$GROUPID$__', 'c635dd5e-de14-4ace-89e6-a1b2414c343a', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.83', '', TIMESTAMP '2024-05-21 13:43:59.83', NULL, NULL, NULL), -('__$GROUPID$__', 'a412cbdf-bb7e-4037-92cc-696be8f509d0', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.852', '', TIMESTAMP '2024-05-21 13:43:59.852', NULL, NULL, NULL), -('__$GROUPID$__', 'bcf98aa8-6b65-4c91-9c0d-7965cc0cb88b', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.872', '', TIMESTAMP '2024-05-21 13:43:59.872', NULL, NULL, NULL), -('__$GROUPID$__', '4491d5c5-45a8-4254-9690-c9309f417253', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.893', '', TIMESTAMP '2024-05-21 13:43:59.893', NULL, NULL, NULL), -('__$GROUPID$__', '1a573ed3-8f92-4d35-bffd-be86d4833b68', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.914', '', TIMESTAMP '2024-05-21 13:43:59.914', NULL, NULL, NULL), -('__$GROUPID$__', 'a3a02771-4316-4857-8bc4-9624ed2d75d5', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.935', '', TIMESTAMP '2024-05-21 13:43:59.935', NULL, NULL, NULL), -('__$GROUPID$__', '132e31d6-0a04-44d3-92d4-a079d88a6f64', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.956', '', TIMESTAMP '2024-05-21 13:43:59.956', NULL, NULL, NULL), -('__$GROUPID$__', '559a6bd1-1eda-44a6-b8cf-525176ef0bc6', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.977', '', TIMESTAMP '2024-05-21 13:43:59.977', NULL, NULL, NULL), -('__$GROUPID$__', '69a848d7-0f88-4ef1-9bf0-990e5d325892', 'AVRO', '', TIMESTAMP '2024-05-21 13:43:59.999', '', TIMESTAMP '2024-05-21 13:43:59.999', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '62fbb413-43c2-4571-b97a-06e0cc7f5b93', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.02', '', TIMESTAMP '2024-05-21 13:44:00.02', NULL, NULL, NULL), -('__$GROUPID$__', 'bcda25dd-73d1-4953-94da-a9042bab7144', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.041', '', TIMESTAMP '2024-05-21 13:44:00.041', NULL, NULL, NULL), -('__$GROUPID$__', '2d215e19-449b-467c-96df-6561684f1e94', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.062', '', TIMESTAMP '2024-05-21 13:44:00.062', NULL, NULL, NULL), -('__$GROUPID$__', 'a5eef6c7-49c2-46df-8b55-c56c116813ef', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.083', '', TIMESTAMP '2024-05-21 13:44:00.083', NULL, NULL, NULL), -('__$GROUPID$__', 'c28bf1e6-382b-4d10-bf99-94d1f965843a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.104', '', TIMESTAMP '2024-05-21 13:44:00.104', NULL, NULL, NULL), -('__$GROUPID$__', '8fd8e932-dc34-4aa2-bcb8-84c2f6b060af', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.125', '', TIMESTAMP '2024-05-21 13:44:00.125', NULL, NULL, NULL), -('__$GROUPID$__', '7a27aad9-be70-4f9e-b246-9d62cde4156f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.146', '', TIMESTAMP '2024-05-21 13:44:00.146', NULL, NULL, NULL), -('__$GROUPID$__', '5936e921-a6ff-46fc-acdf-a2c64d6e99ee', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.168', '', TIMESTAMP '2024-05-21 13:44:00.168', NULL, NULL, NULL), -('__$GROUPID$__', 'cf7dd8b7-9644-47e5-96d8-9345f2333b74', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.19', '', TIMESTAMP '2024-05-21 13:44:00.19', NULL, NULL, NULL), -('__$GROUPID$__', '96d2f5fb-2e2e-4255-9ac8-8f95f88214be', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.211', '', TIMESTAMP '2024-05-21 13:44:00.211', NULL, NULL, NULL), -('__$GROUPID$__', 'bbc4d5ad-5ae1-4da9-8133-d40e750b0a90', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.232', '', TIMESTAMP '2024-05-21 13:44:00.232', NULL, NULL, NULL), -('__$GROUPID$__', '4b37b37e-e9c3-46a8-b91e-a843e72e9250', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.252', '', TIMESTAMP '2024-05-21 13:44:00.252', NULL, NULL, NULL), -('__$GROUPID$__', '63d01b13-4fe8-4451-9ff6-365b5e6bafbe', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.272', '', TIMESTAMP '2024-05-21 13:44:00.272', NULL, NULL, NULL), -('__$GROUPID$__', 'd3da90e7-f26e-4422-ba4d-fa9074fd2c56', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.293', '', TIMESTAMP '2024-05-21 13:44:00.293', NULL, NULL, NULL), -('__$GROUPID$__', '9cca52b9-b487-46d6-91d1-1890e1d21291', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.313', '', TIMESTAMP '2024-05-21 13:44:00.313', NULL, NULL, NULL), -('__$GROUPID$__', 'dfdb1adb-2470-4796-a706-4dc487e470d2', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.334', '', TIMESTAMP '2024-05-21 13:44:00.334', NULL, NULL, NULL), -('__$GROUPID$__', '7cd43c4f-dff6-4a91-87b4-658cb0814ba0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.354', '', TIMESTAMP '2024-05-21 13:44:00.354', NULL, NULL, NULL), -('__$GROUPID$__', '80d3c253-0d57-4bcb-afbc-884a9c2e4d58', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.375', '', TIMESTAMP '2024-05-21 13:44:00.375', NULL, NULL, NULL), -('__$GROUPID$__', '338d2cf6-f196-427e-82ac-2dd30026ffb2', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.397', '', TIMESTAMP '2024-05-21 13:44:00.397', NULL, NULL, NULL), -('__$GROUPID$__', '7a4bf758-ae85-49ba-8cba-56d46f456c91', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.418', '', TIMESTAMP '2024-05-21 13:44:00.418', NULL, NULL, NULL), -('__$GROUPID$__', '5113603d-0c64-4b83-ad12-c572e0bda3c5', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.449', '', TIMESTAMP '2024-05-21 13:44:00.449', NULL, NULL, NULL), -('__$GROUPID$__', '07697a9c-75f5-49f5-9a45-ab4ead7dafda', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.469', '', TIMESTAMP '2024-05-21 13:44:00.469', NULL, NULL, NULL), -('__$GROUPID$__', '7ec0d39a-04d4-4c45-8824-3fdb3d195126', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.489', '', TIMESTAMP '2024-05-21 13:44:00.489', NULL, NULL, NULL), -('__$GROUPID$__', '731607e1-7b29-48d1-bba9-538f3d810175', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.51', '', TIMESTAMP '2024-05-21 13:44:00.51', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '8468011e-4f57-415a-9c7a-1450dfee5500', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.53', '', TIMESTAMP '2024-05-21 13:44:00.53', NULL, NULL, NULL), -('__$GROUPID$__', 'dbcab97c-067d-4940-bc3f-4797325f7aa6', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.556', '', TIMESTAMP '2024-05-21 13:44:00.556', NULL, NULL, NULL), -('__$GROUPID$__', '519bed55-0f1f-4ee8-929f-996ada2b12a3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.577', '', TIMESTAMP '2024-05-21 13:44:00.577', NULL, NULL, NULL), -('__$GROUPID$__', '1ec8eef2-a8eb-4287-afcc-78a760e121c1', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.598', '', TIMESTAMP '2024-05-21 13:44:00.598', NULL, NULL, NULL), -('__$GROUPID$__', 'b91a0ed1-ec13-474c-b659-7a1824beebe6', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.619', '', TIMESTAMP '2024-05-21 13:44:00.619', NULL, NULL, NULL), -('__$GROUPID$__', '6c03bc86-4c2b-41fc-8ff0-717b1648da75', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.639', '', TIMESTAMP '2024-05-21 13:44:00.639', NULL, NULL, NULL), -('__$GROUPID$__', 'a45f46f0-c46b-4fbd-b4ad-85f0a88354b1', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.66', '', TIMESTAMP '2024-05-21 13:44:00.66', NULL, NULL, NULL), -('__$GROUPID$__', '3f5ed759-7579-4e34-83a0-9dd647197c32', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.68', '', TIMESTAMP '2024-05-21 13:44:00.68', NULL, NULL, NULL), -('__$GROUPID$__', 'c483ffa1-e483-4d16-b8b0-0f14c7da1310', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.699', '', TIMESTAMP '2024-05-21 13:44:00.699', NULL, NULL, NULL), -('__$GROUPID$__', '548a610b-a52d-4bc6-8e11-650c2c4c7f51', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.718', '', TIMESTAMP '2024-05-21 13:44:00.718', NULL, NULL, NULL), -('__$GROUPID$__', 'b689039e-759f-48d7-8c3a-9d7f9e6b6932', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.74', '', TIMESTAMP '2024-05-21 13:44:00.74', NULL, NULL, NULL), -('__$GROUPID$__', '05dacf6f-b6ac-4bb8-8407-0d061e74861e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.761', '', TIMESTAMP '2024-05-21 13:44:00.761', NULL, NULL, NULL), -('__$GROUPID$__', '294fab42-55cb-4eed-b4d2-0986a456b892', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.781', '', TIMESTAMP '2024-05-21 13:44:00.781', NULL, NULL, NULL), -('__$GROUPID$__', '5f545b92-11d9-45cc-b6bc-2abc401848c2', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.801', '', TIMESTAMP '2024-05-21 13:44:00.801', NULL, NULL, NULL), -('__$GROUPID$__', '359ea1f6-142b-4966-bdd1-190a52e50d79', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.822', '', TIMESTAMP '2024-05-21 13:44:00.822', NULL, NULL, NULL), -('__$GROUPID$__', 'f891396e-0202-4554-aac4-78354c5f240c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.842', '', TIMESTAMP '2024-05-21 13:44:00.842', NULL, NULL, NULL), -('__$GROUPID$__', '5d427abb-faf9-4228-868a-4b0b0e7d905a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.862', '', TIMESTAMP '2024-05-21 13:44:00.862', NULL, NULL, NULL), -('__$GROUPID$__', '73cea19c-f850-4e67-b78b-aa6c66d2e88d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.882', '', TIMESTAMP '2024-05-21 13:44:00.882', NULL, NULL, NULL), -('__$GROUPID$__', '65b5a5af-f9ff-4e6b-a5e6-10577ed91564', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.902', '', TIMESTAMP '2024-05-21 13:44:00.902', NULL, NULL, NULL), -('__$GROUPID$__', 'aa5898ac-c8a5-4f28-93ca-86a73c535fbb', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.921', '', TIMESTAMP '2024-05-21 13:44:00.921', NULL, NULL, NULL), -('__$GROUPID$__', '489bcfb9-0b47-4368-bb52-662032499579', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.942', '', TIMESTAMP '2024-05-21 13:44:00.942', NULL, NULL, NULL), -('__$GROUPID$__', '4bbb5e9e-3fdc-4b4d-b5eb-eb06101242ef', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.962', '', TIMESTAMP '2024-05-21 13:44:00.962', NULL, NULL, NULL), -('__$GROUPID$__', '610de345-8003-44f4-bebb-6f89e97c145a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:00.983', '', TIMESTAMP '2024-05-21 13:44:00.983', NULL, NULL, NULL), -('__$GROUPID$__', '25aefffe-d30e-4868-a034-da651fa14858', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.004', '', TIMESTAMP '2024-05-21 13:44:01.004', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '9c374f2a-b2aa-4712-948a-117a6a78f854', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.026', '', TIMESTAMP '2024-05-21 13:44:01.026', NULL, NULL, NULL), -('__$GROUPID$__', '332d971e-087a-49c9-8197-568016ed6908', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.046', '', TIMESTAMP '2024-05-21 13:44:01.046', NULL, NULL, NULL), -('__$GROUPID$__', '889439eb-fd7a-4f7f-99d2-357f1fd34f05', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.066', '', TIMESTAMP '2024-05-21 13:44:01.066', NULL, NULL, NULL), -('__$GROUPID$__', '9a1d9653-fad0-4088-b716-a3fe39323417', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.085', '', TIMESTAMP '2024-05-21 13:44:01.085', NULL, NULL, NULL), -('__$GROUPID$__', 'e167ccb2-a52c-43f8-bd37-77c2967e04cf', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.105', '', TIMESTAMP '2024-05-21 13:44:01.105', NULL, NULL, NULL), -('__$GROUPID$__', 'e46d07e2-6063-42c3-b51f-9a9f83c3a496', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.126', '', TIMESTAMP '2024-05-21 13:44:01.126', NULL, NULL, NULL), -('__$GROUPID$__', '1a7feaa2-c721-44f2-919c-67697f8578cc', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.147', '', TIMESTAMP '2024-05-21 13:44:01.147', NULL, NULL, NULL), -('__$GROUPID$__', 'e9a1740b-0706-4218-ad1e-a9c687eb5ce9', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.167', '', TIMESTAMP '2024-05-21 13:44:01.167', NULL, NULL, NULL), -('__$GROUPID$__', 'ddacde96-08e3-4a0b-9018-db3e714fb83c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.191', '', TIMESTAMP '2024-05-21 13:44:01.191', NULL, NULL, NULL), -('__$GROUPID$__', '5f9f437e-522d-4f1c-8896-60c40b44974f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.211', '', TIMESTAMP '2024-05-21 13:44:01.211', NULL, NULL, NULL), -('__$GROUPID$__', '9227f499-24b6-4988-a6f0-f628069da7ba', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.233', '', TIMESTAMP '2024-05-21 13:44:01.233', NULL, NULL, NULL), -('__$GROUPID$__', 'fe698f21-9637-4da7-bd4c-a025168c6f3b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.254', '', TIMESTAMP '2024-05-21 13:44:01.254', NULL, NULL, NULL), -('__$GROUPID$__', 'd2c1ea98-9318-4407-b521-4ef5e64c481d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.274', '', TIMESTAMP '2024-05-21 13:44:01.274', NULL, NULL, NULL), -('__$GROUPID$__', '2801e628-546e-4c7a-bef5-0b70697ebb40', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.294', '', TIMESTAMP '2024-05-21 13:44:01.294', NULL, NULL, NULL), -('__$GROUPID$__', 'd44229d4-0d37-4d1c-8368-0d0af1e64dbf', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.314', '', TIMESTAMP '2024-05-21 13:44:01.314', NULL, NULL, NULL), -('__$GROUPID$__', '3c1702d7-07d5-41c8-b358-273679542392', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.333', '', TIMESTAMP '2024-05-21 13:44:01.333', NULL, NULL, NULL), -('__$GROUPID$__', '9d05ffe0-2996-4cf1-b098-0a66e092bc7c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.353', '', TIMESTAMP '2024-05-21 13:44:01.353', NULL, NULL, NULL), -('__$GROUPID$__', 'd25b7c86-3b21-4b53-a39e-7a71bd26eb1b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.372', '', TIMESTAMP '2024-05-21 13:44:01.372', NULL, NULL, NULL), -('__$GROUPID$__', 'f1a5afaf-69ba-44a4-97fd-2c8dd38353d7', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.393', '', TIMESTAMP '2024-05-21 13:44:01.393', NULL, NULL, NULL), -('__$GROUPID$__', '7ff418db-004b-4f2f-85dc-c3f0bd7925ea', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.413', '', TIMESTAMP '2024-05-21 13:44:01.413', NULL, NULL, NULL), -('__$GROUPID$__', '525c2752-c30f-4629-b641-8a7eb0353f16', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.433', '', TIMESTAMP '2024-05-21 13:44:01.433', NULL, NULL, NULL), -('__$GROUPID$__', '764fb2f8-34d9-41ed-b378-4b14676d37fc', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.454', '', TIMESTAMP '2024-05-21 13:44:01.454', NULL, NULL, NULL), -('__$GROUPID$__', '0f5cd5ee-0630-479b-b784-b55380ca1ac5', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.476', '', TIMESTAMP '2024-05-21 13:44:01.476', NULL, NULL, NULL), -('__$GROUPID$__', 'aaca65e2-3d60-424e-9575-6184c1f55d8b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.496', '', TIMESTAMP '2024-05-21 13:44:01.496', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', 'f366f8bb-10cc-4767-84d4-52dd0f988475', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.516', '', TIMESTAMP '2024-05-21 13:44:01.516', NULL, NULL, NULL), -('__$GROUPID$__', '0bac1b2b-5304-486f-8b3d-271ef09816bc', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.535', '', TIMESTAMP '2024-05-21 13:44:01.535', NULL, NULL, NULL), -('__$GROUPID$__', '93b2ea63-94f2-4b7a-be5f-44dfbf767d7f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.557', '', TIMESTAMP '2024-05-21 13:44:01.557', NULL, NULL, NULL), -('__$GROUPID$__', '71ccb6a7-2a53-4875-9453-ffa0a688f642', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.578', '', TIMESTAMP '2024-05-21 13:44:01.578', NULL, NULL, NULL), -('__$GROUPID$__', '663605fd-47ff-49cf-88ec-200047a2f7c4', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.597', '', TIMESTAMP '2024-05-21 13:44:01.597', NULL, NULL, NULL), -('__$GROUPID$__', '5742e9ce-5859-42a7-9035-a40a5a9a1798', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.617', '', TIMESTAMP '2024-05-21 13:44:01.617', NULL, NULL, NULL), -('__$GROUPID$__', 'e3d912d1-4845-4b6b-b2ef-550b1afaa66b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.638', '', TIMESTAMP '2024-05-21 13:44:01.638', NULL, NULL, NULL), -('__$GROUPID$__', 'ab713c30-ae24-4112-bf39-56657c340d52', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.657', '', TIMESTAMP '2024-05-21 13:44:01.657', NULL, NULL, NULL), -('__$GROUPID$__', '8e0dd5e1-5a5a-4cda-aeb6-07e503955122', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.677', '', TIMESTAMP '2024-05-21 13:44:01.677', NULL, NULL, NULL), -('__$GROUPID$__', '4dc4c0cd-e06b-4557-a2e3-405a497137da', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.696', '', TIMESTAMP '2024-05-21 13:44:01.696', NULL, NULL, NULL), -('__$GROUPID$__', '97e47396-6b09-411f-a878-731cba939e55', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.716', '', TIMESTAMP '2024-05-21 13:44:01.716', NULL, NULL, NULL), -('__$GROUPID$__', '6be706d5-c056-4180-ad4a-7b9210055c58', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.735', '', TIMESTAMP '2024-05-21 13:44:01.735', NULL, NULL, NULL), -('__$GROUPID$__', 'ee1467a2-efc8-46ec-b4ce-6f3537986ce2', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.754', '', TIMESTAMP '2024-05-21 13:44:01.754', NULL, NULL, NULL), -('__$GROUPID$__', 'cf2f4780-1120-43f2-8747-90672c86b130', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.773', '', TIMESTAMP '2024-05-21 13:44:01.773', NULL, NULL, NULL), -('__$GROUPID$__', '6b517a95-c151-48ec-8ceb-e5fad8b622f4', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.793', '', TIMESTAMP '2024-05-21 13:44:01.793', NULL, NULL, NULL), -('__$GROUPID$__', '502ffefb-e9e7-482c-9fb6-ec8ca8db3b4b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.813', '', TIMESTAMP '2024-05-21 13:44:01.813', NULL, NULL, NULL), -('__$GROUPID$__', '3b3f3798-170d-4154-bdea-1b427960d43e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.831', '', TIMESTAMP '2024-05-21 13:44:01.831', NULL, NULL, NULL), -('__$GROUPID$__', 'caa5effb-0e1c-4807-a2b8-ac852257ab43', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.851', '', TIMESTAMP '2024-05-21 13:44:01.851', NULL, NULL, NULL), -('__$GROUPID$__', '79397f4c-6bc1-479f-ab63-0d0e6143f196', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.871', '', TIMESTAMP '2024-05-21 13:44:01.871', NULL, NULL, NULL), -('__$GROUPID$__', '3c635d3e-5cad-44b1-a1d2-fca3bc2cb94a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.892', '', TIMESTAMP '2024-05-21 13:44:01.892', NULL, NULL, NULL), -('__$GROUPID$__', '0bdba378-0323-4f4b-ad67-4ef1c6106a5b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.912', '', TIMESTAMP '2024-05-21 13:44:01.912', NULL, NULL, NULL), -('__$GROUPID$__', 'b45da4c3-dac5-4820-a7cc-70b547ba61b0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.931', '', TIMESTAMP '2024-05-21 13:44:01.931', NULL, NULL, NULL), -('__$GROUPID$__', 'af2a7b1f-ca14-4bec-acb8-882bc2373878', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.951', '', TIMESTAMP '2024-05-21 13:44:01.951', NULL, NULL, NULL), -('__$GROUPID$__', '27d3785a-0d94-4e6b-b8d9-8e0d69c0a399', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.97', '', TIMESTAMP '2024-05-21 13:44:01.97', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '8125cd2f-8404-478b-8c8c-61c4499c938c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:01.99', '', TIMESTAMP '2024-05-21 13:44:01.99', NULL, NULL, NULL), -('__$GROUPID$__', 'c93e47ca-2eb4-4277-8929-684d74f8d38b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.008', '', TIMESTAMP '2024-05-21 13:44:02.008', NULL, NULL, NULL), -('__$GROUPID$__', 'e206be9f-bfcc-42bf-990e-070f4c6fd7a4', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.028', '', TIMESTAMP '2024-05-21 13:44:02.028', NULL, NULL, NULL), -('__$GROUPID$__', '570b175b-1392-422e-87a0-01d8f6c3864b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.048', '', TIMESTAMP '2024-05-21 13:44:02.048', NULL, NULL, NULL), -('__$GROUPID$__', 'b63fd0b5-9a25-4274-a6d8-626f727e2b20', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.068', '', TIMESTAMP '2024-05-21 13:44:02.068', NULL, NULL, NULL), -('__$GROUPID$__', 'd7133c33-0433-497b-83f2-e9d3d49f526e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.088', '', TIMESTAMP '2024-05-21 13:44:02.088', NULL, NULL, NULL), -('__$GROUPID$__', 'd88318e3-a3b4-4fe0-96a3-2b9e41210e42', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.107', '', TIMESTAMP '2024-05-21 13:44:02.107', NULL, NULL, NULL), -('__$GROUPID$__', '82bdde6b-895d-4447-b467-8ce18fa85605', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.127', '', TIMESTAMP '2024-05-21 13:44:02.127', NULL, NULL, NULL), -('__$GROUPID$__', '8104cabe-3b62-47cf-94b2-b48c4abdcfc8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.147', '', TIMESTAMP '2024-05-21 13:44:02.147', NULL, NULL, NULL), -('__$GROUPID$__', 'c1fb9836-319d-4664-84fc-7b965507258a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.166', '', TIMESTAMP '2024-05-21 13:44:02.166', NULL, NULL, NULL), -('__$GROUPID$__', '4d365d8a-ed84-44b5-b9b4-ee87e96907d3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.185', '', TIMESTAMP '2024-05-21 13:44:02.185', NULL, NULL, NULL), -('__$GROUPID$__', '5b7b960a-d42d-4129-b4e5-10c2c05e8f6b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.205', '', TIMESTAMP '2024-05-21 13:44:02.205', NULL, NULL, NULL), -('__$GROUPID$__', '78c4992d-b5e9-45e6-b1c6-b54281cacd77', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.226', '', TIMESTAMP '2024-05-21 13:44:02.226', NULL, NULL, NULL), -('__$GROUPID$__', '3050c4e1-9ad7-433e-a4a0-aeb93f2fb53f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.246', '', TIMESTAMP '2024-05-21 13:44:02.246', NULL, NULL, NULL), -('__$GROUPID$__', 'c695c1eb-f1a1-4823-83cb-d9967cf1ac57', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.267', '', TIMESTAMP '2024-05-21 13:44:02.267', NULL, NULL, NULL), -('__$GROUPID$__', 'e623ce56-7586-4666-a704-0295fb14708d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.288', '', TIMESTAMP '2024-05-21 13:44:02.288', NULL, NULL, NULL), -('__$GROUPID$__', 'aa01d77c-b64d-4fe3-9b1c-49a574401994', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.312', '', TIMESTAMP '2024-05-21 13:44:02.312', NULL, NULL, NULL), -('__$GROUPID$__', '3ef6f00f-179c-4810-a2a4-dd4531d8969b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.332', '', TIMESTAMP '2024-05-21 13:44:02.332', NULL, NULL, NULL), -('__$GROUPID$__', '6f8d2c8f-45e1-40b2-af0b-9347a9405016', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.352', '', TIMESTAMP '2024-05-21 13:44:02.352', NULL, NULL, NULL), -('__$GROUPID$__', 'b695b9c3-da4d-4473-8502-e78f43567927', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.371', '', TIMESTAMP '2024-05-21 13:44:02.371', NULL, NULL, NULL), -('__$GROUPID$__', '552d6a2a-38e7-4fb4-a194-339d4a239c8a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.39', '', TIMESTAMP '2024-05-21 13:44:02.39', NULL, NULL, NULL), -('__$GROUPID$__', '90ff9e31-420e-48ce-9ff5-9c4cfe7d08d3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.409', '', TIMESTAMP '2024-05-21 13:44:02.409', NULL, NULL, NULL), -('__$GROUPID$__', '5ce3571c-f835-46a5-9b7b-ebd40025522b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.428', '', TIMESTAMP '2024-05-21 13:44:02.428', NULL, NULL, NULL), -('__$GROUPID$__', 'a2e00e2d-62d2-4e30-855c-0c1c3cb77ed9', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.457', '', TIMESTAMP '2024-05-21 13:44:02.457', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', 'f757f498-bd0e-4872-b373-b1732816226b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.48', '', TIMESTAMP '2024-05-21 13:44:02.48', NULL, NULL, NULL), -('__$GROUPID$__', '695caefa-4bc6-4080-bd1c-a9529705a451', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.503', '', TIMESTAMP '2024-05-21 13:44:02.503', NULL, NULL, NULL), -('__$GROUPID$__', '1d91fefa-ea70-4d28-ab4a-935d193a7fa7', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.524', '', TIMESTAMP '2024-05-21 13:44:02.524', NULL, NULL, NULL), -('__$GROUPID$__', 'e70d7cd2-573a-4e57-9c74-a02e0a319310', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.546', '', TIMESTAMP '2024-05-21 13:44:02.546', NULL, NULL, NULL), -('__$GROUPID$__', 'd5b524df-000b-4160-98ba-90d062358b43', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.72', '', TIMESTAMP '2024-05-21 13:44:02.72', NULL, NULL, NULL), -('__$GROUPID$__', 'ab439d09-9b62-4f38-8133-a57c066c966f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.758', '', TIMESTAMP '2024-05-21 13:44:02.758', NULL, NULL, NULL), -('__$GROUPID$__', '148ca397-91b2-45b3-ac11-37ac4bb2460f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.779', '', TIMESTAMP '2024-05-21 13:44:02.779', NULL, NULL, NULL), -('__$GROUPID$__', '1f7e3b14-cf66-4d62-b6b4-48901aacb02d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.802', '', TIMESTAMP '2024-05-21 13:44:02.802', NULL, NULL, NULL), -('__$GROUPID$__', '61f28d70-b2bb-42e2-b789-213c09612570', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.827', '', TIMESTAMP '2024-05-21 13:44:02.827', NULL, NULL, NULL), -('__$GROUPID$__', '27ebcd5e-9767-4543-a992-f16cac35d0d7', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.848', '', TIMESTAMP '2024-05-21 13:44:02.848', NULL, NULL, NULL), -('__$GROUPID$__', 'cf33c6e4-3d5c-456d-9850-4258320a63ea', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.873', '', TIMESTAMP '2024-05-21 13:44:02.873', NULL, NULL, NULL), -('__$GROUPID$__', '2d9714be-f767-49c1-8319-f08ad2e99b1d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.893', '', TIMESTAMP '2024-05-21 13:44:02.893', NULL, NULL, NULL), -('__$GROUPID$__', '96a413db-6bb4-4270-b4ce-68c0858c8c56', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.912', '', TIMESTAMP '2024-05-21 13:44:02.912', NULL, NULL, NULL), -('__$GROUPID$__', '03387c4e-44c2-4524-a7c7-02288baa37ba', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.933', '', TIMESTAMP '2024-05-21 13:44:02.933', NULL, NULL, NULL), -('__$GROUPID$__', 'aae0f42d-643a-4033-8a4c-7f67705f41fc', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.954', '', TIMESTAMP '2024-05-21 13:44:02.954', NULL, NULL, NULL), -('__$GROUPID$__', 'f6c425d2-a547-41ae-900a-ec1b35b5cd20', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.974', '', TIMESTAMP '2024-05-21 13:44:02.974', NULL, NULL, NULL), -('__$GROUPID$__', 'fe5d971a-1fc5-4513-936d-48f490cd72b4', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:02.994', '', TIMESTAMP '2024-05-21 13:44:02.994', NULL, NULL, NULL), -('__$GROUPID$__', 'c6de1654-e123-42c9-9bcc-32124102ecde', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.015', '', TIMESTAMP '2024-05-21 13:44:03.015', NULL, NULL, NULL), -('__$GROUPID$__', 'acfe32f4-a0ef-4fee-b15c-9e0898aaae3c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.036', '', TIMESTAMP '2024-05-21 13:44:03.036', NULL, NULL, NULL), -('__$GROUPID$__', 'c73a1821-f6c3-4276-bc41-97173635e39c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.055', '', TIMESTAMP '2024-05-21 13:44:03.055', NULL, NULL, NULL), -('__$GROUPID$__', '25e6d3fd-bf2e-472c-999a-a4247b312b56', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.075', '', TIMESTAMP '2024-05-21 13:44:03.075', NULL, NULL, NULL), -('__$GROUPID$__', '1aa9f4b3-ad55-4625-87f7-e1976a225546', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.1', '', TIMESTAMP '2024-05-21 13:44:03.1', NULL, NULL, NULL), -('__$GROUPID$__', 'f60f1a8f-6ee1-4ca8-9426-dc12907ace59', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.123', '', TIMESTAMP '2024-05-21 13:44:03.123', NULL, NULL, NULL), -('__$GROUPID$__', 'a5b6af38-e49a-4f9d-8b25-1e40312559ef', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.144', '', TIMESTAMP '2024-05-21 13:44:03.144', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', 'f227ba0c-6deb-4f4d-95ba-1e604746bc94', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.167', '', TIMESTAMP '2024-05-21 13:44:03.167', NULL, NULL, NULL), -('__$GROUPID$__', 'e1401728-0d2f-431b-8874-adac21bda40e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.188', '', TIMESTAMP '2024-05-21 13:44:03.188', NULL, NULL, NULL), -('__$GROUPID$__', 'c8d984f7-b7e9-4203-924a-699ea40d519a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.208', '', TIMESTAMP '2024-05-21 13:44:03.208', NULL, NULL, NULL), -('__$GROUPID$__', 'f77bf8f1-59db-43e3-a63c-d318d8a9090d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.228', '', TIMESTAMP '2024-05-21 13:44:03.228', NULL, NULL, NULL), -('__$GROUPID$__', '5962bf45-bf0f-4a18-8f40-351bfe4d1d06', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.249', '', TIMESTAMP '2024-05-21 13:44:03.249', NULL, NULL, NULL), -('__$GROUPID$__', '52d6ac3f-b704-463c-824f-ea83bbf16b6d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.268', '', TIMESTAMP '2024-05-21 13:44:03.268', NULL, NULL, NULL), -('__$GROUPID$__', '30cee9a3-42b5-4605-b3c1-b27b2a0b60e5', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.288', '', TIMESTAMP '2024-05-21 13:44:03.288', NULL, NULL, NULL), -('__$GROUPID$__', '26ecf497-0a28-4f80-81e5-46b58b42b223', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.307', '', TIMESTAMP '2024-05-21 13:44:03.307', NULL, NULL, NULL), -('__$GROUPID$__', '473bcca3-a842-4cfe-bb9b-94478d6ee247', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.326', '', TIMESTAMP '2024-05-21 13:44:03.326', NULL, NULL, NULL), -('__$GROUPID$__', 'f95759bb-72a6-4118-9109-b49fb1115946', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.345', '', TIMESTAMP '2024-05-21 13:44:03.345', NULL, NULL, NULL), -('__$GROUPID$__', '28830e75-757f-4e4c-a2a3-17cb296c2868', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.365', '', TIMESTAMP '2024-05-21 13:44:03.365', NULL, NULL, NULL), -('__$GROUPID$__', 'd1b6cd48-c42c-4dd0-935f-75101af2d594', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.386', '', TIMESTAMP '2024-05-21 13:44:03.386', NULL, NULL, NULL), -('__$GROUPID$__', '948a5de2-d3a2-41d2-8e73-4c2458030410', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.406', '', TIMESTAMP '2024-05-21 13:44:03.406', NULL, NULL, NULL), -('__$GROUPID$__', 'f189ccae-aacc-440b-b71f-a5a7fdb41d60', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.426', '', TIMESTAMP '2024-05-21 13:44:03.426', NULL, NULL, NULL), -('__$GROUPID$__', '653982fb-f8e2-4934-962b-63645fbc40b7', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.446', '', TIMESTAMP '2024-05-21 13:44:03.446', NULL, NULL, NULL), -('__$GROUPID$__', '190ef94f-1508-408b-b2b7-cc7735a34a49', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.467', '', TIMESTAMP '2024-05-21 13:44:03.467', NULL, NULL, NULL), -('__$GROUPID$__', '5389df82-00f5-4f7a-bbbb-37ab986d1caf', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.488', '', TIMESTAMP '2024-05-21 13:44:03.488', NULL, NULL, NULL), -('__$GROUPID$__', '84c9a3b5-8271-443c-9cd3-1be79a090041', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.509', '', TIMESTAMP '2024-05-21 13:44:03.509', NULL, NULL, NULL), -('__$GROUPID$__', '41a1a9e6-60eb-4a5e-82c1-27af4a292d69', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.529', '', TIMESTAMP '2024-05-21 13:44:03.529', NULL, NULL, NULL), -('__$GROUPID$__', '9244befe-19ca-447b-8b40-cf14db608610', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.549', '', TIMESTAMP '2024-05-21 13:44:03.549', NULL, NULL, NULL), -('__$GROUPID$__', 'a01e4af8-9b3d-4a77-a1d8-32569324d34c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.568', '', TIMESTAMP '2024-05-21 13:44:03.568', NULL, NULL, NULL), -('__$GROUPID$__', '79a28909-18c5-4a03-8758-53f467e8de3b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.588', '', TIMESTAMP '2024-05-21 13:44:03.588', NULL, NULL, NULL), -('__$GROUPID$__', 'bb765ecb-1f24-4200-8c68-aae619c72fb9', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.608', '', TIMESTAMP '2024-05-21 13:44:03.608', NULL, NULL, NULL), -('__$GROUPID$__', '3bba986f-43b9-445e-b68a-e9a0a2e20b5e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.628', '', TIMESTAMP '2024-05-21 13:44:03.628', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '03c4f12c-d631-4d24-a73b-b07ad1e1f9ac', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.648', '', TIMESTAMP '2024-05-21 13:44:03.648', NULL, NULL, NULL), -('__$GROUPID$__', '893e3045-b2fe-43c3-a798-a3caf393a9a0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.669', '', TIMESTAMP '2024-05-21 13:44:03.669', NULL, NULL, NULL), -('__$GROUPID$__', '3e94a0af-87ba-4f71-923d-4ceaa1821338', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.69', '', TIMESTAMP '2024-05-21 13:44:03.69', NULL, NULL, NULL), -('__$GROUPID$__', '879fa889-007b-418f-8e96-214105e42cb6', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.709', '', TIMESTAMP '2024-05-21 13:44:03.709', NULL, NULL, NULL), -('__$GROUPID$__', '7724031b-3ad7-42b2-9819-1ef9a289cd8e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.728', '', TIMESTAMP '2024-05-21 13:44:03.728', NULL, NULL, NULL), -('__$GROUPID$__', 'b098f9cc-3733-4a5c-ac82-85ad179514cd', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.747', '', TIMESTAMP '2024-05-21 13:44:03.747', NULL, NULL, NULL), -('__$GROUPID$__', 'd4ef4016-7839-49dd-908d-e4e3f0833e8e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.767', '', TIMESTAMP '2024-05-21 13:44:03.767', NULL, NULL, NULL), -('__$GROUPID$__', '9dfe5f86-33ba-40fd-977a-28147e99909c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.786', '', TIMESTAMP '2024-05-21 13:44:03.786', NULL, NULL, NULL), -('__$GROUPID$__', '3b8ba2ea-49ba-43a7-aac1-22c9e7ae17b4', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.806', '', TIMESTAMP '2024-05-21 13:44:03.806', NULL, NULL, NULL), -('__$GROUPID$__', '6522a989-60ee-4cf6-9cc0-5dddc5730aae', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.827', '', TIMESTAMP '2024-05-21 13:44:03.827', NULL, NULL, NULL), -('__$GROUPID$__', '500ff6ef-4fc0-4007-b658-fa9448d1a936', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.846', '', TIMESTAMP '2024-05-21 13:44:03.846', NULL, NULL, NULL), -('__$GROUPID$__', 'f56b717a-bcb8-4f7b-8f21-c777f1b6d935', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.868', '', TIMESTAMP '2024-05-21 13:44:03.868', NULL, NULL, NULL), -('__$GROUPID$__', 'd04c5ed4-70c1-4845-a2ef-5483383b08de', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.892', '', TIMESTAMP '2024-05-21 13:44:03.892', NULL, NULL, NULL), -('__$GROUPID$__', '0ce46809-60b0-4ca3-ba5e-6a0d08f59e2a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.913', '', TIMESTAMP '2024-05-21 13:44:03.913', NULL, NULL, NULL), -('__$GROUPID$__', 'e90f30cb-4675-4e7c-a12b-d35aca03a9a4', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.933', '', TIMESTAMP '2024-05-21 13:44:03.933', NULL, NULL, NULL), -('__$GROUPID$__', '3f89232e-d8d1-417a-96ef-aff9cca5610b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.955', '', TIMESTAMP '2024-05-21 13:44:03.955', NULL, NULL, NULL), -('__$GROUPID$__', '0bfc2797-83a4-434d-b09c-68301c20ee79', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:03.979', '', TIMESTAMP '2024-05-21 13:44:03.979', NULL, NULL, NULL), -('__$GROUPID$__', '2954cfcc-9169-4bce-8bbf-72bf68a6c5ed', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.005', '', TIMESTAMP '2024-05-21 13:44:04.005', NULL, NULL, NULL), -('__$GROUPID$__', 'f6359190-823d-4c8c-b6be-1fc3ce14cc6e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.028', '', TIMESTAMP '2024-05-21 13:44:04.028', NULL, NULL, NULL), -('__$GROUPID$__', '65e1d9b0-2a42-4c11-8829-7bbbf7277ceb', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.051', '', TIMESTAMP '2024-05-21 13:44:04.051', NULL, NULL, NULL), -('__$GROUPID$__', 'e7ce3bd2-3187-4d64-8615-ea253629f975', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.075', '', TIMESTAMP '2024-05-21 13:44:04.075', NULL, NULL, NULL), -('__$GROUPID$__', '2211c7ab-9afd-47f7-92c1-2cb9d5a62b57', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.097', '', TIMESTAMP '2024-05-21 13:44:04.097', NULL, NULL, NULL), -('__$GROUPID$__', '9320329c-d175-4783-9ebf-d4a89f8a6167', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.117', '', TIMESTAMP '2024-05-21 13:44:04.117', NULL, NULL, NULL), -('__$GROUPID$__', 'c6579939-b8a1-4269-a7de-f02202e26422', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.137', '', TIMESTAMP '2024-05-21 13:44:04.137', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '4ca32bb7-231c-4f85-a2f8-1563f138f2c0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.159', '', TIMESTAMP '2024-05-21 13:44:04.159', NULL, NULL, NULL), -('__$GROUPID$__', 'cd7de510-41ce-4d0a-9ee4-e2ae2e48949c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.179', '', TIMESTAMP '2024-05-21 13:44:04.179', NULL, NULL, NULL), -('__$GROUPID$__', '445dd5f8-b43f-4468-a619-32ff570b314b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.2', '', TIMESTAMP '2024-05-21 13:44:04.2', NULL, NULL, NULL), -('__$GROUPID$__', 'e7aa108b-7122-4a3e-83af-15956ac568a9', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.221', '', TIMESTAMP '2024-05-21 13:44:04.221', NULL, NULL, NULL), -('__$GROUPID$__', '5698a602-a371-4eff-a8e0-2fda0aa762a4', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.243', '', TIMESTAMP '2024-05-21 13:44:04.243', NULL, NULL, NULL), -('__$GROUPID$__', '0b628c3b-3b68-4721-af61-9bc41ba75e06', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.263', '', TIMESTAMP '2024-05-21 13:44:04.263', NULL, NULL, NULL), -('__$GROUPID$__', 'bf1deeb5-3108-4c3e-ba57-819280b2fae2', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.283', '', TIMESTAMP '2024-05-21 13:44:04.283', NULL, NULL, NULL), -('__$GROUPID$__', '30846b8e-d6f4-4e7a-a61d-8e91446b9a3c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.305', '', TIMESTAMP '2024-05-21 13:44:04.305', NULL, NULL, NULL), -('__$GROUPID$__', '8e2451e2-c529-429d-a119-d8dbde2e570b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.329', '', TIMESTAMP '2024-05-21 13:44:04.329', NULL, NULL, NULL), -('__$GROUPID$__', '36fc5be8-dca3-4ca5-9dd1-e2a19cd4710b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.351', '', TIMESTAMP '2024-05-21 13:44:04.351', NULL, NULL, NULL), -('__$GROUPID$__', 'd52aad4e-6e1b-4f12-a6b7-9625dbdd546e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.371', '', TIMESTAMP '2024-05-21 13:44:04.371', NULL, NULL, NULL), -('__$GROUPID$__', '2ba5b0ba-55b1-4424-b644-28990f5f7f7c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.391', '', TIMESTAMP '2024-05-21 13:44:04.391', NULL, NULL, NULL), -('__$GROUPID$__', 'bbe6ca38-f91c-4b7f-8f3b-9fd290c8ada2', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.413', '', TIMESTAMP '2024-05-21 13:44:04.413', NULL, NULL, NULL), -('__$GROUPID$__', 'e01051b2-3ed4-4877-a3bf-89d4c25a26b4', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.435', '', TIMESTAMP '2024-05-21 13:44:04.435', NULL, NULL, NULL), -('__$GROUPID$__', '6b485480-81ae-4180-b537-98b25bbe7510', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.454', '', TIMESTAMP '2024-05-21 13:44:04.454', NULL, NULL, NULL), -('__$GROUPID$__', '14067fb7-e7e9-45d0-b5e1-36f683d151e4', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.484', '', TIMESTAMP '2024-05-21 13:44:04.484', NULL, NULL, NULL), -('__$GROUPID$__', 'd6e5e418-198c-4def-8d51-fb5405912cce', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.506', '', TIMESTAMP '2024-05-21 13:44:04.506', NULL, NULL, NULL), -('__$GROUPID$__', '5d6ea64d-394a-45c1-b73d-939ea1c761ce', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.527', '', TIMESTAMP '2024-05-21 13:44:04.527', NULL, NULL, NULL), -('__$GROUPID$__', '09be6206-95b0-42a8-8f31-c7f818111413', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.546', '', TIMESTAMP '2024-05-21 13:44:04.546', NULL, NULL, NULL), -('__$GROUPID$__', '122ee6bf-4e6c-4e2e-aded-18ef18ee4c80', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.567', '', TIMESTAMP '2024-05-21 13:44:04.567', NULL, NULL, NULL), -('__$GROUPID$__', '09d5cf40-0384-4133-b2e0-75a80b5074c6', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.586', '', TIMESTAMP '2024-05-21 13:44:04.586', NULL, NULL, NULL), -('__$GROUPID$__', 'e7ce2467-0b51-4b15-b8e3-e223188a1b9b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.605', '', TIMESTAMP '2024-05-21 13:44:04.605', NULL, NULL, NULL), -('__$GROUPID$__', '040bc186-770d-40fd-ac0c-9240afc4ce67', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.624', '', TIMESTAMP '2024-05-21 13:44:04.624', NULL, NULL, NULL), -('__$GROUPID$__', 'dff18467-c412-4cc1-bb2c-6fcb1a160fa7', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.644', '', TIMESTAMP '2024-05-21 13:44:04.644', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '9837e10d-ae18-4199-880a-76ba766dd9d6', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.664', '', TIMESTAMP '2024-05-21 13:44:04.664', NULL, NULL, NULL), -('__$GROUPID$__', '51777c6d-1193-4e97-8c49-cb99c8674e67', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.684', '', TIMESTAMP '2024-05-21 13:44:04.684', NULL, NULL, NULL), -('__$GROUPID$__', '6bf49be1-af44-4464-a9fe-7c66f2cb57ea', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.703', '', TIMESTAMP '2024-05-21 13:44:04.703', NULL, NULL, NULL), -('__$GROUPID$__', '76085212-21db-4051-a786-4533a4ce1264', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.722', '', TIMESTAMP '2024-05-21 13:44:04.722', NULL, NULL, NULL), -('__$GROUPID$__', '79824ece-a172-4c37-8062-969fb61eec50', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.743', '', TIMESTAMP '2024-05-21 13:44:04.743', NULL, NULL, NULL), -('__$GROUPID$__', '98f91c0b-56d8-4f20-be8b-c46f0f2f3c27', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.761', '', TIMESTAMP '2024-05-21 13:44:04.761', NULL, NULL, NULL), -('__$GROUPID$__', '981d1def-f3e0-467e-8af0-2e1e84c94b41', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.782', '', TIMESTAMP '2024-05-21 13:44:04.782', NULL, NULL, NULL), -('__$GROUPID$__', 'e5204905-e11f-402d-940e-b7e129b34b65', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.802', '', TIMESTAMP '2024-05-21 13:44:04.802', NULL, NULL, NULL), -('__$GROUPID$__', '31a3e69c-7d3d-4771-aa8e-dea60e47904e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.822', '', TIMESTAMP '2024-05-21 13:44:04.822', NULL, NULL, NULL), -('__$GROUPID$__', 'c9c99ab5-cb17-414f-82e6-aa045cfe036f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.842', '', TIMESTAMP '2024-05-21 13:44:04.842', NULL, NULL, NULL), -('__$GROUPID$__', '61f08417-f07b-4b88-aa48-e9e272fd9f5d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.861', '', TIMESTAMP '2024-05-21 13:44:04.861', NULL, NULL, NULL), -('__$GROUPID$__', 'cf08f2dd-4705-4096-baa4-4603731dffe2', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.88', '', TIMESTAMP '2024-05-21 13:44:04.88', NULL, NULL, NULL), -('__$GROUPID$__', 'e96c2031-0bc9-44b4-a2a5-789166d95525', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.9', '', TIMESTAMP '2024-05-21 13:44:04.9', NULL, NULL, NULL), -('__$GROUPID$__', '3cb5ce3f-9f29-4534-86c1-2851a3a0e0b2', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.92', '', TIMESTAMP '2024-05-21 13:44:04.92', NULL, NULL, NULL), -('__$GROUPID$__', 'faa699c8-815b-4f65-b13c-36006d80211f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.94', '', TIMESTAMP '2024-05-21 13:44:04.94', NULL, NULL, NULL), -('__$GROUPID$__', '5104af84-3741-42b2-8528-b4626fedfd2c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.961', '', TIMESTAMP '2024-05-21 13:44:04.961', NULL, NULL, NULL), -('__$GROUPID$__', 'b41e5f0a-0e40-4194-902a-bcc8622999be', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:04.981', '', TIMESTAMP '2024-05-21 13:44:04.981', NULL, NULL, NULL), -('__$GROUPID$__', '4dfbd027-038f-4142-99eb-3265ccf770f0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05', '', TIMESTAMP '2024-05-21 13:44:05', NULL, NULL, NULL), -('__$GROUPID$__', '26f4f339-442e-46f8-9832-86e2ddb23fe4', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.02', '', TIMESTAMP '2024-05-21 13:44:05.02', NULL, NULL, NULL), -('__$GROUPID$__', '5fc0c20a-61e9-48d8-905a-d24f84c4d094', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.042', '', TIMESTAMP '2024-05-21 13:44:05.042', NULL, NULL, NULL), -('__$GROUPID$__', 'd71b6118-2bd7-4900-b71e-56983619697f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.06', '', TIMESTAMP '2024-05-21 13:44:05.06', NULL, NULL, NULL), -('__$GROUPID$__', '7d2b867e-5701-481e-b163-39e9c571d845', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.08', '', TIMESTAMP '2024-05-21 13:44:05.08', NULL, NULL, NULL), -('__$GROUPID$__', 'a15d38e6-473e-4ad1-9e51-0504c2c25410', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.1', '', TIMESTAMP '2024-05-21 13:44:05.1', NULL, NULL, NULL), -('__$GROUPID$__', '4f9acf8f-18f4-49af-8fcb-c4736aea4970', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.12', '', TIMESTAMP '2024-05-21 13:44:05.12', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '56663a71-2bd1-4ad0-8761-d88031bdfc01', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.141', '', TIMESTAMP '2024-05-21 13:44:05.141', NULL, NULL, NULL), -('__$GROUPID$__', '50e15489-c86e-4df8-8e4b-d4e2cb30bc6b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.16', '', TIMESTAMP '2024-05-21 13:44:05.16', NULL, NULL, NULL), -('__$GROUPID$__', 'a0b1fe7c-48dc-4c9e-a8ac-4d969c9f77fc', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.178', '', TIMESTAMP '2024-05-21 13:44:05.178', NULL, NULL, NULL), -('__$GROUPID$__', '1c17e99a-2fbc-44de-937b-1bb6de989502', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.197', '', TIMESTAMP '2024-05-21 13:44:05.197', NULL, NULL, NULL), -('__$GROUPID$__', '18385311-230f-402e-858b-0c7709fd1a53', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.215', '', TIMESTAMP '2024-05-21 13:44:05.215', NULL, NULL, NULL), -('__$GROUPID$__', '558a7480-cb3b-4a1e-aaf1-508ea55faca1', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.233', '', TIMESTAMP '2024-05-21 13:44:05.233', NULL, NULL, NULL), -('__$GROUPID$__', '06fe3486-f568-4ef1-b71b-1312cce3cbb3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.252', '', TIMESTAMP '2024-05-21 13:44:05.252', NULL, NULL, NULL), -('__$GROUPID$__', '6c849044-941a-45c6-9561-6965f0787941', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.27', '', TIMESTAMP '2024-05-21 13:44:05.27', NULL, NULL, NULL), -('__$GROUPID$__', '9d243499-abba-44dc-9c35-065571d6b64c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.288', '', TIMESTAMP '2024-05-21 13:44:05.288', NULL, NULL, NULL), -('__$GROUPID$__', 'b65ba228-dbc3-4bd5-86a8-e8e9864e1491', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.307', '', TIMESTAMP '2024-05-21 13:44:05.307', NULL, NULL, NULL), -('__$GROUPID$__', 'a32b41a8-a42f-4396-a5a9-4bca335f24f0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.328', '', TIMESTAMP '2024-05-21 13:44:05.328', NULL, NULL, NULL), -('__$GROUPID$__', '86c26ea8-5b63-4ca1-92b3-f4e16bf7f3d0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.347', '', TIMESTAMP '2024-05-21 13:44:05.347', NULL, NULL, NULL), -('__$GROUPID$__', '6dc39edb-1538-40a0-85f2-b1c7bf427192', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.367', '', TIMESTAMP '2024-05-21 13:44:05.367', NULL, NULL, NULL), -('__$GROUPID$__', 'bbe2d4ed-6333-4eff-9756-b1c6b018e4fa', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.387', '', TIMESTAMP '2024-05-21 13:44:05.387', NULL, NULL, NULL), -('__$GROUPID$__', '5ac58a7a-3b5a-4408-b65e-1f154b3ffefc', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.405', '', TIMESTAMP '2024-05-21 13:44:05.405', NULL, NULL, NULL), -('__$GROUPID$__', 'da24911e-a399-40c7-ae7e-0ced5e648d14', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.424', '', TIMESTAMP '2024-05-21 13:44:05.424', NULL, NULL, NULL), -('__$GROUPID$__', '81bb9ade-f416-4231-8d19-5e10d5f8fda5', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.443', '', TIMESTAMP '2024-05-21 13:44:05.443', NULL, NULL, NULL), -('__$GROUPID$__', 'bd5e11fb-f041-403f-a1bf-343a0ce536a0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.462', '', TIMESTAMP '2024-05-21 13:44:05.462', NULL, NULL, NULL), -('__$GROUPID$__', 'e1d0354f-949b-466e-8456-e977a38dfce9', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.481', '', TIMESTAMP '2024-05-21 13:44:05.481', NULL, NULL, NULL), -('__$GROUPID$__', 'b9746e93-29e5-4d66-b851-71580c9dfa87', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.501', '', TIMESTAMP '2024-05-21 13:44:05.501', NULL, NULL, NULL), -('__$GROUPID$__', 'dd11def3-3779-4871-9f82-6b5506fac1d4', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.52', '', TIMESTAMP '2024-05-21 13:44:05.52', NULL, NULL, NULL), -('__$GROUPID$__', 'a19a8e50-dd3a-43df-9b9e-e9efde46e260', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.538', '', TIMESTAMP '2024-05-21 13:44:05.538', NULL, NULL, NULL), -('__$GROUPID$__', 'a22eec3a-da52-49ed-8308-f956534c2a47', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.558', '', TIMESTAMP '2024-05-21 13:44:05.558', NULL, NULL, NULL), -('__$GROUPID$__', 'e8bae7fa-cfa6-4b10-a590-948807ab6624', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.578', '', TIMESTAMP '2024-05-21 13:44:05.578', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '854937f9-dbe2-4264-a9ee-68a0df7d144d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.596', '', TIMESTAMP '2024-05-21 13:44:05.596', NULL, NULL, NULL), -('__$GROUPID$__', '49ecf64a-d962-43cd-b791-ae3cd9599844', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.615', '', TIMESTAMP '2024-05-21 13:44:05.615', NULL, NULL, NULL), -('__$GROUPID$__', 'a86c0f17-e587-4fba-8172-e2a2ddbbbee4', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.632', '', TIMESTAMP '2024-05-21 13:44:05.632', NULL, NULL, NULL), -('__$GROUPID$__', 'dbbaf042-a463-4bad-a2ab-d9f054badcb6', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.651', '', TIMESTAMP '2024-05-21 13:44:05.651', NULL, NULL, NULL), -('__$GROUPID$__', '405c69ae-030e-4d1e-bf24-1ee2c5c0c0b9', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.669', '', TIMESTAMP '2024-05-21 13:44:05.669', NULL, NULL, NULL), -('__$GROUPID$__', 'aca01c1b-7753-4123-bf2c-f4c27aa0d0a0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.687', '', TIMESTAMP '2024-05-21 13:44:05.687', NULL, NULL, NULL), -('__$GROUPID$__', 'd80c87f1-83f9-41ad-9084-1dfd85f7b202', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.706', '', TIMESTAMP '2024-05-21 13:44:05.706', NULL, NULL, NULL), -('__$GROUPID$__', '20351cf7-4245-473d-995c-027ad6858a3c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.725', '', TIMESTAMP '2024-05-21 13:44:05.725', NULL, NULL, NULL), -('__$GROUPID$__', '4e735895-6b2d-4db4-915d-c866906daa07', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.744', '', TIMESTAMP '2024-05-21 13:44:05.744', NULL, NULL, NULL), -('__$GROUPID$__', '17fe9808-8cf9-4407-8dd2-9030ef1662a8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.763', '', TIMESTAMP '2024-05-21 13:44:05.763', NULL, NULL, NULL), -('__$GROUPID$__', 'f8059033-1744-45bf-83fa-b55f9da0a591', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.781', '', TIMESTAMP '2024-05-21 13:44:05.781', NULL, NULL, NULL), -('__$GROUPID$__', '8d53a935-554f-408d-a6bf-8e22a3487b42', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.8', '', TIMESTAMP '2024-05-21 13:44:05.8', NULL, NULL, NULL), -('__$GROUPID$__', 'eec1832c-ce25-4053-b11a-d1fd60227085', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.819', '', TIMESTAMP '2024-05-21 13:44:05.819', NULL, NULL, NULL), -('__$GROUPID$__', '1b29dcca-77ea-451d-a549-f2ac20603668', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.837', '', TIMESTAMP '2024-05-21 13:44:05.837', NULL, NULL, NULL), -('__$GROUPID$__', '83ba8e55-235d-4f90-aad2-73ae39b96ec2', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.855', '', TIMESTAMP '2024-05-21 13:44:05.855', NULL, NULL, NULL), -('__$GROUPID$__', 'ffb8a030-fb77-4a61-b232-a9a1712adc8a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.874', '', TIMESTAMP '2024-05-21 13:44:05.874', NULL, NULL, NULL), -('__$GROUPID$__', 'a107b6e3-bf86-4144-a7c4-2969a0af9643', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.892', '', TIMESTAMP '2024-05-21 13:44:05.892', NULL, NULL, NULL), -('__$GROUPID$__', '41beea52-ab56-4837-95ef-2b5bb73ab4be', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.911', '', TIMESTAMP '2024-05-21 13:44:05.911', NULL, NULL, NULL), -('__$GROUPID$__', '8c7f7f86-eb43-44d2-a650-2e97e5216372', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.931', '', TIMESTAMP '2024-05-21 13:44:05.931', NULL, NULL, NULL), -('__$GROUPID$__', 'ccf37b2b-d36c-4281-8b6a-990d635f779e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.95', '', TIMESTAMP '2024-05-21 13:44:05.95', NULL, NULL, NULL), -('__$GROUPID$__', 'e3d7e46b-aa62-4c5b-9538-a5e0f963473c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.969', '', TIMESTAMP '2024-05-21 13:44:05.969', NULL, NULL, NULL), -('__$GROUPID$__', 'eeabebab-1f55-4781-91dd-f289ce8b6a3d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:05.988', '', TIMESTAMP '2024-05-21 13:44:05.988', NULL, NULL, NULL), -('__$GROUPID$__', '7866b672-ce6f-4297-bf54-2cc935d07807', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.007', '', TIMESTAMP '2024-05-21 13:44:06.007', NULL, NULL, NULL), -('__$GROUPID$__', '4d9014ad-ab2b-4faa-8db7-4c38a0db4ade', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.025', '', TIMESTAMP '2024-05-21 13:44:06.025', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', 'be4b73a1-bb1d-4667-9b3e-724a1b70c843', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.044', '', TIMESTAMP '2024-05-21 13:44:06.044', NULL, NULL, NULL), -('__$GROUPID$__', '7812c7e7-f8e2-4644-91b5-b49cafd01932', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.062', '', TIMESTAMP '2024-05-21 13:44:06.062', NULL, NULL, NULL), -('__$GROUPID$__', '01ef4852-b521-4d4f-9c44-d35d11041497', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.08', '', TIMESTAMP '2024-05-21 13:44:06.08', NULL, NULL, NULL), -('__$GROUPID$__', '17572646-81c0-4424-bc42-296f027b9621', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.099', '', TIMESTAMP '2024-05-21 13:44:06.099', NULL, NULL, NULL), -('__$GROUPID$__', '864c953e-5b57-4b53-a6f0-f34409e93028', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.118', '', TIMESTAMP '2024-05-21 13:44:06.118', NULL, NULL, NULL), -('__$GROUPID$__', 'f93440e8-55e4-4d72-b9cf-f2c37759336d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.137', '', TIMESTAMP '2024-05-21 13:44:06.137', NULL, NULL, NULL), -('__$GROUPID$__', 'f05fd06b-717b-44df-ae05-0a29483aa9f7', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.156', '', TIMESTAMP '2024-05-21 13:44:06.156', NULL, NULL, NULL), -('__$GROUPID$__', '8ea7a6a1-878f-499f-b182-cb0110a5bcaf', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.176', '', TIMESTAMP '2024-05-21 13:44:06.176', NULL, NULL, NULL), -('__$GROUPID$__', 'b461d5f7-c4fc-4e73-8f8f-299116cc000a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.194', '', TIMESTAMP '2024-05-21 13:44:06.194', NULL, NULL, NULL), -('__$GROUPID$__', '53bba55d-111e-4d97-89ed-f0c268011353', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.212', '', TIMESTAMP '2024-05-21 13:44:06.212', NULL, NULL, NULL), -('__$GROUPID$__', '75247f5e-9792-4ada-aaf5-9807f2b40c63', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.231', '', TIMESTAMP '2024-05-21 13:44:06.231', NULL, NULL, NULL), -('__$GROUPID$__', '201fa10a-da09-4ee8-8356-fdf15f586d86', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.249', '', TIMESTAMP '2024-05-21 13:44:06.249', NULL, NULL, NULL), -('__$GROUPID$__', '80799adc-9353-4445-9d3e-2933a3bd9ac3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.267', '', TIMESTAMP '2024-05-21 13:44:06.267', NULL, NULL, NULL), -('__$GROUPID$__', '7795cbd3-6261-47d4-b10c-c8e12e9f6f03', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.284', '', TIMESTAMP '2024-05-21 13:44:06.284', NULL, NULL, NULL), -('__$GROUPID$__', '6b45f06e-0204-4cec-ba26-899fb725cd08', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.303', '', TIMESTAMP '2024-05-21 13:44:06.303', NULL, NULL, NULL), -('__$GROUPID$__', '7e97decd-f8e5-49d6-b46a-eaee9b07e5f4', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.321', '', TIMESTAMP '2024-05-21 13:44:06.321', NULL, NULL, NULL), -('__$GROUPID$__', 'dd41b8a8-6e0a-4ec0-8648-b8759ef0bda3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.342', '', TIMESTAMP '2024-05-21 13:44:06.342', NULL, NULL, NULL), -('__$GROUPID$__', '2359cfb3-7706-42b2-8bcd-3127c7e69aed', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.363', '', TIMESTAMP '2024-05-21 13:44:06.363', NULL, NULL, NULL), -('__$GROUPID$__', '4e95664d-6bd9-45f2-8e00-3af921a4a100', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.382', '', TIMESTAMP '2024-05-21 13:44:06.382', NULL, NULL, NULL), -('__$GROUPID$__', 'ac5f6103-b8a9-4e21-b4de-d5543c26d82f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.402', '', TIMESTAMP '2024-05-21 13:44:06.402', NULL, NULL, NULL), -('__$GROUPID$__', '3a3b071c-4570-4946-b09c-bf065353ad9d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.423', '', TIMESTAMP '2024-05-21 13:44:06.423', NULL, NULL, NULL), -('__$GROUPID$__', 'd4df8684-d9e8-4ad7-872e-683091e92d5f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.443', '', TIMESTAMP '2024-05-21 13:44:06.443', NULL, NULL, NULL), -('__$GROUPID$__', '24970ead-a848-49c2-a949-9acf53f33ff1', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.462', '', TIMESTAMP '2024-05-21 13:44:06.462', NULL, NULL, NULL), -('__$GROUPID$__', '9a7a047c-35a5-4734-86a8-2e0b921d6e38', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.488', '', TIMESTAMP '2024-05-21 13:44:06.488', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', 'd6934b04-4f5a-4b3d-8ec9-4902b99d044d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.506', '', TIMESTAMP '2024-05-21 13:44:06.506', NULL, NULL, NULL), -('__$GROUPID$__', '488e8a2b-3121-497e-bb79-6d219dd184f6', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.526', '', TIMESTAMP '2024-05-21 13:44:06.526', NULL, NULL, NULL), -('__$GROUPID$__', 'de168a6c-7f97-4c13-b939-fdf081212ad2', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.546', '', TIMESTAMP '2024-05-21 13:44:06.546', NULL, NULL, NULL), -('__$GROUPID$__', '678021cb-3cc3-4b37-a34a-7ca790055f31', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.565', '', TIMESTAMP '2024-05-21 13:44:06.565', NULL, NULL, NULL), -('__$GROUPID$__', 'a32b510d-ef3e-47e0-8fd2-aeba498ddedc', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.584', '', TIMESTAMP '2024-05-21 13:44:06.584', NULL, NULL, NULL), -('__$GROUPID$__', '0b8fbdeb-acc3-4a0c-b049-520f29661d1f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.603', '', TIMESTAMP '2024-05-21 13:44:06.603', NULL, NULL, NULL), -('__$GROUPID$__', '3bdc6ede-399f-40d9-b2c2-cdbff3f3d480', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.621', '', TIMESTAMP '2024-05-21 13:44:06.621', NULL, NULL, NULL), -('__$GROUPID$__', '001a78ae-593f-4c4e-a62d-de39956017de', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.641', '', TIMESTAMP '2024-05-21 13:44:06.641', NULL, NULL, NULL), -('__$GROUPID$__', '336051fb-f58c-4ce2-a32f-926ba9a6bbbe', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.659', '', TIMESTAMP '2024-05-21 13:44:06.659', NULL, NULL, NULL), -('__$GROUPID$__', '7eedd438-5358-497c-a527-d459b7bbe3e3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.676', '', TIMESTAMP '2024-05-21 13:44:06.676', NULL, NULL, NULL), -('__$GROUPID$__', '99ba9065-ca6a-45e2-9396-5f0a7ef856d8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.695', '', TIMESTAMP '2024-05-21 13:44:06.695', NULL, NULL, NULL), -('__$GROUPID$__', 'a2602e09-e64f-4f6a-9ffe-96d7e79cc703', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.714', '', TIMESTAMP '2024-05-21 13:44:06.714', NULL, NULL, NULL), -('__$GROUPID$__', '04652ece-9cad-44d4-99e0-555881f74953', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.732', '', TIMESTAMP '2024-05-21 13:44:06.732', NULL, NULL, NULL), -('__$GROUPID$__', '66bc29b8-75fe-49c7-8942-556b834abbf8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.751', '', TIMESTAMP '2024-05-21 13:44:06.751', NULL, NULL, NULL), -('__$GROUPID$__', '8a78e843-a13b-46fa-aae9-f27dc49d1d6a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.771', '', TIMESTAMP '2024-05-21 13:44:06.771', NULL, NULL, NULL), -('__$GROUPID$__', '0d187b8d-d3f7-4d06-bc1e-b04e68e33d8a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.79', '', TIMESTAMP '2024-05-21 13:44:06.79', NULL, NULL, NULL), -('__$GROUPID$__', '4b9fb9bc-6c56-419a-abfc-5d2d32867e49', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.809', '', TIMESTAMP '2024-05-21 13:44:06.809', NULL, NULL, NULL), -('__$GROUPID$__', 'c5635733-b14c-40b8-8ae8-005128509377', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.828', '', TIMESTAMP '2024-05-21 13:44:06.828', NULL, NULL, NULL), -('__$GROUPID$__', 'e7ef484e-d5cd-4d3b-8ed9-d0a0144c1400', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.846', '', TIMESTAMP '2024-05-21 13:44:06.846', NULL, NULL, NULL), -('__$GROUPID$__', '7ec8097c-5174-4b1a-8a81-d9af7de764ce', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.865', '', TIMESTAMP '2024-05-21 13:44:06.865', NULL, NULL, NULL), -('__$GROUPID$__', 'db9942e5-56fa-48c4-95c8-c95025f084eb', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.883', '', TIMESTAMP '2024-05-21 13:44:06.883', NULL, NULL, NULL), -('__$GROUPID$__', '16fdea16-6152-4ac3-8488-4222fcb70cbb', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.901', '', TIMESTAMP '2024-05-21 13:44:06.901', NULL, NULL, NULL), -('__$GROUPID$__', 'e41c84e6-b407-41e9-838e-89f6665baace', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.92', '', TIMESTAMP '2024-05-21 13:44:06.92', NULL, NULL, NULL), -('__$GROUPID$__', 'a0d322c2-1187-4fe5-8940-26cc3a586b70', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.938', '', TIMESTAMP '2024-05-21 13:44:06.938', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', 'ccac78f1-1440-4e9b-a9ee-dca8ba4986f9', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.957', '', TIMESTAMP '2024-05-21 13:44:06.957', NULL, NULL, NULL), -('__$GROUPID$__', '5274d26c-90e1-4135-83cb-9f4f4d77f09a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.976', '', TIMESTAMP '2024-05-21 13:44:06.976', NULL, NULL, NULL), -('__$GROUPID$__', 'd965fffd-c494-425f-834d-b29e8e3506ff', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:06.995', '', TIMESTAMP '2024-05-21 13:44:06.995', NULL, NULL, NULL), -('__$GROUPID$__', '910f33c9-1aeb-474e-834c-ac9a204d29ee', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.014', '', TIMESTAMP '2024-05-21 13:44:07.014', NULL, NULL, NULL), -('__$GROUPID$__', '6e8c7795-bc12-40e4-9aac-5cd0224bb076', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.033', '', TIMESTAMP '2024-05-21 13:44:07.033', NULL, NULL, NULL), -('__$GROUPID$__', '418e85bd-1bc1-405f-8e8b-fef6ec016cd2', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.053', '', TIMESTAMP '2024-05-21 13:44:07.053', NULL, NULL, NULL), -('__$GROUPID$__', '81dd9da8-31b8-4cc0-a1bb-cd00b6d06078', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.071', '', TIMESTAMP '2024-05-21 13:44:07.071', NULL, NULL, NULL), -('__$GROUPID$__', '04628057-2c59-40f4-a3cc-a7ce8592fb1b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.089', '', TIMESTAMP '2024-05-21 13:44:07.089', NULL, NULL, NULL), -('__$GROUPID$__', 'c829d2b0-3fb7-4eab-ab28-2899fdf73258', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.107', '', TIMESTAMP '2024-05-21 13:44:07.107', NULL, NULL, NULL), -('__$GROUPID$__', '77bbd279-7dd7-4736-92f5-82f90fac2ee8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.126', '', TIMESTAMP '2024-05-21 13:44:07.126', NULL, NULL, NULL), -('__$GROUPID$__', '3b84dd2b-df6d-408d-a4f7-9762a89c42bb', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.144', '', TIMESTAMP '2024-05-21 13:44:07.144', NULL, NULL, NULL), -('__$GROUPID$__', 'a85416c7-4029-45c8-92ce-d88a166916d0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.163', '', TIMESTAMP '2024-05-21 13:44:07.163', NULL, NULL, NULL), -('__$GROUPID$__', '75df1740-4ca0-4df8-b1a9-0fd04f2254ad', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.181', '', TIMESTAMP '2024-05-21 13:44:07.181', NULL, NULL, NULL), -('__$GROUPID$__', '88afa6ab-4b9c-4d24-9a86-699b77ffe73d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.202', '', TIMESTAMP '2024-05-21 13:44:07.202', NULL, NULL, NULL), -('__$GROUPID$__', 'b13548f6-07b3-4b07-8820-b5447ed5091b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.22', '', TIMESTAMP '2024-05-21 13:44:07.22', NULL, NULL, NULL), -('__$GROUPID$__', '8422958b-a5cf-470f-98de-ac91fae6fdd9', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.239', '', TIMESTAMP '2024-05-21 13:44:07.239', NULL, NULL, NULL), -('__$GROUPID$__', '113e792e-04b2-42a4-87fe-b16b1ff9bb53', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.259', '', TIMESTAMP '2024-05-21 13:44:07.259', NULL, NULL, NULL), -('__$GROUPID$__', '2588c235-ef02-49a2-8e54-51202fe06fc3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.277', '', TIMESTAMP '2024-05-21 13:44:07.277', NULL, NULL, NULL), -('__$GROUPID$__', 'd709b79e-f9b8-4be4-8ba3-f7c0c4694739', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.295', '', TIMESTAMP '2024-05-21 13:44:07.295', NULL, NULL, NULL), -('__$GROUPID$__', '04b9ffea-c56f-4a1c-a5e5-c23de43180cd', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.313', '', TIMESTAMP '2024-05-21 13:44:07.313', NULL, NULL, NULL), -('__$GROUPID$__', '2fd6c130-5dea-44a1-896d-13d38fa1566c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.332', '', TIMESTAMP '2024-05-21 13:44:07.332', NULL, NULL, NULL), -('__$GROUPID$__', 'f43da9d8-fa9d-438f-828f-eef30013a535', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.35', '', TIMESTAMP '2024-05-21 13:44:07.35', NULL, NULL, NULL), -('__$GROUPID$__', '9e27b29d-8915-4ce1-ab42-9da31e0178a2', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.368', '', TIMESTAMP '2024-05-21 13:44:07.368', NULL, NULL, NULL), -('__$GROUPID$__', '9d6e5808-2d29-48a7-b66c-6bfc258dcb42', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.387', '', TIMESTAMP '2024-05-21 13:44:07.387', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '86b581dc-461c-4f9b-8d5d-709b663945a0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.406', '', TIMESTAMP '2024-05-21 13:44:07.406', NULL, NULL, NULL), -('__$GROUPID$__', 'f4e5dbbb-f66f-4fe1-8701-6a610c9be0e2', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.424', '', TIMESTAMP '2024-05-21 13:44:07.424', NULL, NULL, NULL), -('__$GROUPID$__', 'c8e41763-7ca6-4494-997e-3c21864242f1', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.442', '', TIMESTAMP '2024-05-21 13:44:07.442', NULL, NULL, NULL), -('__$GROUPID$__', 'a0b22394-92f1-48a8-8a3a-1ded50b56970', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.462', '', TIMESTAMP '2024-05-21 13:44:07.462', NULL, NULL, NULL), -('__$GROUPID$__', 'ee18638d-0f21-45c9-93b5-5514f6980f4a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.48', '', TIMESTAMP '2024-05-21 13:44:07.48', NULL, NULL, NULL), -('__$GROUPID$__', '18068888-539d-4a1f-a0e9-c7deebf56dd6', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.498', '', TIMESTAMP '2024-05-21 13:44:07.498', NULL, NULL, NULL), -('__$GROUPID$__', '24ab448c-d6ad-4ff9-bf46-fb5bbcb9798d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.519', '', TIMESTAMP '2024-05-21 13:44:07.519', NULL, NULL, NULL), -('__$GROUPID$__', '5ad09d3b-85af-4e79-a4a7-d28ed0cb0d29', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.538', '', TIMESTAMP '2024-05-21 13:44:07.538', NULL, NULL, NULL), -('__$GROUPID$__', '05ee1758-f3e7-4f7d-aece-3b10ca5e0ffe', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.557', '', TIMESTAMP '2024-05-21 13:44:07.557', NULL, NULL, NULL), -('__$GROUPID$__', '7b5294b8-bf8a-4150-a921-24646fee4f34', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.577', '', TIMESTAMP '2024-05-21 13:44:07.577', NULL, NULL, NULL), -('__$GROUPID$__', 'a811ae24-a83c-4631-a8dd-941fdea60d01', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.596', '', TIMESTAMP '2024-05-21 13:44:07.596', NULL, NULL, NULL), -('__$GROUPID$__', 'e526e3cd-cca2-4947-9841-6968d2ed3300', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.614', '', TIMESTAMP '2024-05-21 13:44:07.614', NULL, NULL, NULL), -('__$GROUPID$__', 'c70b3c46-dc79-4821-bfb4-983eb28685bb', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.633', '', TIMESTAMP '2024-05-21 13:44:07.633', NULL, NULL, NULL), -('__$GROUPID$__', '598586ff-15f1-4189-9996-4161e222e374', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.652', '', TIMESTAMP '2024-05-21 13:44:07.652', NULL, NULL, NULL), -('__$GROUPID$__', 'd794379f-dce4-4b0a-b062-a5f8e25ba042', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.67', '', TIMESTAMP '2024-05-21 13:44:07.67', NULL, NULL, NULL), -('__$GROUPID$__', '83ec179f-d4e3-4349-b66f-996d0cb65e06', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.689', '', TIMESTAMP '2024-05-21 13:44:07.689', NULL, NULL, NULL), -('__$GROUPID$__', '2184e968-6a6c-4cef-a6b9-570eb6eb8185', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.707', '', TIMESTAMP '2024-05-21 13:44:07.707', NULL, NULL, NULL), -('__$GROUPID$__', '19d95d3b-bf73-4f29-ac68-4a17f3df4b21', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.727', '', TIMESTAMP '2024-05-21 13:44:07.727', NULL, NULL, NULL), -('__$GROUPID$__', 'ab102a84-ef30-4911-9a3d-205ee56fa49a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.748', '', TIMESTAMP '2024-05-21 13:44:07.748', NULL, NULL, NULL), -('__$GROUPID$__', '22425650-4cb3-4cf5-b03f-306d59dfc8c1', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.771', '', TIMESTAMP '2024-05-21 13:44:07.771', NULL, NULL, NULL), -('__$GROUPID$__', 'c99dca40-5b82-4587-9bbf-1b4fedcbfcf6', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.79', '', TIMESTAMP '2024-05-21 13:44:07.79', NULL, NULL, NULL), -('__$GROUPID$__', '71105d8e-de22-4a70-bf2d-93832ded65a0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.808', '', TIMESTAMP '2024-05-21 13:44:07.808', NULL, NULL, NULL), -('__$GROUPID$__', '447cf3d3-7ec1-4995-b7d2-d8848a379679', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.827', '', TIMESTAMP '2024-05-21 13:44:07.827', NULL, NULL, NULL), -('__$GROUPID$__', '4f3d3e80-b3c4-4510-b5ba-707b3882bad5', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.846', '', TIMESTAMP '2024-05-21 13:44:07.846', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '16322efd-dc01-4623-83c3-3b0e788f5fbe', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.864', '', TIMESTAMP '2024-05-21 13:44:07.864', NULL, NULL, NULL), -('__$GROUPID$__', 'f8330776-6f78-46c8-85b4-8bde8b194028', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.883', '', TIMESTAMP '2024-05-21 13:44:07.883', NULL, NULL, NULL), -('__$GROUPID$__', '80131f7c-13cd-4cfe-8328-11c2dd1a78a3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.901', '', TIMESTAMP '2024-05-21 13:44:07.901', NULL, NULL, NULL), -('__$GROUPID$__', '9e223165-c60e-455a-93df-573a06c07da3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.919', '', TIMESTAMP '2024-05-21 13:44:07.919', NULL, NULL, NULL), -('__$GROUPID$__', '077fa7c0-e945-449a-a5cf-b92a313f72d0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.937', '', TIMESTAMP '2024-05-21 13:44:07.937', NULL, NULL, NULL), -('__$GROUPID$__', '27026ab9-9bf2-42d3-80cf-497c4c96c2f6', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.954', '', TIMESTAMP '2024-05-21 13:44:07.954', NULL, NULL, NULL), -('__$GROUPID$__', '3340f891-68f6-4dd9-b8e1-1b096aaa4afa', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.972', '', TIMESTAMP '2024-05-21 13:44:07.972', NULL, NULL, NULL), -('__$GROUPID$__', '24de0cf5-3ff5-4597-8940-39f5e13bbcf8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:07.99', '', TIMESTAMP '2024-05-21 13:44:07.99', NULL, NULL, NULL), -('__$GROUPID$__', '941ca3c5-e2ea-49dd-8b5d-8444d8b4568a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.01', '', TIMESTAMP '2024-05-21 13:44:08.01', NULL, NULL, NULL), -('__$GROUPID$__', '77c2bc59-808e-4bc5-a0ac-f180c6fc90fd', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.029', '', TIMESTAMP '2024-05-21 13:44:08.029', NULL, NULL, NULL), -('__$GROUPID$__', 'db92cfbb-7e8a-419a-b14c-2b60067fef7a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.048', '', TIMESTAMP '2024-05-21 13:44:08.048', NULL, NULL, NULL), -('__$GROUPID$__', '2d45f83e-d4f8-4fa9-b354-a01b81c102a8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.067', '', TIMESTAMP '2024-05-21 13:44:08.067', NULL, NULL, NULL), -('__$GROUPID$__', 'ef61e535-ccf8-471d-b3ce-ab932ca3665d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.085', '', TIMESTAMP '2024-05-21 13:44:08.085', NULL, NULL, NULL), -('__$GROUPID$__', '77d2a999-e99e-4999-9acc-8c62625dcca3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.103', '', TIMESTAMP '2024-05-21 13:44:08.103', NULL, NULL, NULL), -('__$GROUPID$__', '719c99e4-aaa3-426a-bdc7-d1c59f8666fe', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.121', '', TIMESTAMP '2024-05-21 13:44:08.121', NULL, NULL, NULL), -('__$GROUPID$__', '204aab35-2026-4b9d-9a7e-26cb7497e8f3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.139', '', TIMESTAMP '2024-05-21 13:44:08.139', NULL, NULL, NULL), -('__$GROUPID$__', '586a7f50-e9e8-4cf6-98c3-581a944a4afc', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.157', '', TIMESTAMP '2024-05-21 13:44:08.157', NULL, NULL, NULL), -('__$GROUPID$__', '4aad4d18-053d-4029-ad53-0340534084e4', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.175', '', TIMESTAMP '2024-05-21 13:44:08.175', NULL, NULL, NULL), -('__$GROUPID$__', '5b0fc7ca-c310-478f-a9d9-0a46aa3891af', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.193', '', TIMESTAMP '2024-05-21 13:44:08.193', NULL, NULL, NULL), -('__$GROUPID$__', 'd45033f9-388f-4494-9d76-ba5a15f55edf', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.212', '', TIMESTAMP '2024-05-21 13:44:08.212', NULL, NULL, NULL), -('__$GROUPID$__', '72fd1590-c3ca-4d65-9f4d-f9f49d01d87c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.233', '', TIMESTAMP '2024-05-21 13:44:08.233', NULL, NULL, NULL), -('__$GROUPID$__', 'd7853a99-cf25-4e70-a712-8851a80fbcd5', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.253', '', TIMESTAMP '2024-05-21 13:44:08.253', NULL, NULL, NULL), -('__$GROUPID$__', 'c634960c-a54b-4b87-b526-ae50af8557da', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.272', '', TIMESTAMP '2024-05-21 13:44:08.272', NULL, NULL, NULL), -('__$GROUPID$__', 'b447ecee-c344-4459-a4da-0762f1f30821', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.292', '', TIMESTAMP '2024-05-21 13:44:08.292', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '90ed63b3-99e1-467a-a837-645d36b50046', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.311', '', TIMESTAMP '2024-05-21 13:44:08.311', NULL, NULL, NULL), -('__$GROUPID$__', '24eed08c-8dd9-4d85-bc05-54563389691a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.33', '', TIMESTAMP '2024-05-21 13:44:08.33', NULL, NULL, NULL), -('__$GROUPID$__', '7da4582e-0bdc-4bd4-8781-b39dec270230', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.348', '', TIMESTAMP '2024-05-21 13:44:08.348', NULL, NULL, NULL), -('__$GROUPID$__', 'e439ed22-0431-40c7-91e7-8e090ef4bb98', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.367', '', TIMESTAMP '2024-05-21 13:44:08.367', NULL, NULL, NULL), -('__$GROUPID$__', '6cd0c235-9f63-4bf7-9a77-8028fca4c25a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.385', '', TIMESTAMP '2024-05-21 13:44:08.385', NULL, NULL, NULL), -('__$GROUPID$__', '8616f09d-74e7-40c2-8b81-354150da10b9', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.404', '', TIMESTAMP '2024-05-21 13:44:08.404', NULL, NULL, NULL), -('__$GROUPID$__', '1e8a5915-1cb5-47ec-9103-2dbff5de1532', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.423', '', TIMESTAMP '2024-05-21 13:44:08.423', NULL, NULL, NULL), -('__$GROUPID$__', 'ff9119a5-e3be-4dc6-9c4f-ce687a4b140b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.442', '', TIMESTAMP '2024-05-21 13:44:08.442', NULL, NULL, NULL), -('__$GROUPID$__', '6075ae11-e3c3-4d80-9b54-ff1675db24e8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.46', '', TIMESTAMP '2024-05-21 13:44:08.46', NULL, NULL, NULL), -('__$GROUPID$__', 'e07819af-8c4b-4a54-8057-e3dda614701f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.479', '', TIMESTAMP '2024-05-21 13:44:08.479', NULL, NULL, NULL), -('__$GROUPID$__', 'a961d14b-312c-4dcb-8ba8-77bc2a223842', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.498', '', TIMESTAMP '2024-05-21 13:44:08.498', NULL, NULL, NULL), -('__$GROUPID$__', 'a01311e5-da64-43ea-8411-e204960ee733', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.517', '', TIMESTAMP '2024-05-21 13:44:08.517', NULL, NULL, NULL), -('__$GROUPID$__', 'd1d6a3a8-fb5d-4319-a9cb-0d71e7f8892a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.534', '', TIMESTAMP '2024-05-21 13:44:08.534', NULL, NULL, NULL), -('__$GROUPID$__', '9cc3a6e5-9370-4974-9569-1e00fa0a244b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.554', '', TIMESTAMP '2024-05-21 13:44:08.554', NULL, NULL, NULL), -('__$GROUPID$__', 'c4d10a58-a9bc-42d8-b47c-762544f0fe35', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.572', '', TIMESTAMP '2024-05-21 13:44:08.572', NULL, NULL, NULL), -('__$GROUPID$__', '9d0705ff-07bb-41ad-bf13-d4e5d48d1207', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.591', '', TIMESTAMP '2024-05-21 13:44:08.591', NULL, NULL, NULL), -('__$GROUPID$__', 'd0d1da04-c04d-47d6-9b7e-d1624b06cb7b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.609', '', TIMESTAMP '2024-05-21 13:44:08.609', NULL, NULL, NULL), -('__$GROUPID$__', '5be20615-fd38-4052-a94a-70dd784a4379', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.628', '', TIMESTAMP '2024-05-21 13:44:08.628', NULL, NULL, NULL), -('__$GROUPID$__', '0f6be926-82db-4610-a0b7-30c6f2a77bb0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.648', '', TIMESTAMP '2024-05-21 13:44:08.648', NULL, NULL, NULL), -('__$GROUPID$__', '8e673fb0-f997-4c6d-94dc-b3f82e073c51', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.667', '', TIMESTAMP '2024-05-21 13:44:08.667', NULL, NULL, NULL), -('__$GROUPID$__', '2fdf5cf7-4de0-4d5a-82d6-97de9b1b760a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.686', '', TIMESTAMP '2024-05-21 13:44:08.686', NULL, NULL, NULL), -('__$GROUPID$__', 'c34c72e8-01bd-49c2-8a6e-91d8c20ee2b6', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.705', '', TIMESTAMP '2024-05-21 13:44:08.705', NULL, NULL, NULL), -('__$GROUPID$__', '547949ac-d500-45aa-8925-95cb52168586', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.725', '', TIMESTAMP '2024-05-21 13:44:08.725', NULL, NULL, NULL), -('__$GROUPID$__', '9967b1a3-1f2c-45bd-bdaf-1db688ff7339', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.744', '', TIMESTAMP '2024-05-21 13:44:08.744', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '4ae7a2a4-871f-4376-a01c-b01fe1a0d0cf', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.772', '', TIMESTAMP '2024-05-21 13:44:08.772', NULL, NULL, NULL), -('__$GROUPID$__', '9b57629d-82e7-42cb-93a3-dda886906659', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.798', '', TIMESTAMP '2024-05-21 13:44:08.798', NULL, NULL, NULL), -('__$GROUPID$__', '0cbd3a7f-6bd7-466e-b9ec-1ac834199bbd', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.817', '', TIMESTAMP '2024-05-21 13:44:08.817', NULL, NULL, NULL), -('__$GROUPID$__', 'e90e1871-0714-4f6d-bf74-d509ad035d1f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.836', '', TIMESTAMP '2024-05-21 13:44:08.836', NULL, NULL, NULL), -('__$GROUPID$__', '83da34d4-edbd-43e7-9517-e43e42ddac8b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.855', '', TIMESTAMP '2024-05-21 13:44:08.855', NULL, NULL, NULL), -('__$GROUPID$__', '23827d08-064a-4d69-b2da-12d49510117e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.875', '', TIMESTAMP '2024-05-21 13:44:08.875', NULL, NULL, NULL), -('__$GROUPID$__', 'f6af2e80-1a6d-4909-b45d-5f5909119238', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.894', '', TIMESTAMP '2024-05-21 13:44:08.894', NULL, NULL, NULL), -('__$GROUPID$__', '02e786e5-35b6-4338-b48d-ac11fae37955', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.914', '', TIMESTAMP '2024-05-21 13:44:08.914', NULL, NULL, NULL), -('__$GROUPID$__', '56b4328f-ac9e-499d-9859-1dee456afbbf', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.933', '', TIMESTAMP '2024-05-21 13:44:08.933', NULL, NULL, NULL), -('__$GROUPID$__', 'fe9fcd6c-7314-46a7-9148-72058ee6b82d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.952', '', TIMESTAMP '2024-05-21 13:44:08.952', NULL, NULL, NULL), -('__$GROUPID$__', 'f134965c-ecdb-49a4-a212-6f29c264c45f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.971', '', TIMESTAMP '2024-05-21 13:44:08.971', NULL, NULL, NULL), -('__$GROUPID$__', '49a66ac3-c7fd-4166-8410-b2566dc95d18', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:08.991', '', TIMESTAMP '2024-05-21 13:44:08.991', NULL, NULL, NULL), -('__$GROUPID$__', 'c634f49e-e79b-4b3b-b773-cb87518d76d8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.009', '', TIMESTAMP '2024-05-21 13:44:09.009', NULL, NULL, NULL), -('__$GROUPID$__', 'a738fa66-aaf8-4f8c-b7d7-9a23b5ab4587', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.026', '', TIMESTAMP '2024-05-21 13:44:09.026', NULL, NULL, NULL), -('__$GROUPID$__', '958df3ee-2473-48da-aa70-9a3cbb5ca6e0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.045', '', TIMESTAMP '2024-05-21 13:44:09.045', NULL, NULL, NULL), -('__$GROUPID$__', '5bcc53b8-9cea-4180-8548-a90996e68c4d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.064', '', TIMESTAMP '2024-05-21 13:44:09.064', NULL, NULL, NULL), -('__$GROUPID$__', '2af91908-e8bb-40e2-90c1-e3a0bc7fac5d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.082', '', TIMESTAMP '2024-05-21 13:44:09.082', NULL, NULL, NULL), -('__$GROUPID$__', '823fb554-6653-4174-9318-88507e7d08ad', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.101', '', TIMESTAMP '2024-05-21 13:44:09.101', NULL, NULL, NULL), -('__$GROUPID$__', 'd2b39feb-4896-4ed6-bdc5-0432dde0386b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.12', '', TIMESTAMP '2024-05-21 13:44:09.12', NULL, NULL, NULL), -('__$GROUPID$__', 'f1dfb32d-69e0-4910-8780-e8740ad25a5f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.138', '', TIMESTAMP '2024-05-21 13:44:09.138', NULL, NULL, NULL), -('__$GROUPID$__', '56122bb1-908d-43dd-af7c-bd5f7706f8bc', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.156', '', TIMESTAMP '2024-05-21 13:44:09.156', NULL, NULL, NULL), -('__$GROUPID$__', '99f38e82-d6ae-4705-897c-aa34ba56ba63', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.174', '', TIMESTAMP '2024-05-21 13:44:09.174', NULL, NULL, NULL), -('__$GROUPID$__', 'e02a2327-e8b2-4aa1-9d2c-44f27209fe53', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.192', '', TIMESTAMP '2024-05-21 13:44:09.192', NULL, NULL, NULL), -('__$GROUPID$__', '66d233ef-8eca-45e3-9af4-a51bdfc0a3c8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.211', '', TIMESTAMP '2024-05-21 13:44:09.211', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', 'e59225ed-e028-4c06-a24e-bf588a1179ea', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.229', '', TIMESTAMP '2024-05-21 13:44:09.229', NULL, NULL, NULL), -('__$GROUPID$__', 'a8925cb5-6ce8-4482-a811-9b788ca84e2f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.247', '', TIMESTAMP '2024-05-21 13:44:09.247', NULL, NULL, NULL), -('__$GROUPID$__', 'e5e052d7-66c8-431f-9fd2-d739465a316c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.265', '', TIMESTAMP '2024-05-21 13:44:09.265', NULL, NULL, NULL), -('__$GROUPID$__', 'af4b2c8f-3bd3-4e8f-9da5-bc82c5b050ad', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.283', '', TIMESTAMP '2024-05-21 13:44:09.283', NULL, NULL, NULL), -('__$GROUPID$__', 'e5bb5eff-e749-4b1a-9c0a-1f15cee0749b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.302', '', TIMESTAMP '2024-05-21 13:44:09.302', NULL, NULL, NULL), -('__$GROUPID$__', 'c4a5b9da-e4eb-4e74-98ed-8b6db63cbe4f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.319', '', TIMESTAMP '2024-05-21 13:44:09.319', NULL, NULL, NULL), -('__$GROUPID$__', '43c7fd6c-7883-4eae-a664-52a23acd5c5d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.337', '', TIMESTAMP '2024-05-21 13:44:09.337', NULL, NULL, NULL), -('__$GROUPID$__', '968f91ee-eaf5-427f-a5b1-ae9004df7cbf', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.356', '', TIMESTAMP '2024-05-21 13:44:09.356', NULL, NULL, NULL), -('__$GROUPID$__', '02fc72a9-8e32-4b23-b164-7262e054f6cf', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.374', '', TIMESTAMP '2024-05-21 13:44:09.374', NULL, NULL, NULL), -('__$GROUPID$__', '95c0a40b-e84c-4020-b70f-9ae681666e42', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.392', '', TIMESTAMP '2024-05-21 13:44:09.392', NULL, NULL, NULL), -('__$GROUPID$__', '7de98b38-9500-4ab0-b27b-27a75e936a3f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.41', '', TIMESTAMP '2024-05-21 13:44:09.41', NULL, NULL, NULL), -('__$GROUPID$__', 'd0c88133-ac6f-4b2a-8ee5-d2dab8baccc8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.428', '', TIMESTAMP '2024-05-21 13:44:09.428', NULL, NULL, NULL), -('__$GROUPID$__', 'b6588a0d-1b30-4758-96f7-c338d5446c7c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.446', '', TIMESTAMP '2024-05-21 13:44:09.446', NULL, NULL, NULL), -('__$GROUPID$__', '55cc0204-38c2-4da8-99a2-5aa51a36bceb', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.464', '', TIMESTAMP '2024-05-21 13:44:09.464', NULL, NULL, NULL), -('__$GROUPID$__', 'bce90e91-57be-4bc6-8faa-15255fe0da4d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.482', '', TIMESTAMP '2024-05-21 13:44:09.482', NULL, NULL, NULL), -('__$GROUPID$__', '5c765eb0-b17c-49a9-8b92-fbaca7e48669', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.502', '', TIMESTAMP '2024-05-21 13:44:09.502', NULL, NULL, NULL), -('__$GROUPID$__', 'ef9a81f7-0f69-4201-a4cd-05c8bddbc3d1', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.52', '', TIMESTAMP '2024-05-21 13:44:09.52', NULL, NULL, NULL), -('__$GROUPID$__', '00ac4c41-2bd9-49a5-bdbf-271d4c5d4e34', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.538', '', TIMESTAMP '2024-05-21 13:44:09.538', NULL, NULL, NULL), -('__$GROUPID$__', '3dc15ced-182d-42a7-9e1f-b81c3d33c918', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.556', '', TIMESTAMP '2024-05-21 13:44:09.556', NULL, NULL, NULL), -('__$GROUPID$__', '8de01028-3692-488a-9794-d0bdfe5ada27', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.574', '', TIMESTAMP '2024-05-21 13:44:09.574', NULL, NULL, NULL), -('__$GROUPID$__', '4c5d587c-9f31-47a4-ad24-dd63e30c4563', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.592', '', TIMESTAMP '2024-05-21 13:44:09.592', NULL, NULL, NULL), -('__$GROUPID$__', '36c778cb-bee0-44ac-b672-f9c492cfd942', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.611', '', TIMESTAMP '2024-05-21 13:44:09.611', NULL, NULL, NULL), -('__$GROUPID$__', 'bb8923ac-e5e1-4a2b-b168-1c7f47181563', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.628', '', TIMESTAMP '2024-05-21 13:44:09.628', NULL, NULL, NULL), -('__$GROUPID$__', 'fd3a568c-3c9d-400c-8e29-7774f7909a14', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.646', '', TIMESTAMP '2024-05-21 13:44:09.646', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '2be332a0-6265-401f-a83a-c79ab27a99d2', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.665', '', TIMESTAMP '2024-05-21 13:44:09.665', NULL, NULL, NULL), -('__$GROUPID$__', '2a8c6e71-a2f0-47e6-b3c7-fdab3a227287', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.684', '', TIMESTAMP '2024-05-21 13:44:09.684', NULL, NULL, NULL), -('__$GROUPID$__', 'd753630c-8b75-44b2-ad7c-99feb67db715', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.702', '', TIMESTAMP '2024-05-21 13:44:09.702', NULL, NULL, NULL), -('__$GROUPID$__', 'f30a27da-d6dd-45f2-b4dd-538567d3b85e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.72', '', TIMESTAMP '2024-05-21 13:44:09.72', NULL, NULL, NULL), -('__$GROUPID$__', '11346a7f-ada7-408e-8fd6-3093d6de5d2c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.738', '', TIMESTAMP '2024-05-21 13:44:09.738', NULL, NULL, NULL), -('__$GROUPID$__', '57accdb2-1313-404b-9f44-8ce877279239', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.756', '', TIMESTAMP '2024-05-21 13:44:09.756', NULL, NULL, NULL), -('__$GROUPID$__', 'cec5de79-34f7-4106-887a-87aa16af77b4', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.773', '', TIMESTAMP '2024-05-21 13:44:09.773', NULL, NULL, NULL), -('__$GROUPID$__', 'e3a33739-6820-4d5c-86e3-4252740377f8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.79', '', TIMESTAMP '2024-05-21 13:44:09.79', NULL, NULL, NULL), -('__$GROUPID$__', '370c0319-c2b2-44a2-93a5-3e6aac080b0f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.808', '', TIMESTAMP '2024-05-21 13:44:09.808', NULL, NULL, NULL), -('__$GROUPID$__', 'b6c2116e-3089-44fa-ac33-39e499cc1a12', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.827', '', TIMESTAMP '2024-05-21 13:44:09.827', NULL, NULL, NULL), -('__$GROUPID$__', '9e753e6f-f51c-4bc5-9f6b-cc23a6628122', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.844', '', TIMESTAMP '2024-05-21 13:44:09.844', NULL, NULL, NULL), -('__$GROUPID$__', '0a7e511b-0270-47d5-9241-b0f4ec6a144a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.863', '', TIMESTAMP '2024-05-21 13:44:09.863', NULL, NULL, NULL), -('__$GROUPID$__', '29c0c3be-daa1-4ca4-86aa-940d260c7b5f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.883', '', TIMESTAMP '2024-05-21 13:44:09.883', NULL, NULL, NULL), -('__$GROUPID$__', 'eb1a7349-2a33-4376-9a23-d39ca42cfdef', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.902', '', TIMESTAMP '2024-05-21 13:44:09.902', NULL, NULL, NULL), -('__$GROUPID$__', '12b84858-55b1-4920-8965-1f4965bfd38e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.92', '', TIMESTAMP '2024-05-21 13:44:09.92', NULL, NULL, NULL), -('__$GROUPID$__', '37cf6598-a78e-40f5-817a-96d36b1680a1', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.939', '', TIMESTAMP '2024-05-21 13:44:09.939', NULL, NULL, NULL), -('__$GROUPID$__', '87d3a3da-62a0-45be-a554-c03118a2adbb', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.959', '', TIMESTAMP '2024-05-21 13:44:09.959', NULL, NULL, NULL), -('__$GROUPID$__', 'd67c7bd1-19ed-40f5-8894-38fbce718963', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.977', '', TIMESTAMP '2024-05-21 13:44:09.977', NULL, NULL, NULL), -('__$GROUPID$__', '33b1caaa-568b-4d41-828e-bda67ba0469b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:09.995', '', TIMESTAMP '2024-05-21 13:44:09.995', NULL, NULL, NULL), -('__$GROUPID$__', '8b466e5e-cb0a-458d-8271-a7c231aa826f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.013', '', TIMESTAMP '2024-05-21 13:44:10.013', NULL, NULL, NULL), -('__$GROUPID$__', '577700b8-522d-4d4a-bb94-ca864be022c0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.03', '', TIMESTAMP '2024-05-21 13:44:10.03', NULL, NULL, NULL), -('__$GROUPID$__', '88ab211f-a195-41af-81ae-3ee08e54e929', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.047', '', TIMESTAMP '2024-05-21 13:44:10.047', NULL, NULL, NULL), -('__$GROUPID$__', 'da8ce3c4-59c7-4b75-aa4b-71aa08dc9ff8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.064', '', TIMESTAMP '2024-05-21 13:44:10.064', NULL, NULL, NULL), -('__$GROUPID$__', '2e5cef8a-ca19-41b9-8c85-e89785784f88', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.082', '', TIMESTAMP '2024-05-21 13:44:10.082', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '7138819c-9288-453d-914d-d8a1e89c9c70', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.1', '', TIMESTAMP '2024-05-21 13:44:10.1', NULL, NULL, NULL), -('__$GROUPID$__', 'e5065859-6775-4fd8-bb3e-c7fa780b9809', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.118', '', TIMESTAMP '2024-05-21 13:44:10.118', NULL, NULL, NULL), -('__$GROUPID$__', '0c7245e3-0d44-41a8-a0f0-8683a5f125fb', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.136', '', TIMESTAMP '2024-05-21 13:44:10.136', NULL, NULL, NULL), -('__$GROUPID$__', '9879f5dd-4831-4fa0-acd0-1e9fb522b24d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.155', '', TIMESTAMP '2024-05-21 13:44:10.155', NULL, NULL, NULL), -('__$GROUPID$__', '67c360a3-fe99-4987-9108-e05018d2411f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.173', '', TIMESTAMP '2024-05-21 13:44:10.173', NULL, NULL, NULL), -('__$GROUPID$__', '05d919b2-f8bb-4bfb-b59a-869600298646', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.198', '', TIMESTAMP '2024-05-21 13:44:10.198', NULL, NULL, NULL), -('__$GROUPID$__', '552cbd11-5eec-4b28-968e-9f881ab59b7e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.216', '', TIMESTAMP '2024-05-21 13:44:10.216', NULL, NULL, NULL), -('__$GROUPID$__', '6ad37e09-adc8-468a-ae8b-cb6548879fbf', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.235', '', TIMESTAMP '2024-05-21 13:44:10.235', NULL, NULL, NULL), -('__$GROUPID$__', 'a4ce5fd4-1f80-446f-baa0-488ac77491d3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.253', '', TIMESTAMP '2024-05-21 13:44:10.253', NULL, NULL, NULL), -('__$GROUPID$__', 'b79c6f2a-f3c3-4f9c-a14a-b81f3ac7ecb3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.271', '', TIMESTAMP '2024-05-21 13:44:10.271', NULL, NULL, NULL), -('__$GROUPID$__', '21b2c953-c97c-45d4-a286-c9eb0f614527', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.289', '', TIMESTAMP '2024-05-21 13:44:10.289', NULL, NULL, NULL), -('__$GROUPID$__', '736c5a83-68dd-4ada-a86a-9dfea24e9335', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.307', '', TIMESTAMP '2024-05-21 13:44:10.307', NULL, NULL, NULL), -('__$GROUPID$__', 'b6b1da2b-07b8-41cb-84a8-7f5e448e00b3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.325', '', TIMESTAMP '2024-05-21 13:44:10.325', NULL, NULL, NULL), -('__$GROUPID$__', '06b9370c-ffb5-4b34-8df0-b405e5887873', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.343', '', TIMESTAMP '2024-05-21 13:44:10.343', NULL, NULL, NULL), -('__$GROUPID$__', '40cb1ac5-a996-4622-aba4-5a99f72b8737', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.362', '', TIMESTAMP '2024-05-21 13:44:10.362', NULL, NULL, NULL), -('__$GROUPID$__', '4f898405-5192-4998-b7ab-c2704db77313', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.38', '', TIMESTAMP '2024-05-21 13:44:10.38', NULL, NULL, NULL), -('__$GROUPID$__', '7ba27aa5-a219-4db9-b884-b0b75ce33f62', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.398', '', TIMESTAMP '2024-05-21 13:44:10.398', NULL, NULL, NULL), -('__$GROUPID$__', '6c7babaf-7ad1-47a4-8fc2-1c6315285540', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.416', '', TIMESTAMP '2024-05-21 13:44:10.416', NULL, NULL, NULL), -('__$GROUPID$__', '0da00893-eaee-4176-a757-adc33356699e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.434', '', TIMESTAMP '2024-05-21 13:44:10.434', NULL, NULL, NULL), -('__$GROUPID$__', '9c75be78-fc8b-40a7-8379-8ab9c50d3337', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.452', '', TIMESTAMP '2024-05-21 13:44:10.452', NULL, NULL, NULL), -('__$GROUPID$__', 'cca559e6-6f2f-465a-9019-4308f92242c9', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.469', '', TIMESTAMP '2024-05-21 13:44:10.469', NULL, NULL, NULL), -('__$GROUPID$__', '71162691-728b-4b6b-a26f-64a6b2186477', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.487', '', TIMESTAMP '2024-05-21 13:44:10.487', NULL, NULL, NULL), -('__$GROUPID$__', 'dc9dd4f7-676a-4b2a-b787-7edfcd7255d3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.504', '', TIMESTAMP '2024-05-21 13:44:10.504', NULL, NULL, NULL), -('__$GROUPID$__', '512c44df-8476-496f-9ff7-2b5d0861df02', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.522', '', TIMESTAMP '2024-05-21 13:44:10.522', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '3deb1668-e037-49d9-b9d7-172c26027dd3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.54', '', TIMESTAMP '2024-05-21 13:44:10.54', NULL, NULL, NULL), -('__$GROUPID$__', '8b1e1e8f-fa75-4d45-a9bb-3248472f8d08', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.559', '', TIMESTAMP '2024-05-21 13:44:10.559', NULL, NULL, NULL), -('__$GROUPID$__', '842789bf-bb27-4768-95a4-86a7d91f71ac', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.576', '', TIMESTAMP '2024-05-21 13:44:10.576', NULL, NULL, NULL), -('__$GROUPID$__', '920ec291-c50c-41d1-8149-bd79ce367df3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.594', '', TIMESTAMP '2024-05-21 13:44:10.594', NULL, NULL, NULL), -('__$GROUPID$__', '2efc652a-8b0d-4730-8863-b3a93a56e464', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.611', '', TIMESTAMP '2024-05-21 13:44:10.611', NULL, NULL, NULL), -('__$GROUPID$__', 'ff18f86c-e877-4af7-800b-d67fdecfd38c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.628', '', TIMESTAMP '2024-05-21 13:44:10.628', NULL, NULL, NULL), -('__$GROUPID$__', '9a215999-e7ff-4ccb-9c20-110fc5764cf0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.646', '', TIMESTAMP '2024-05-21 13:44:10.646', NULL, NULL, NULL), -('__$GROUPID$__', 'cc8af7ec-2f85-4680-9bc9-f46f8874cd6a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.664', '', TIMESTAMP '2024-05-21 13:44:10.664', NULL, NULL, NULL), -('__$GROUPID$__', 'd0ca9e66-941c-446e-8e4d-d65a6f888a60', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.681', '', TIMESTAMP '2024-05-21 13:44:10.681', NULL, NULL, NULL), -('__$GROUPID$__', '7f17c414-ba3d-4fa4-8414-49c875ec5c9a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.698', '', TIMESTAMP '2024-05-21 13:44:10.698', NULL, NULL, NULL), -('__$GROUPID$__', '1dfc4f42-7bc6-498c-b82c-5bc184dd11bb', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.716', '', TIMESTAMP '2024-05-21 13:44:10.716', NULL, NULL, NULL), -('__$GROUPID$__', '289dd686-62af-4155-802f-5a3800a33200', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.734', '', TIMESTAMP '2024-05-21 13:44:10.734', NULL, NULL, NULL), -('__$GROUPID$__', '6807ed3c-e0dc-4bc4-9b43-b4a3618bfef6', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.751', '', TIMESTAMP '2024-05-21 13:44:10.751', NULL, NULL, NULL), -('__$GROUPID$__', '22fee339-c79b-48f5-b551-e52ea296231f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.768', '', TIMESTAMP '2024-05-21 13:44:10.768', NULL, NULL, NULL), -('__$GROUPID$__', '078a2e7a-c36c-4535-8ec9-3a587551453f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.786', '', TIMESTAMP '2024-05-21 13:44:10.786', NULL, NULL, NULL), -('__$GROUPID$__', 'd68394a2-4b59-4019-874a-a5cb5d31e49a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.804', '', TIMESTAMP '2024-05-21 13:44:10.804', NULL, NULL, NULL), -('__$GROUPID$__', '042363ea-a60a-4858-8a18-867e062519cd', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.821', '', TIMESTAMP '2024-05-21 13:44:10.821', NULL, NULL, NULL), -('__$GROUPID$__', 'c7a55d61-355f-45e6-a3ee-200f4822f0ff', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.839', '', TIMESTAMP '2024-05-21 13:44:10.839', NULL, NULL, NULL), -('__$GROUPID$__', '87c1561d-a983-4d1f-836f-30b72a8f328b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.857', '', TIMESTAMP '2024-05-21 13:44:10.857', NULL, NULL, NULL), -('__$GROUPID$__', 'b85e6a29-cff3-4c3f-b2c0-c054902fc897', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.874', '', TIMESTAMP '2024-05-21 13:44:10.874', NULL, NULL, NULL), -('__$GROUPID$__', 'a9986925-e8ad-44a1-a0cb-c856ecebccf8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.892', '', TIMESTAMP '2024-05-21 13:44:10.892', NULL, NULL, NULL), -('__$GROUPID$__', '39ac9578-e15b-4f4e-aef3-e179626ec255', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.909', '', TIMESTAMP '2024-05-21 13:44:10.909', NULL, NULL, NULL), -('__$GROUPID$__', 'ccaf2415-48b6-4518-9583-83d8bf5882c0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.927', '', TIMESTAMP '2024-05-21 13:44:10.927', NULL, NULL, NULL), -('__$GROUPID$__', '7916ae8c-b03b-4f0a-a293-f5881ada58cd', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.944', '', TIMESTAMP '2024-05-21 13:44:10.944', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', 'ab4c08b6-bac1-4ea3-a024-7793c737f010', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.962', '', TIMESTAMP '2024-05-21 13:44:10.962', NULL, NULL, NULL), -('__$GROUPID$__', '5f7e9f59-9597-4b8a-94ec-fa4a1093c95e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.98', '', TIMESTAMP '2024-05-21 13:44:10.98', NULL, NULL, NULL), -('__$GROUPID$__', '7c4ce466-ab6e-4bd3-b962-6351685c14ed', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:10.998', '', TIMESTAMP '2024-05-21 13:44:10.998', NULL, NULL, NULL), -('__$GROUPID$__', '3fcdc136-8bed-4fd7-9c0f-7508dd6ce6fc', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.016', '', TIMESTAMP '2024-05-21 13:44:11.016', NULL, NULL, NULL), -('__$GROUPID$__', '360b4cc6-e1fa-40ba-82d1-766c2ac5942d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.034', '', TIMESTAMP '2024-05-21 13:44:11.034', NULL, NULL, NULL), -('__$GROUPID$__', 'ab4cf38b-5338-420a-834c-f9249e017ad9', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.051', '', TIMESTAMP '2024-05-21 13:44:11.051', NULL, NULL, NULL), -('__$GROUPID$__', '427f6997-c3f2-479e-877a-6e7af0c944c6', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.069', '', TIMESTAMP '2024-05-21 13:44:11.069', NULL, NULL, NULL), -('__$GROUPID$__', '8b7fd5cc-f596-498b-b518-0ecbe6133384', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.086', '', TIMESTAMP '2024-05-21 13:44:11.086', NULL, NULL, NULL), -('__$GROUPID$__', 'caef2174-b0f3-4cd0-afd4-970239ccdb73', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.103', '', TIMESTAMP '2024-05-21 13:44:11.103', NULL, NULL, NULL), -('__$GROUPID$__', '2f02c1ee-bf0d-46e4-a662-9679af1d3125', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.124', '', TIMESTAMP '2024-05-21 13:44:11.124', NULL, NULL, NULL), -('__$GROUPID$__', '55517188-d547-4107-91f6-c7c72e1d4bcd', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.142', '', TIMESTAMP '2024-05-21 13:44:11.142', NULL, NULL, NULL), -('__$GROUPID$__', 'af9b3b9a-7976-444a-9756-ace544ed0db7', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.16', '', TIMESTAMP '2024-05-21 13:44:11.16', NULL, NULL, NULL), -('__$GROUPID$__', 'bfb05c1a-0872-4e46-981b-a7453f3706dd', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.179', '', TIMESTAMP '2024-05-21 13:44:11.179', NULL, NULL, NULL), -('__$GROUPID$__', 'bd8184c9-b38c-4d61-b447-b9d59798370b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.197', '', TIMESTAMP '2024-05-21 13:44:11.197', NULL, NULL, NULL), -('__$GROUPID$__', '1a7ff5a0-5002-4da9-adab-173f67836fcf', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.215', '', TIMESTAMP '2024-05-21 13:44:11.215', NULL, NULL, NULL), -('__$GROUPID$__', '63b28a80-4101-46be-a07f-7040f382548e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.232', '', TIMESTAMP '2024-05-21 13:44:11.232', NULL, NULL, NULL), -('__$GROUPID$__', '57f40ab5-11a0-47b3-afae-70bcb59f7cc8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.249', '', TIMESTAMP '2024-05-21 13:44:11.249', NULL, NULL, NULL), -('__$GROUPID$__', '069d9973-745c-4f22-8bed-ebd0ccc1a60c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.266', '', TIMESTAMP '2024-05-21 13:44:11.266', NULL, NULL, NULL), -('__$GROUPID$__', 'cf5b7572-4ee2-4dd6-bf33-d361ec839e74', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.283', '', TIMESTAMP '2024-05-21 13:44:11.283', NULL, NULL, NULL), -('__$GROUPID$__', 'd7960706-52c2-4b40-9dc3-19b26b22b286', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.301', '', TIMESTAMP '2024-05-21 13:44:11.301', NULL, NULL, NULL), -('__$GROUPID$__', '43e8233a-c6ab-4117-9622-e223ebe12b88', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.318', '', TIMESTAMP '2024-05-21 13:44:11.318', NULL, NULL, NULL), -('__$GROUPID$__', '7ef854ce-ef87-4eee-a9f5-352dfed0d6ce', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.335', '', TIMESTAMP '2024-05-21 13:44:11.335', NULL, NULL, NULL), -('__$GROUPID$__', 'd1f82907-b385-4cd3-acb6-fec38008a65b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.353', '', TIMESTAMP '2024-05-21 13:44:11.353', NULL, NULL, NULL), -('__$GROUPID$__', '5bcdf0f0-ef16-4f02-bd57-a15476e24daf', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.383', '', TIMESTAMP '2024-05-21 13:44:11.383', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '909db1d2-0255-4410-a2c2-869a5f5f9657', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.404', '', TIMESTAMP '2024-05-21 13:44:11.404', NULL, NULL, NULL), -('__$GROUPID$__', 'e4c835b8-9943-4f76-848c-0825708ca4fd', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.422', '', TIMESTAMP '2024-05-21 13:44:11.422', NULL, NULL, NULL), -('__$GROUPID$__', '95cf2813-a181-42fa-9a80-772e95d15098', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.44', '', TIMESTAMP '2024-05-21 13:44:11.44', NULL, NULL, NULL), -('__$GROUPID$__', 'bb45eac7-3fa6-4ad4-9fc7-6089b3bc3a4b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.458', '', TIMESTAMP '2024-05-21 13:44:11.458', NULL, NULL, NULL), -('__$GROUPID$__', 'e9c910ef-f4f3-402c-9b25-e643f3e2a8fa', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.475', '', TIMESTAMP '2024-05-21 13:44:11.475', NULL, NULL, NULL), -('__$GROUPID$__', '30414be3-b22a-4e02-a412-39fc2f13efe9', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.493', '', TIMESTAMP '2024-05-21 13:44:11.493', NULL, NULL, NULL), -('__$GROUPID$__', '7d7afb48-c145-4468-b8c1-12f7cc92519d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.51', '', TIMESTAMP '2024-05-21 13:44:11.51', NULL, NULL, NULL), -('__$GROUPID$__', 'fd46c9b1-bfed-4ea2-aea4-7c480de3d173', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.528', '', TIMESTAMP '2024-05-21 13:44:11.528', NULL, NULL, NULL), -('__$GROUPID$__', '037e4974-1990-4b2a-80e8-bdfbe9e3df43', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.546', '', TIMESTAMP '2024-05-21 13:44:11.546', NULL, NULL, NULL), -('__$GROUPID$__', '988bcf85-2200-4b00-bada-e28eb3bda734', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.564', '', TIMESTAMP '2024-05-21 13:44:11.564', NULL, NULL, NULL), -('__$GROUPID$__', '53411b99-e883-429f-b88c-4bfd0dc914fe', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.583', '', TIMESTAMP '2024-05-21 13:44:11.583', NULL, NULL, NULL), -('__$GROUPID$__', '597eb976-bc6a-4c48-a18c-38ff526b35b7', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.602', '', TIMESTAMP '2024-05-21 13:44:11.602', NULL, NULL, NULL), -('__$GROUPID$__', '7c46197f-8645-476d-95dd-0843079435ac', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.62', '', TIMESTAMP '2024-05-21 13:44:11.62', NULL, NULL, NULL), -('__$GROUPID$__', '65346231-4eff-4ae0-9cfd-a8b4c17a0569', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.639', '', TIMESTAMP '2024-05-21 13:44:11.639', NULL, NULL, NULL), -('__$GROUPID$__', 'c55ff4bd-db20-4e69-a938-e9d0c5ff1600', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.658', '', TIMESTAMP '2024-05-21 13:44:11.658', NULL, NULL, NULL), -('__$GROUPID$__', '910f9b63-e0e6-436a-b6b2-7243162c4757', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.676', '', TIMESTAMP '2024-05-21 13:44:11.676', NULL, NULL, NULL), -('__$GROUPID$__', '3117552f-faca-4507-8e4d-c2a9549df81b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.694', '', TIMESTAMP '2024-05-21 13:44:11.694', NULL, NULL, NULL), -('__$GROUPID$__', 'aef64371-3e18-401b-a7f9-40b59abefa23', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.712', '', TIMESTAMP '2024-05-21 13:44:11.712', NULL, NULL, NULL), -('__$GROUPID$__', '300f24b2-a3ae-481f-b203-520c0b4f6ac9', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.732', '', TIMESTAMP '2024-05-21 13:44:11.732', NULL, NULL, NULL), -('__$GROUPID$__', 'e8ee49b4-dfd0-4fbf-b85b-ae553691ad6c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.75', '', TIMESTAMP '2024-05-21 13:44:11.75', NULL, NULL, NULL), -('__$GROUPID$__', '9a0122e7-83f1-42ca-88ac-08cb437af10c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.768', '', TIMESTAMP '2024-05-21 13:44:11.768', NULL, NULL, NULL), -('__$GROUPID$__', '9882d2b1-9bb6-4f70-ad7c-167b83f4d6dd', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.786', '', TIMESTAMP '2024-05-21 13:44:11.786', NULL, NULL, NULL), -('__$GROUPID$__', 'eaa78f81-543a-4240-bab2-bd7a63c7a15c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.804', '', TIMESTAMP '2024-05-21 13:44:11.804', NULL, NULL, NULL), -('__$GROUPID$__', '82d624a9-ae0f-42d6-ab5e-f7421e1ff767', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.821', '', TIMESTAMP '2024-05-21 13:44:11.821', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', 'f8f4c604-fcc2-4cd2-adb8-6bc55c4056d6', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.839', '', TIMESTAMP '2024-05-21 13:44:11.839', NULL, NULL, NULL), -('__$GROUPID$__', '6bc79db0-c7fd-4255-ac49-77d7eb18d44f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.858', '', TIMESTAMP '2024-05-21 13:44:11.858', NULL, NULL, NULL), -('__$GROUPID$__', '36b2abdf-202b-4ae9-8202-a624f35606f6', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.876', '', TIMESTAMP '2024-05-21 13:44:11.876', NULL, NULL, NULL), -('__$GROUPID$__', '95e7b84b-c0f5-4ac6-ab3a-798ac22fc3fa', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.893', '', TIMESTAMP '2024-05-21 13:44:11.893', NULL, NULL, NULL), -('__$GROUPID$__', '23cb1da9-647a-45e5-8d58-12f4a05c5c64', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.911', '', TIMESTAMP '2024-05-21 13:44:11.911', NULL, NULL, NULL), -('__$GROUPID$__', 'fab1e201-b99b-486f-b5ba-3ddfd85a0a2f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.928', '', TIMESTAMP '2024-05-21 13:44:11.928', NULL, NULL, NULL), -('__$GROUPID$__', '8a3e2e94-5daa-47de-8e3d-aa5a54d61010', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.947', '', TIMESTAMP '2024-05-21 13:44:11.947', NULL, NULL, NULL), -('__$GROUPID$__', 'f453ff17-e75e-4fa8-95fa-b38b1cc8d34b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.964', '', TIMESTAMP '2024-05-21 13:44:11.964', NULL, NULL, NULL), -('__$GROUPID$__', '79c97043-811f-4add-9d43-cf06d36cf25b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:11.983', '', TIMESTAMP '2024-05-21 13:44:11.983', NULL, NULL, NULL), -('__$GROUPID$__', '3b734219-262b-4343-b14a-4d4ce28239c3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.002', '', TIMESTAMP '2024-05-21 13:44:12.002', NULL, NULL, NULL), -('__$GROUPID$__', 'ed77f101-ba41-4cf4-a3d0-93ea8049c1ca', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.018', '', TIMESTAMP '2024-05-21 13:44:12.018', NULL, NULL, NULL), -('__$GROUPID$__', '3feea024-8c3f-4e77-9275-4f060a1cd7e6', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.036', '', TIMESTAMP '2024-05-21 13:44:12.036', NULL, NULL, NULL), -('__$GROUPID$__', '45abf0eb-d175-4e68-900d-62420b9dc66a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.054', '', TIMESTAMP '2024-05-21 13:44:12.054', NULL, NULL, NULL), -('__$GROUPID$__', '65a4454f-8b50-458f-a631-33d79110bc5c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.073', '', TIMESTAMP '2024-05-21 13:44:12.073', NULL, NULL, NULL), -('__$GROUPID$__', '1584ac6a-cab1-45f9-8fe7-cafacdd20d77', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.09', '', TIMESTAMP '2024-05-21 13:44:12.09', NULL, NULL, NULL), -('__$GROUPID$__', '34119afc-6402-4f65-963b-e22aa5619c64', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.109', '', TIMESTAMP '2024-05-21 13:44:12.109', NULL, NULL, NULL), -('__$GROUPID$__', 'bd4274e1-e1d2-46a1-9326-8191f7dbfaeb', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.127', '', TIMESTAMP '2024-05-21 13:44:12.127', NULL, NULL, NULL), -('__$GROUPID$__', '84017e0c-c0c6-4321-8e6a-ac81a979a092', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.144', '', TIMESTAMP '2024-05-21 13:44:12.144', NULL, NULL, NULL), -('__$GROUPID$__', 'e114fe7c-c529-4ef4-acbc-e3e839400df7', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.161', '', TIMESTAMP '2024-05-21 13:44:12.161', NULL, NULL, NULL), -('__$GROUPID$__', 'd81aa84b-c2ab-41f0-8ad3-0cd7310fcc6d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.18', '', TIMESTAMP '2024-05-21 13:44:12.18', NULL, NULL, NULL), -('__$GROUPID$__', 'a2a11a7e-3bea-4545-a3ba-8d2d01defaf0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.2', '', TIMESTAMP '2024-05-21 13:44:12.2', NULL, NULL, NULL), -('__$GROUPID$__', 'fa5addbe-56db-4605-86f0-bd455f2f82c9', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.218', '', TIMESTAMP '2024-05-21 13:44:12.218', NULL, NULL, NULL), -('__$GROUPID$__', '48b79be9-094f-4361-b646-99ecd6b431b5', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.236', '', TIMESTAMP '2024-05-21 13:44:12.236', NULL, NULL, NULL), -('__$GROUPID$__', 'e42b2e1d-6aaa-4345-8286-b387c0959cf6', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.255', '', TIMESTAMP '2024-05-21 13:44:12.255', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '46ae31ab-45e8-4110-afef-eb8e0cb3a4dd', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.275', '', TIMESTAMP '2024-05-21 13:44:12.275', NULL, NULL, NULL), -('__$GROUPID$__', '67d7cb7a-e81b-467f-b145-8919cd0adc2b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.292', '', TIMESTAMP '2024-05-21 13:44:12.292', NULL, NULL, NULL), -('__$GROUPID$__', 'cb1ba872-39c2-4f99-8749-4c4b19cf9140', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.31', '', TIMESTAMP '2024-05-21 13:44:12.31', NULL, NULL, NULL), -('__$GROUPID$__', 'b52544b0-fc49-4d30-a6a2-90c927678927', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.328', '', TIMESTAMP '2024-05-21 13:44:12.328', NULL, NULL, NULL), -('__$GROUPID$__', 'e6fc7cf5-aca0-42f2-bced-2c9b90a677dc', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.345', '', TIMESTAMP '2024-05-21 13:44:12.345', NULL, NULL, NULL), -('__$GROUPID$__', '8d6de020-36e4-4be3-bd8d-752822a6d30a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.363', '', TIMESTAMP '2024-05-21 13:44:12.363', NULL, NULL, NULL), -('__$GROUPID$__', 'da5a33d8-0c17-4016-a566-4a56a64c5515', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.381', '', TIMESTAMP '2024-05-21 13:44:12.381', NULL, NULL, NULL), -('__$GROUPID$__', 'b8e82dfa-d59f-4a62-862e-2ab74252698c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.399', '', TIMESTAMP '2024-05-21 13:44:12.399', NULL, NULL, NULL), -('__$GROUPID$__', '6ad4ad04-0f41-4ef9-a87d-73c85b3c7f0e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.416', '', TIMESTAMP '2024-05-21 13:44:12.416', NULL, NULL, NULL), -('__$GROUPID$__', 'd1dc8d43-32a9-4d4c-92b2-c1af5da7a673', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.434', '', TIMESTAMP '2024-05-21 13:44:12.434', NULL, NULL, NULL), -('__$GROUPID$__', '8f01cc2d-9c5f-4fde-84dd-eb6edcc372a8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.452', '', TIMESTAMP '2024-05-21 13:44:12.452', NULL, NULL, NULL), -('__$GROUPID$__', '165fea88-cfd4-47cb-a142-4bd4d271e4e0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.471', '', TIMESTAMP '2024-05-21 13:44:12.471', NULL, NULL, NULL), -('__$GROUPID$__', '78cd74c8-f3ab-4b79-8deb-777e0d46348b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.49', '', TIMESTAMP '2024-05-21 13:44:12.49', NULL, NULL, NULL), -('__$GROUPID$__', '06e3086d-e2a0-4f37-aa5a-956236e7563f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.509', '', TIMESTAMP '2024-05-21 13:44:12.509', NULL, NULL, NULL), -('__$GROUPID$__', '1f87caef-caba-4e93-8916-90c3ecb3cfb8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.527', '', TIMESTAMP '2024-05-21 13:44:12.527', NULL, NULL, NULL), -('__$GROUPID$__', 'f569427a-3e7a-4861-ab8a-994d61d091bb', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.545', '', TIMESTAMP '2024-05-21 13:44:12.545', NULL, NULL, NULL), -('__$GROUPID$__', '009c89fa-931d-4579-b44d-a677c53af318', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.564', '', TIMESTAMP '2024-05-21 13:44:12.564', NULL, NULL, NULL), -('__$GROUPID$__', '3f27c093-14ff-414b-baff-a40446ee3602', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.583', '', TIMESTAMP '2024-05-21 13:44:12.583', NULL, NULL, NULL), -('__$GROUPID$__', 'c904eb58-4947-41eb-bb8d-37392972af32', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.601', '', TIMESTAMP '2024-05-21 13:44:12.601', NULL, NULL, NULL), -('__$GROUPID$__', '624a90e0-3b3c-4719-98d6-dec1a8688486', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.62', '', TIMESTAMP '2024-05-21 13:44:12.62', NULL, NULL, NULL), -('__$GROUPID$__', '0be4c27a-5c0c-43c8-a88f-9413cd30ad0a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.639', '', TIMESTAMP '2024-05-21 13:44:12.639', NULL, NULL, NULL), -('__$GROUPID$__', '8e4134f0-03fe-46ba-ba0d-eb39b9057971', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.657', '', TIMESTAMP '2024-05-21 13:44:12.657', NULL, NULL, NULL), -('__$GROUPID$__', 'a8ab1caa-2f66-4834-a272-3369916d04a8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.675', '', TIMESTAMP '2024-05-21 13:44:12.675', NULL, NULL, NULL), -('__$GROUPID$__', 'e0bf3ec2-aab0-44a4-a7ef-e872561bd5d2', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.694', '', TIMESTAMP '2024-05-21 13:44:12.694', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '3b1bf2b1-795a-4960-bb51-5bcc4d436791', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.712', '', TIMESTAMP '2024-05-21 13:44:12.712', NULL, NULL, NULL), -('__$GROUPID$__', 'ac5e7426-3502-4abe-a764-1319fedd6f36', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.731', '', TIMESTAMP '2024-05-21 13:44:12.731', NULL, NULL, NULL), -('__$GROUPID$__', '5390fd3e-18a4-4230-b463-e5b218cb4bb0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.749', '', TIMESTAMP '2024-05-21 13:44:12.749', NULL, NULL, NULL), -('__$GROUPID$__', '84c24328-93c7-4617-954b-5cecff70b124', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.768', '', TIMESTAMP '2024-05-21 13:44:12.768', NULL, NULL, NULL), -('__$GROUPID$__', '18e652f1-4655-49df-a804-d1cfd0ba220d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.785', '', TIMESTAMP '2024-05-21 13:44:12.785', NULL, NULL, NULL), -('__$GROUPID$__', '600ade99-cb41-410a-8b13-3cfbbb05c1ce', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.803', '', TIMESTAMP '2024-05-21 13:44:12.803', NULL, NULL, NULL), -('__$GROUPID$__', 'ed184d52-95df-4792-b1bf-0b43ba6977fb', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.82', '', TIMESTAMP '2024-05-21 13:44:12.82', NULL, NULL, NULL), -('__$GROUPID$__', 'ee5e2b8b-73f3-487f-85cc-9c4ac7835279', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.838', '', TIMESTAMP '2024-05-21 13:44:12.838', NULL, NULL, NULL), -('__$GROUPID$__', '9de6ff4a-ab7e-4fef-906d-40b78fb04c93', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.856', '', TIMESTAMP '2024-05-21 13:44:12.856', NULL, NULL, NULL), -('__$GROUPID$__', 'f6e8152b-336e-41d5-b6d7-7c2240568c14', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.875', '', TIMESTAMP '2024-05-21 13:44:12.875', NULL, NULL, NULL), -('__$GROUPID$__', 'b25be83a-1c5d-4c60-b3a2-ac5b91095476', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.893', '', TIMESTAMP '2024-05-21 13:44:12.893', NULL, NULL, NULL), -('__$GROUPID$__', 'e31fd8ab-4751-4e0c-9490-6ab116d11b6f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.91', '', TIMESTAMP '2024-05-21 13:44:12.91', NULL, NULL, NULL), -('__$GROUPID$__', 'dc9e71f1-5a74-4afd-815e-6bdd7ac16c70', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.927', '', TIMESTAMP '2024-05-21 13:44:12.927', NULL, NULL, NULL), -('__$GROUPID$__', 'cc213bcc-bac9-41cd-957e-5d0fb316414f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.944', '', TIMESTAMP '2024-05-21 13:44:12.944', NULL, NULL, NULL), -('__$GROUPID$__', '1675023a-4a00-4ed6-881e-e4f7a2610c87', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.961', '', TIMESTAMP '2024-05-21 13:44:12.961', NULL, NULL, NULL), -('__$GROUPID$__', 'fa06f738-5837-455a-a97a-8ce66c37790c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.979', '', TIMESTAMP '2024-05-21 13:44:12.979', NULL, NULL, NULL), -('__$GROUPID$__', '204fc181-ebfb-4852-9fc0-247145e4d9ae', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:12.996', '', TIMESTAMP '2024-05-21 13:44:12.996', NULL, NULL, NULL), -('__$GROUPID$__', '4800565b-5a70-4807-b5b0-2a58376d5367', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.014', '', TIMESTAMP '2024-05-21 13:44:13.014', NULL, NULL, NULL), -('__$GROUPID$__', 'c7afa961-326b-4eac-9080-1c998676a039', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.033', '', TIMESTAMP '2024-05-21 13:44:13.033', NULL, NULL, NULL), -('__$GROUPID$__', '36b7ba34-3541-42f6-9151-fc4ca28513a1', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.05', '', TIMESTAMP '2024-05-21 13:44:13.05', NULL, NULL, NULL), -('__$GROUPID$__', '0024efc3-c6ed-4075-bfad-3d80c8d5d9f7', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.068', '', TIMESTAMP '2024-05-21 13:44:13.068', NULL, NULL, NULL), -('__$GROUPID$__', '3bd5a40e-aab9-46bf-96c4-87a0a67cd1c3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.085', '', TIMESTAMP '2024-05-21 13:44:13.085', NULL, NULL, NULL), -('__$GROUPID$__', 'c9f53613-2a8f-4add-bc6a-6223b3450fa5', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.103', '', TIMESTAMP '2024-05-21 13:44:13.103', NULL, NULL, NULL), -('__$GROUPID$__', '68f72a07-7cd4-4ac7-a159-bfccecb23044', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.12', '', TIMESTAMP '2024-05-21 13:44:13.12', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '49cba218-00b5-4680-8f6a-dee1fe99201a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.138', '', TIMESTAMP '2024-05-21 13:44:13.138', NULL, NULL, NULL), -('__$GROUPID$__', 'e0ca8ef6-cfd3-46ca-8976-09343c76c9ea', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.156', '', TIMESTAMP '2024-05-21 13:44:13.156', NULL, NULL, NULL), -('__$GROUPID$__', '65cb2d46-7ea4-4b0d-9bd0-ca26f4dcfa4c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.173', '', TIMESTAMP '2024-05-21 13:44:13.173', NULL, NULL, NULL), -('__$GROUPID$__', 'fcdcdb71-fb3b-466e-96a1-f6e85d070183', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.191', '', TIMESTAMP '2024-05-21 13:44:13.191', NULL, NULL, NULL), -('__$GROUPID$__', 'acad2b63-a8e0-45d6-8689-b1848b08b096', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.208', '', TIMESTAMP '2024-05-21 13:44:13.208', NULL, NULL, NULL), -('__$GROUPID$__', 'd960f6fb-cd0c-49b3-a17a-278552418e1f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.226', '', TIMESTAMP '2024-05-21 13:44:13.226', NULL, NULL, NULL), -('__$GROUPID$__', 'a810eccf-6814-46c7-be48-b23dbd17a1c8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.243', '', TIMESTAMP '2024-05-21 13:44:13.243', NULL, NULL, NULL), -('__$GROUPID$__', '053897e2-6ec3-4ad1-8677-5dc07a691f05', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.261', '', TIMESTAMP '2024-05-21 13:44:13.261', NULL, NULL, NULL), -('__$GROUPID$__', '464b33c4-1b3d-401f-852d-79bd32f20ed9', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.278', '', TIMESTAMP '2024-05-21 13:44:13.278', NULL, NULL, NULL), -('__$GROUPID$__', '761a8b68-0817-4bd9-ae72-0dcf6aac4460', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.296', '', TIMESTAMP '2024-05-21 13:44:13.296', NULL, NULL, NULL), -('__$GROUPID$__', '57c6f958-1df4-4ff3-9505-1f80a58cdd8b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.313', '', TIMESTAMP '2024-05-21 13:44:13.313', NULL, NULL, NULL), -('__$GROUPID$__', 'f26a2eae-9f1f-4895-a4f2-7f83bb3529ab', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.329', '', TIMESTAMP '2024-05-21 13:44:13.329', NULL, NULL, NULL), -('__$GROUPID$__', '8b7da745-0398-42a6-9c1e-4a484bd98fab', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.347', '', TIMESTAMP '2024-05-21 13:44:13.347', NULL, NULL, NULL), -('__$GROUPID$__', 'e9a4f647-356b-4db5-b570-abe9b098a63a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.364', '', TIMESTAMP '2024-05-21 13:44:13.364', NULL, NULL, NULL), -('__$GROUPID$__', 'eb30a8f5-506b-4611-ba43-0be606e83b61', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.38', '', TIMESTAMP '2024-05-21 13:44:13.38', NULL, NULL, NULL), -('__$GROUPID$__', '6e35027d-36e9-437e-b585-27ced94c5dbf', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.397', '', TIMESTAMP '2024-05-21 13:44:13.397', NULL, NULL, NULL), -('__$GROUPID$__', 'eff5ce7c-c4a0-4140-8d69-4ab03c026518', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.414', '', TIMESTAMP '2024-05-21 13:44:13.414', NULL, NULL, NULL), -('__$GROUPID$__', 'f94d0264-61fc-41df-9e12-d158a5e48e3e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.433', '', TIMESTAMP '2024-05-21 13:44:13.433', NULL, NULL, NULL), -('__$GROUPID$__', '20451ebe-04f8-4d16-b6c9-f9b41fd8441c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.451', '', TIMESTAMP '2024-05-21 13:44:13.451', NULL, NULL, NULL), -('__$GROUPID$__', 'ea2ae8be-aea4-4384-adaf-82800af6d3b6', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.468', '', TIMESTAMP '2024-05-21 13:44:13.468', NULL, NULL, NULL), -('__$GROUPID$__', 'ab24bf8a-c6e1-43e4-b12e-b52d6d0c1c79', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.485', '', TIMESTAMP '2024-05-21 13:44:13.485', NULL, NULL, NULL), -('__$GROUPID$__', 'd4306af5-ee0f-47db-844d-9df361280b9b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.503', '', TIMESTAMP '2024-05-21 13:44:13.503', NULL, NULL, NULL), -('__$GROUPID$__', 'ef5e1f49-c669-48cb-881b-67caec328c2d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.52', '', TIMESTAMP '2024-05-21 13:44:13.52', NULL, NULL, NULL), -('__$GROUPID$__', '8866a22d-ab2c-44d6-9bce-e1816de96b7a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.537', '', TIMESTAMP '2024-05-21 13:44:13.537', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '25503ea1-d78f-4f18-b704-d12b82f5690f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.554', '', TIMESTAMP '2024-05-21 13:44:13.554', NULL, NULL, NULL), -('__$GROUPID$__', '416df12a-c14b-426b-9d7d-a17809165e8d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.572', '', TIMESTAMP '2024-05-21 13:44:13.572', NULL, NULL, NULL), -('__$GROUPID$__', 'e5df1f32-325d-4f80-8be6-9b8a07b2adfe', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.589', '', TIMESTAMP '2024-05-21 13:44:13.589', NULL, NULL, NULL), -('__$GROUPID$__', 'c9f3fae9-7e08-409e-a2f8-775183336aae', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.607', '', TIMESTAMP '2024-05-21 13:44:13.607', NULL, NULL, NULL), -('__$GROUPID$__', 'ed8df70a-70ad-492c-b086-e1e79fab404a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.624', '', TIMESTAMP '2024-05-21 13:44:13.624', NULL, NULL, NULL), -('__$GROUPID$__', '36c8cfbc-131d-40f5-8587-6a830508eded', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.642', '', TIMESTAMP '2024-05-21 13:44:13.642', NULL, NULL, NULL), -('__$GROUPID$__', '71f94636-aeaf-4acf-8a97-eb4641eb264c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.66', '', TIMESTAMP '2024-05-21 13:44:13.66', NULL, NULL, NULL), -('__$GROUPID$__', 'd76d0cf5-b0c5-4ca2-a041-bd5eaefd6903', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.678', '', TIMESTAMP '2024-05-21 13:44:13.678', NULL, NULL, NULL), -('__$GROUPID$__', 'a5a6e1e6-bb70-4191-8eeb-b5f8d0021018', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.695', '', TIMESTAMP '2024-05-21 13:44:13.695', NULL, NULL, NULL), -('__$GROUPID$__', '8cde49ee-8297-47da-a7a2-f66c8cd794aa', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.712', '', TIMESTAMP '2024-05-21 13:44:13.712', NULL, NULL, NULL), -('__$GROUPID$__', '21dad5d1-4b86-4299-acb5-e5173248967d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.729', '', TIMESTAMP '2024-05-21 13:44:13.729', NULL, NULL, NULL), -('__$GROUPID$__', '3f03126c-63e4-402a-97fc-bf3418bf30da', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.747', '', TIMESTAMP '2024-05-21 13:44:13.747', NULL, NULL, NULL), -('__$GROUPID$__', '3659f9fb-962e-4f12-9a13-7f33ba60de8c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.765', '', TIMESTAMP '2024-05-21 13:44:13.765', NULL, NULL, NULL), -('__$GROUPID$__', '020bf940-7f99-49d3-8e50-3917cc3975c9', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.782', '', TIMESTAMP '2024-05-21 13:44:13.782', NULL, NULL, NULL), -('__$GROUPID$__', '6ce69a0c-2bef-4aec-8831-86acef1385cc', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.799', '', TIMESTAMP '2024-05-21 13:44:13.799', NULL, NULL, NULL), -('__$GROUPID$__', 'b3dd03f1-c0e0-4383-aeb3-49d93cae318e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.817', '', TIMESTAMP '2024-05-21 13:44:13.817', NULL, NULL, NULL), -('__$GROUPID$__', '6bafc6d3-94c1-4968-9ce7-0ef24ae8e7e8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.834', '', TIMESTAMP '2024-05-21 13:44:13.834', NULL, NULL, NULL), -('__$GROUPID$__', '31eebb37-cd87-47b8-b908-83da79243c76', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.852', '', TIMESTAMP '2024-05-21 13:44:13.852', NULL, NULL, NULL), -('__$GROUPID$__', 'c6afa0e3-9b57-43b2-8394-3743bc05eb2e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.869', '', TIMESTAMP '2024-05-21 13:44:13.869', NULL, NULL, NULL), -('__$GROUPID$__', '42810b4e-db5f-44e6-aac4-0a98054ba081', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.886', '', TIMESTAMP '2024-05-21 13:44:13.886', NULL, NULL, NULL), -('__$GROUPID$__', '6e3cb0a4-3863-4c3a-8d4c-cf1a9b3b8d9a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.903', '', TIMESTAMP '2024-05-21 13:44:13.903', NULL, NULL, NULL), -('__$GROUPID$__', '2cfe6888-b96b-40b4-ab0e-d2595119abd4', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.921', '', TIMESTAMP '2024-05-21 13:44:13.921', NULL, NULL, NULL), -('__$GROUPID$__', '1a30f891-5ca8-4163-be99-b559c31eb003', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.938', '', TIMESTAMP '2024-05-21 13:44:13.938', NULL, NULL, NULL), -('__$GROUPID$__', '05dd43f3-f565-4027-b62a-cd012209682b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.956', '', TIMESTAMP '2024-05-21 13:44:13.956', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '674e40ab-f478-416d-8016-922b6e086d60', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.973', '', TIMESTAMP '2024-05-21 13:44:13.973', NULL, NULL, NULL), -('__$GROUPID$__', '0d65f0f3-eee4-4e4c-b058-ec219516e4a7', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:13.99', '', TIMESTAMP '2024-05-21 13:44:13.99', NULL, NULL, NULL), -('__$GROUPID$__', 'cd138cf5-9235-46b9-bd5d-025d876cf55f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.007', '', TIMESTAMP '2024-05-21 13:44:14.007', NULL, NULL, NULL), -('__$GROUPID$__', '131ceb87-3410-4f59-a4ef-fe4dfaf0d23c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.025', '', TIMESTAMP '2024-05-21 13:44:14.025', NULL, NULL, NULL), -('__$GROUPID$__', '9f57d6c7-1858-4fed-bec4-95d5484ec54f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.042', '', TIMESTAMP '2024-05-21 13:44:14.042', NULL, NULL, NULL), -('__$GROUPID$__', '19dbe340-a4d9-44d8-a0d9-6d4eaabbebd5', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.058', '', TIMESTAMP '2024-05-21 13:44:14.058', NULL, NULL, NULL), -('__$GROUPID$__', 'eea9b872-a1a3-4fd3-abb5-da94b0370e9c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.076', '', TIMESTAMP '2024-05-21 13:44:14.076', NULL, NULL, NULL), -('__$GROUPID$__', '4b74587b-bc1b-4167-bb06-276d78f63990', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.094', '', TIMESTAMP '2024-05-21 13:44:14.094', NULL, NULL, NULL), -('__$GROUPID$__', 'b43396fe-4541-418a-ad80-5f6416354f1e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.111', '', TIMESTAMP '2024-05-21 13:44:14.111', NULL, NULL, NULL), -('__$GROUPID$__', '5316ac3d-7c9d-413e-a5a2-b94ad1e2ff24', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.129', '', TIMESTAMP '2024-05-21 13:44:14.129', NULL, NULL, NULL), -('__$GROUPID$__', '10bb3578-1edc-43eb-bbc4-e3752f198a3d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.147', '', TIMESTAMP '2024-05-21 13:44:14.147', NULL, NULL, NULL), -('__$GROUPID$__', '9503a007-34aa-4810-88ab-f9aa033d8c29', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.164', '', TIMESTAMP '2024-05-21 13:44:14.164', NULL, NULL, NULL), -('__$GROUPID$__', '181ea62c-b693-40cd-be3c-a94d2673aff1', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.182', '', TIMESTAMP '2024-05-21 13:44:14.182', NULL, NULL, NULL), -('__$GROUPID$__', 'cdc454ab-182c-46cc-8505-45d6eb89627e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.199', '', TIMESTAMP '2024-05-21 13:44:14.199', NULL, NULL, NULL), -('__$GROUPID$__', '5ee5b4b4-9d39-41d1-bc08-71840135d87b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.217', '', TIMESTAMP '2024-05-21 13:44:14.217', NULL, NULL, NULL), -('__$GROUPID$__', 'bd85708c-4317-4362-8bd0-b6170725b641', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.234', '', TIMESTAMP '2024-05-21 13:44:14.234', NULL, NULL, NULL), -('__$GROUPID$__', 'f1c62aa0-c6e8-46a1-9fcc-57371d101e42', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.251', '', TIMESTAMP '2024-05-21 13:44:14.251', NULL, NULL, NULL), -('__$GROUPID$__', 'c2b19f83-3189-4ae8-9d62-b0765837582d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.269', '', TIMESTAMP '2024-05-21 13:44:14.269', NULL, NULL, NULL), -('__$GROUPID$__', '258a5673-9225-4ac7-9377-1fd903c13553', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.286', '', TIMESTAMP '2024-05-21 13:44:14.286', NULL, NULL, NULL), -('__$GROUPID$__', '90dc979b-f49d-41f1-8983-be16fbd2cd3a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.304', '', TIMESTAMP '2024-05-21 13:44:14.304', NULL, NULL, NULL), -('__$GROUPID$__', 'ce6960fc-bd26-4483-8a85-79741f098dbb', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.321', '', TIMESTAMP '2024-05-21 13:44:14.321', NULL, NULL, NULL), -('__$GROUPID$__', '08ebd932-cc3f-4c24-bcc0-646461f62909', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.339', '', TIMESTAMP '2024-05-21 13:44:14.339', NULL, NULL, NULL), -('__$GROUPID$__', 'f46a3028-1269-4851-9efe-962dba1b78db', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.357', '', TIMESTAMP '2024-05-21 13:44:14.357', NULL, NULL, NULL), -('__$GROUPID$__', '330606c6-1550-42ec-ab29-9eeab5be83cc', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.374', '', TIMESTAMP '2024-05-21 13:44:14.374', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', 'bc10c5ee-58a1-41f3-96ec-e2d2317b2522', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.391', '', TIMESTAMP '2024-05-21 13:44:14.391', NULL, NULL, NULL), -('__$GROUPID$__', '9406e0ab-998a-4b22-86cc-8a4ce0a6f9bf', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.408', '', TIMESTAMP '2024-05-21 13:44:14.408', NULL, NULL, NULL), -('__$GROUPID$__', '57d42504-33c7-45cc-81c0-5f5831394e09', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.426', '', TIMESTAMP '2024-05-21 13:44:14.426', NULL, NULL, NULL), -('__$GROUPID$__', 'e3098ebd-f63f-42d7-b675-99f25b1a8ffc', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.443', '', TIMESTAMP '2024-05-21 13:44:14.443', NULL, NULL, NULL), -('__$GROUPID$__', '141c89b7-4934-44f7-b530-bf9cd8138f71', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.461', '', TIMESTAMP '2024-05-21 13:44:14.461', NULL, NULL, NULL), -('__$GROUPID$__', '059d12eb-288d-4ad0-acee-379777fcbfd7', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.48', '', TIMESTAMP '2024-05-21 13:44:14.48', NULL, NULL, NULL), -('__$GROUPID$__', '74ccb58e-1b7f-4595-a532-38bef3ddb867', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.5', '', TIMESTAMP '2024-05-21 13:44:14.5', NULL, NULL, NULL), -('__$GROUPID$__', 'e0e5cbb9-2c1d-4b8a-9308-1fd3dd5e6f8f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.519', '', TIMESTAMP '2024-05-21 13:44:14.519', NULL, NULL, NULL), -('__$GROUPID$__', 'daca695b-2ddc-4298-8c32-9ce8aae52a98', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.542', '', TIMESTAMP '2024-05-21 13:44:14.542', NULL, NULL, NULL), -('__$GROUPID$__', 'aa0f8662-2f56-4b86-a10d-b075869955f1', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.56', '', TIMESTAMP '2024-05-21 13:44:14.56', NULL, NULL, NULL), -('__$GROUPID$__', '4cd52eb0-eeef-498e-b94c-c8d368178641', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.579', '', TIMESTAMP '2024-05-21 13:44:14.579', NULL, NULL, NULL), -('__$GROUPID$__', '60c71f25-51cc-4f92-9327-2c18be460dc5', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.597', '', TIMESTAMP '2024-05-21 13:44:14.597', NULL, NULL, NULL), -('__$GROUPID$__', '2c16a726-56f7-48b6-b140-e98301b78bc5', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.615', '', TIMESTAMP '2024-05-21 13:44:14.615', NULL, NULL, NULL), -('__$GROUPID$__', '510c0e7a-33ed-4dbc-8a68-7874c58865c0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.632', '', TIMESTAMP '2024-05-21 13:44:14.632', NULL, NULL, NULL), -('__$GROUPID$__', '5de4f624-99a9-427d-ad26-b8d09cc6ee61', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.65', '', TIMESTAMP '2024-05-21 13:44:14.65', NULL, NULL, NULL), -('__$GROUPID$__', '6c778d41-215b-423c-b7de-40b7ef5392af', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.668', '', TIMESTAMP '2024-05-21 13:44:14.668', NULL, NULL, NULL), -('__$GROUPID$__', '6488b172-25b4-49f9-ac4d-bef62b9a8015', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.685', '', TIMESTAMP '2024-05-21 13:44:14.685', NULL, NULL, NULL), -('__$GROUPID$__', 'd895dda7-a1ad-4afc-b7a7-a1cd1d391591', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.702', '', TIMESTAMP '2024-05-21 13:44:14.702', NULL, NULL, NULL), -('__$GROUPID$__', 'e7957daf-d967-4ca8-bc01-e7e090d53a6f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.72', '', TIMESTAMP '2024-05-21 13:44:14.72', NULL, NULL, NULL), -('__$GROUPID$__', '2286ca7d-ca2e-4bdc-9d4b-43fc22ee4d76', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.738', '', TIMESTAMP '2024-05-21 13:44:14.738', NULL, NULL, NULL), -('__$GROUPID$__', '71785cb0-cc66-4edb-bb01-48f032d518bc', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.756', '', TIMESTAMP '2024-05-21 13:44:14.756', NULL, NULL, NULL), -('__$GROUPID$__', '43003170-bbe2-4da5-8b91-1495e63ede12', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.773', '', TIMESTAMP '2024-05-21 13:44:14.773', NULL, NULL, NULL), -('__$GROUPID$__', 'c51be266-3e15-4656-b8f6-6f05d855fbf8', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.791', '', TIMESTAMP '2024-05-21 13:44:14.791', NULL, NULL, NULL), -('__$GROUPID$__', 'c63f386a-1e07-4ea4-ae2e-d5b71974d39b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.809', '', TIMESTAMP '2024-05-21 13:44:14.809', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', '67db8a70-5ca0-4dca-8a86-21f736a56eab', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.826', '', TIMESTAMP '2024-05-21 13:44:14.826', NULL, NULL, NULL), -('__$GROUPID$__', '2a87f168-443f-4d1a-8728-bfcc4ef5280f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.844', '', TIMESTAMP '2024-05-21 13:44:14.844', NULL, NULL, NULL), -('__$GROUPID$__', '1fc88195-aeaa-4d68-9a2a-36263e2c9f1e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.862', '', TIMESTAMP '2024-05-21 13:44:14.862', NULL, NULL, NULL), -('__$GROUPID$__', '20726747-9e30-4162-8018-afad6fc01114', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.88', '', TIMESTAMP '2024-05-21 13:44:14.88', NULL, NULL, NULL), -('__$GROUPID$__', '40abc281-e3ab-4fab-a18e-b146fcde5fc0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.898', '', TIMESTAMP '2024-05-21 13:44:14.898', NULL, NULL, NULL), -('__$GROUPID$__', '7e46c934-ae1d-43f0-a755-585eb5938558', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.916', '', TIMESTAMP '2024-05-21 13:44:14.916', NULL, NULL, NULL), -('__$GROUPID$__', '4944d506-281b-42d3-83c4-96f1bd30d4cd', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.951', '', TIMESTAMP '2024-05-21 13:44:14.951', NULL, NULL, NULL), -('__$GROUPID$__', '2974714a-88e5-458a-ae69-71343dd8034b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.968', '', TIMESTAMP '2024-05-21 13:44:14.968', NULL, NULL, NULL), -('__$GROUPID$__', '5800f662-bf2d-49bd-9d17-60452af5ec1f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:14.986', '', TIMESTAMP '2024-05-21 13:44:14.986', NULL, NULL, NULL), -('__$GROUPID$__', '22b17e20-d73a-4ba0-8c6d-7a01652f162a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.003', '', TIMESTAMP '2024-05-21 13:44:15.003', NULL, NULL, NULL), -('__$GROUPID$__', 'ae8d84b2-30b2-4e27-84d8-cf734d13ec22', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.02', '', TIMESTAMP '2024-05-21 13:44:15.02', NULL, NULL, NULL), -('__$GROUPID$__', '362f0d2e-dce8-4351-a090-1d7996d0d17a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.037', '', TIMESTAMP '2024-05-21 13:44:15.037', NULL, NULL, NULL), -('__$GROUPID$__', '14889d67-2fd4-47e0-b981-b84d154b4926', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.054', '', TIMESTAMP '2024-05-21 13:44:15.054', NULL, NULL, NULL), -('__$GROUPID$__', '1d9965c2-87f0-44a3-bf4a-6bcb639bae24', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.072', '', TIMESTAMP '2024-05-21 13:44:15.072', NULL, NULL, NULL), -('__$GROUPID$__', '795f8f32-7ef7-4f74-b826-a7a50341d0f9', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.09', '', TIMESTAMP '2024-05-21 13:44:15.09', NULL, NULL, NULL), -('__$GROUPID$__', 'a97945a9-6de2-434f-b044-9577add56562', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.107', '', TIMESTAMP '2024-05-21 13:44:15.107', NULL, NULL, NULL), -('__$GROUPID$__', '38d43ab1-e72e-4146-bc4a-614ac0942daf', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.125', '', TIMESTAMP '2024-05-21 13:44:15.125', NULL, NULL, NULL), -('__$GROUPID$__', '4d0fcf9a-c6fb-4b11-a7ea-1d82e9f8d6aa', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.141', '', TIMESTAMP '2024-05-21 13:44:15.141', NULL, NULL, NULL), -('__$GROUPID$__', 'e2634ea3-7445-485c-8b9e-feaa97f632c6', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.158', '', TIMESTAMP '2024-05-21 13:44:15.158', NULL, NULL, NULL), -('__$GROUPID$__', '63b61543-b108-4b4b-bf97-adda3a89d4c4', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.176', '', TIMESTAMP '2024-05-21 13:44:15.176', NULL, NULL, NULL), -('__$GROUPID$__', 'e9b98fb0-3982-4fbf-aafd-1274f73fd664', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.194', '', TIMESTAMP '2024-05-21 13:44:15.194', NULL, NULL, NULL), -('__$GROUPID$__', 'ec476a82-b171-47cd-873f-179f2dffd529', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.212', '', TIMESTAMP '2024-05-21 13:44:15.212', NULL, NULL, NULL), -('__$GROUPID$__', '8e6d0da0-54d3-402b-ace7-2d6b63106d43', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.231', '', TIMESTAMP '2024-05-21 13:44:15.231', NULL, NULL, NULL), -('__$GROUPID$__', '6d241e60-0173-4f0f-b67a-360500d2618d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.249', '', TIMESTAMP '2024-05-21 13:44:15.249', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', 'f402a8e5-8fd0-4bed-af70-fe582c73e667', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.27', '', TIMESTAMP '2024-05-21 13:44:15.27', NULL, NULL, NULL), -('__$GROUPID$__', '7d8f4f16-9cdb-4006-afd3-c57b1c71100a', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.288', '', TIMESTAMP '2024-05-21 13:44:15.288', NULL, NULL, NULL), -('__$GROUPID$__', 'cf309260-17ee-441c-83a2-7128d97eaab1', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.308', '', TIMESTAMP '2024-05-21 13:44:15.308', NULL, NULL, NULL), -('__$GROUPID$__', '3c4a1821-c906-4d34-961f-30ba5cc4c47c', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.327', '', TIMESTAMP '2024-05-21 13:44:15.327', NULL, NULL, NULL), -('__$GROUPID$__', '3ac8981d-0338-4289-94b9-3cc2f2c9833f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.344', '', TIMESTAMP '2024-05-21 13:44:15.344', NULL, NULL, NULL), -('__$GROUPID$__', '0a80ccfa-4f3d-42d4-862f-b7de6c64af33', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.36', '', TIMESTAMP '2024-05-21 13:44:15.36', NULL, NULL, NULL), -('__$GROUPID$__', '76f49bf6-e023-4a2d-b14c-665f5de38d9e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.377', '', TIMESTAMP '2024-05-21 13:44:15.377', NULL, NULL, NULL), -('__$GROUPID$__', 'f5106e18-8146-4ee7-b216-56ea3b917e36', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.395', '', TIMESTAMP '2024-05-21 13:44:15.395', NULL, NULL, NULL), -('__$GROUPID$__', '3e190e41-4421-4e55-9a10-6767aace72cb', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.412', '', TIMESTAMP '2024-05-21 13:44:15.412', NULL, NULL, NULL), -('__$GROUPID$__', 'eb8ef27e-07a1-4fdf-845c-d8a2bacb755d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.43', '', TIMESTAMP '2024-05-21 13:44:15.43', NULL, NULL, NULL), -('__$GROUPID$__', 'd0637196-f8bc-4793-a9ed-d659026e032b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.448', '', TIMESTAMP '2024-05-21 13:44:15.448', NULL, NULL, NULL), -('__$GROUPID$__', '75efbcc6-1923-4ef2-b066-1c588a32d7a2', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.465', '', TIMESTAMP '2024-05-21 13:44:15.465', NULL, NULL, NULL), -('__$GROUPID$__', '6ee0dff9-539c-4762-83ef-a041481c96ab', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.483', '', TIMESTAMP '2024-05-21 13:44:15.483', NULL, NULL, NULL), -('__$GROUPID$__', '6167e5f2-40fb-4d6f-8c43-180105416271', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.5', '', TIMESTAMP '2024-05-21 13:44:15.5', NULL, NULL, NULL), -('__$GROUPID$__', '4a3d295c-bbdb-49d2-b916-df4c23ad4a2e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.517', '', TIMESTAMP '2024-05-21 13:44:15.517', NULL, NULL, NULL), -('__$GROUPID$__', '654a94c7-e7e1-4285-b65f-161ba77dc7cf', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.535', '', TIMESTAMP '2024-05-21 13:44:15.535', NULL, NULL, NULL), -('__$GROUPID$__', 'abf4b578-39f2-436d-8d26-16d575c66ad6', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.551', '', TIMESTAMP '2024-05-21 13:44:15.551', NULL, NULL, NULL), -('__$GROUPID$__', '9dc008c4-ff39-4212-9187-c564d33a1cb2', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.568', '', TIMESTAMP '2024-05-21 13:44:15.568', NULL, NULL, NULL), -('__$GROUPID$__', '86afdeea-e7ef-44fe-9e32-b88664722a79', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.586', '', TIMESTAMP '2024-05-21 13:44:15.586', NULL, NULL, NULL), -('__$GROUPID$__', 'ac9c6b5f-c3ef-496b-82be-fe0e7431d625', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.603', '', TIMESTAMP '2024-05-21 13:44:15.603', NULL, NULL, NULL), -('__$GROUPID$__', '6e51c733-ce72-4c79-88b2-4ead7b290fef', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.62', '', TIMESTAMP '2024-05-21 13:44:15.62', NULL, NULL, NULL), -('__$GROUPID$__', 'ae0b18d6-f5bd-49c7-9b29-a76a4f2f3802', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.637', '', TIMESTAMP '2024-05-21 13:44:15.637', NULL, NULL, NULL), -('__$GROUPID$__', '5d16fdb3-cf68-4d2a-b00f-7b8bb590e6be', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.654', '', TIMESTAMP '2024-05-21 13:44:15.654', NULL, NULL, NULL), -('__$GROUPID$__', 'e995ffbd-db5c-49f5-b52b-93d00b4a1b20', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.671', '', TIMESTAMP '2024-05-21 13:44:15.671', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', 'd9bee1fd-7d51-4e95-8204-56d71d963528', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.688', '', TIMESTAMP '2024-05-21 13:44:15.688', NULL, NULL, NULL), -('__$GROUPID$__', 'a4b9cf73-53ec-4410-8cc0-1280aedcf789', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.705', '', TIMESTAMP '2024-05-21 13:44:15.705', NULL, NULL, NULL), -('__$GROUPID$__', '65c2839e-1103-47a7-8609-6f2030e0d9e7', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.722', '', TIMESTAMP '2024-05-21 13:44:15.722', NULL, NULL, NULL), -('__$GROUPID$__', '6c73507e-3ee1-41e8-883a-973f77c529d1', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.74', '', TIMESTAMP '2024-05-21 13:44:15.74', NULL, NULL, NULL), -('__$GROUPID$__', 'c16cdc68-9f9f-4433-a530-c00ab057ce15', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.757', '', TIMESTAMP '2024-05-21 13:44:15.757', NULL, NULL, NULL), -('__$GROUPID$__', '3e100d11-018e-407c-9ac6-26e64b2e19d5', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.775', '', TIMESTAMP '2024-05-21 13:44:15.775', NULL, NULL, NULL), -('__$GROUPID$__', '9dceebc5-dc24-4c38-a398-688521281230', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.792', '', TIMESTAMP '2024-05-21 13:44:15.792', NULL, NULL, NULL), -('__$GROUPID$__', 'b326c0ac-5c51-433c-aad7-b4dd66c3cb3e', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.81', '', TIMESTAMP '2024-05-21 13:44:15.81', NULL, NULL, NULL), -('__$GROUPID$__', 'c7bbf82a-60bf-44d7-a7bc-c2554b83e518', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.827', '', TIMESTAMP '2024-05-21 13:44:15.827', NULL, NULL, NULL), -('__$GROUPID$__', '383f622a-cacc-4fa5-844a-65653d34f489', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.844', '', TIMESTAMP '2024-05-21 13:44:15.844', NULL, NULL, NULL), -('__$GROUPID$__', '5731695d-593c-4476-9ab1-703a603862e0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.861', '', TIMESTAMP '2024-05-21 13:44:15.861', NULL, NULL, NULL), -('__$GROUPID$__', '12e79754-c7ff-4829-9872-a61ff4c62f79', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.878', '', TIMESTAMP '2024-05-21 13:44:15.878', NULL, NULL, NULL), -('__$GROUPID$__', '306429d7-edec-4564-baf4-5bc00e5eb067', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.895', '', TIMESTAMP '2024-05-21 13:44:15.895', NULL, NULL, NULL), -('__$GROUPID$__', 'f97a9f08-b2e9-4eb0-9ee4-55597f8999de', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.912', '', TIMESTAMP '2024-05-21 13:44:15.912', NULL, NULL, NULL), -('__$GROUPID$__', 'cb01db18-1a4e-4709-9ed3-3ab6c2587ab4', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.929', '', TIMESTAMP '2024-05-21 13:44:15.929', NULL, NULL, NULL), -('__$GROUPID$__', '0c5aa124-28e8-48e7-9e87-b7b5524ddc1d', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.946', '', TIMESTAMP '2024-05-21 13:44:15.946', NULL, NULL, NULL), -('__$GROUPID$__', '96060a38-7b68-4c1d-aed8-0c6a478a2d26', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.964', '', TIMESTAMP '2024-05-21 13:44:15.964', NULL, NULL, NULL), -('__$GROUPID$__', '088a6dc6-d343-498d-bb62-77fc16e61c88', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.981', '', TIMESTAMP '2024-05-21 13:44:15.981', NULL, NULL, NULL), -('__$GROUPID$__', 'd1426fc6-8b95-4662-b73e-0629b5300dd7', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:15.999', '', TIMESTAMP '2024-05-21 13:44:15.999', NULL, NULL, NULL), -('__$GROUPID$__', 'b8c44c06-57a1-4d86-b0a6-3b118f89046f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.016', '', TIMESTAMP '2024-05-21 13:44:16.016', NULL, NULL, NULL), -('__$GROUPID$__', '44800472-e6da-4435-a2d6-258bffce5388', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.033', '', TIMESTAMP '2024-05-21 13:44:16.033', NULL, NULL, NULL), -('__$GROUPID$__', 'b8968a2e-6d34-40c8-bd45-6261f8257f88', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.05', '', TIMESTAMP '2024-05-21 13:44:16.05', NULL, NULL, NULL), -('__$GROUPID$__', '8965d553-8850-4fb1-8d43-0aec203f0541', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.067', '', TIMESTAMP '2024-05-21 13:44:16.067', NULL, NULL, NULL), -('__$GROUPID$__', '5576d673-c40d-4fc7-be0c-369159c4918b', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.084', '', TIMESTAMP '2024-05-21 13:44:16.084', NULL, NULL, NULL); -INSERT INTO "PUBLIC"."ARTIFACTS" VALUES -('__$GROUPID$__', 'c6a91d37-9a00-4603-937b-c25f0d0a70dd', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.101', '', TIMESTAMP '2024-05-21 13:44:16.101', NULL, NULL, NULL), -('__$GROUPID$__', '4de3f9b9-55aa-42ba-b12e-33e941a232bf', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.118', '', TIMESTAMP '2024-05-21 13:44:16.118', NULL, NULL, NULL), -('__$GROUPID$__', 'dcb7cb9f-4433-4f05-abe7-168bd5a25ecc', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.135', '', TIMESTAMP '2024-05-21 13:44:16.135', NULL, NULL, NULL), -('__$GROUPID$__', 'a6a0cefe-d75c-4806-b9c7-58421af27f6f', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.152', '', TIMESTAMP '2024-05-21 13:44:16.152', NULL, NULL, NULL), -('__$GROUPID$__', 'e469c877-5f8a-48f2-85ce-6ab0fd46cf77', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.169', '', TIMESTAMP '2024-05-21 13:44:16.169', NULL, NULL, NULL), -('__$GROUPID$__', 'e77ee1e0-2de2-46c5-acc9-24ef5b0bbe78', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.186', '', TIMESTAMP '2024-05-21 13:44:16.186', NULL, NULL, NULL), -('__$GROUPID$__', 'c7e1c922-b056-4ad6-aeca-8583652662f0', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.203', '', TIMESTAMP '2024-05-21 13:44:16.203', NULL, NULL, NULL), -('__$GROUPID$__', 'f151fd72-97c0-46bb-84bd-5aae4e2542aa', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.221', '', TIMESTAMP '2024-05-21 13:44:16.221', NULL, NULL, NULL), -('__$GROUPID$__', 'd65b422e-d7cb-4fe2-8303-e2077ea626b9', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.238', '', TIMESTAMP '2024-05-21 13:44:16.238', NULL, NULL, NULL), -('__$GROUPID$__', 'f4984726-2a40-4937-84c7-dfecab2410ce', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.255', '', TIMESTAMP '2024-05-21 13:44:16.255', NULL, NULL, NULL), -('__$GROUPID$__', '6c9a82bd-dd5b-46e7-98aa-07a8c60f1e21', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.272', '', TIMESTAMP '2024-05-21 13:44:16.272', NULL, NULL, NULL), -('__$GROUPID$__', '5ac98efb-3358-49e4-a67f-4111ebb829ec', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.288', '', TIMESTAMP '2024-05-21 13:44:16.288', NULL, NULL, NULL), -('__$GROUPID$__', 'ce8d14bd-16e1-43aa-95b2-256580472ff4', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.305', '', TIMESTAMP '2024-05-21 13:44:16.305', NULL, NULL, NULL), -('__$GROUPID$__', '70b4bf2b-3505-4d97-afc9-bddc1d99cd38', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.321', '', TIMESTAMP '2024-05-21 13:44:16.321', NULL, NULL, NULL), -('__$GROUPID$__', '3ba1ac4a-8973-43a9-89fc-7927793cd3c3', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.338', '', TIMESTAMP '2024-05-21 13:44:16.338', NULL, NULL, NULL), -('__$GROUPID$__', '87d1c0e6-60b0-44fd-bece-ea163a468bf2', 'AVRO', '', TIMESTAMP '2024-05-21 13:44:16.356', '', TIMESTAMP '2024-05-21 13:44:16.356', NULL, NULL, NULL); -CREATE HASH INDEX "PUBLIC"."IDX_ARTIFACTS_0" ON "PUBLIC"."ARTIFACTS"("TYPE" NULLS FIRST); -CREATE HASH INDEX "PUBLIC"."IDX_ARTIFACTS_1" ON "PUBLIC"."ARTIFACTS"("OWNER" NULLS FIRST); -CREATE INDEX "PUBLIC"."IDX_ARTIFACTS_2" ON "PUBLIC"."ARTIFACTS"("CREATEDON" NULLS FIRST); -CREATE INDEX "PUBLIC"."IDX_ARTIFACTS_3" ON "PUBLIC"."ARTIFACTS"("NAME" NULLS FIRST); -CREATE INDEX "PUBLIC"."IDX_ARTIFACTS_4" ON "PUBLIC"."ARTIFACTS"("DESCRIPTION" NULLS FIRST); -CREATE MEMORY TABLE "PUBLIC"."ARTIFACT_LABELS"( - "GROUPID" CHARACTER VARYING(512) NOT NULL, - "ARTIFACTID" CHARACTER VARYING(512) NOT NULL, - "LABELKEY" CHARACTER VARYING(256) NOT NULL, - "LABELVALUE" CHARACTER VARYING(512) -); --- 0 +/- SELECT COUNT(*) FROM PUBLIC.ARTIFACT_LABELS; -CREATE INDEX "PUBLIC"."IDX_ALABELS_1" ON "PUBLIC"."ARTIFACT_LABELS"("LABELKEY" NULLS FIRST); -CREATE INDEX "PUBLIC"."IDX_ALABELS_2" ON "PUBLIC"."ARTIFACT_LABELS"("LABELVALUE" NULLS FIRST); -CREATE MEMORY TABLE "PUBLIC"."ARTIFACT_RULES"( - "GROUPID" CHARACTER VARYING(512) NOT NULL, - "ARTIFACTID" CHARACTER VARYING(512) NOT NULL, - "TYPE" CHARACTER VARYING(32) NOT NULL, - "CONFIGURATION" CHARACTER VARYING(1024) NOT NULL -); -ALTER TABLE "PUBLIC"."ARTIFACT_RULES" ADD CONSTRAINT "PUBLIC"."CONSTRAINT_5E" PRIMARY KEY("GROUPID", "ARTIFACTID", "TYPE"); --- 1000 +/- SELECT COUNT(*) FROM PUBLIC.ARTIFACT_RULES; -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', 'cb91ebe7-5a1b-462f-bc5d-3e05a5b4d0dc', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '06c4c0c1-d00f-4664-b405-5bf8f7c3e9ea', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7fb9cda5-e93d-4b1c-8fd7-ba55ac70008d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'cf77f4e5-9143-4e19-9d86-fc515eb12479', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd57c8ddd-e38c-4465-bf43-0df1abf594aa', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '96d02ee0-cf26-4e6d-949d-2edff4f251df', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0145500e-4636-48f4-ae94-b171ab8bbb4e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '65fb3521-9945-475b-87bc-32f11d13799b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '22d74f07-581f-4bc5-8a16-171fa9979403', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0cc7ef24-bb6d-4324-a03d-cf23a67fe464', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '79c6ce7d-3b49-4e8a-bb2d-8c262dac2e55', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '942913c8-c70e-4b29-9a5b-cd0b64a56872', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7e467e02-2f34-45db-9e54-768e2baf8964', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '24f5c66e-6519-4ed0-bd16-5a1405e4db87', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'bf1362ab-1cd4-4cbb-b555-d600e6b91aa6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c7be03fd-e62a-4560-a23b-5457462124d6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e65be352-8ad1-4da1-9232-270d86605600', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd24e1068-1a9a-4664-9f3f-f02c3a816190', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '205db78b-e3a3-4ad5-ac0a-c053c5adf2fb', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '260f6311-dabd-410c-a5c8-ed18d7966ef0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '39173b57-91dd-43ec-b206-6708f9b44dac', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a5b27784-cca6-4e99-8a57-e7c93325d53b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '40428271-3b48-41ae-adab-896cfeeb9e32', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7c560561-7bbd-4fc6-85de-9ea373a4979d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f6742416-4b6c-4726-8a4f-7ee4f861d3ad', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'bde4b305-7eb8-4fc0-a5a9-a3051b8c8ba7', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '88f7b085-7ba2-4341-aac3-3d2a9aa7ec9c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4243f08c-608c-42ba-b28e-c0b8b988249c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '58c490f9-8a61-4ceb-9345-360500e15881', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9150c976-babe-492d-8edb-785497ffd23d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'cec97fd5-9151-4bff-9133-45c746560e91', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9117820f-8856-4f31-b70e-51f977d8c5fc', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e15b51dc-cc77-4797-8d02-c2c03e5a73a3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8a5e64dc-a9a3-42f7-ad68-a6ae4d0e0c5b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c4b4703c-fbab-4421-8ac9-da3709b99174', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c03f8abd-3a16-4478-97ce-3d6491b829f4', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '803a029b-da61-4baa-8da3-8a327b6c6d56', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ae131edb-debc-4415-95ad-94e781aa00cd', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'fc01cf2b-000f-454a-a428-e456de015c34', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2c160926-5265-4bf5-a1cc-0c87e6953b97', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '02f72213-36d5-40e1-9ce6-03ac4df92087', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e285c686-5a40-4ff4-9178-ab332512120a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd5598f2e-228d-440f-ae93-fc683a5ae7ef', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', 'ec81316a-6522-47bd-879b-52fbc2425a58', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8d1857de-b458-4476-9f20-a26ac8343b62', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a28731d2-ae4a-4044-9299-e6a51fd37b8d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0124d710-92c8-4058-9dd9-49b36690fa5f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '214ca507-695e-47a4-b32e-2f307f05050a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '32be4fca-566c-4ca1-ad6a-3bb408f44abc', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '55556b17-156d-46ba-b800-259e5a12c0a8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd1e5c01d-94a2-4c24-a9f1-187d30c4393e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6b556835-d792-42ac-9471-6b33e7864bde', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '56852352-e7f2-4b51-b909-ddf0e222c60e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a08e294c-867e-4dbe-87e6-f54da187cdac', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'cece0559-1bec-4d4c-ad4f-42bb2726ffd3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '00ab9a7f-ffbc-4964-9425-af4b96d26aff', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '79bbfbec-e2ea-4a35-b3f1-ca4739fd3962', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '199c6822-ea36-487c-986c-d5f413e19169', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '839d0a48-a0d3-4de9-a843-6866041d7020', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'de24e91e-2f4f-4b0d-9eb8-c0d73b3dd7ce', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5639b90a-ea6f-4915-be3b-f37b7333e897', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '449f37e8-3aa2-4341-b159-2d7ee7e29f92', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e9543445-d707-4c42-a6a9-d70da13c8c4f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '537a3424-8448-43df-aee1-fdf94a405fd7', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6f303807-c47d-4c62-b81e-e97745a04413', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e530388d-0135-4c7f-938b-7f44b9680768', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2c3b36ad-435c-41f1-a5f5-8432c60bca6d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e151bf47-022f-40de-9513-0ed57ce301c6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e90869f3-31fc-4404-92fb-d1e5b8af348c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '40be1886-3bfa-4a33-abad-201143d3b0bc', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'befce9a3-c954-4842-a474-1fce8f4b051d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '10170629-99a2-4f60-ba1d-88ce1d28b13d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e3ede857-18bb-46ba-81c0-50bdb0f26f57', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '62cb03b5-2622-4d11-8113-241062bdc91b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ea526d21-9e7e-4855-b60f-7087e1b87a01', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8ffb371e-96b6-49d5-8e9f-ec7696f4157f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '62428daf-16a8-4a2a-bfd9-fbc17a93a141', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'fb7e54ed-34b1-489f-bbc5-60a31e4c1aa0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a5c6a8cc-6856-49d8-807c-c774f7d5d65d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '306d3824-a1ce-4596-8bc2-01443c7a43db', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4bf53e95-c27a-4009-8e71-87f2ed009d68', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '23a2bb48-a268-4d36-a0bc-978c8c75aeb2', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c9114a0d-07c1-4b39-9440-d03950d62c99', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '91655f37-8c16-4f8c-8ece-e415820fdad1', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd3a235b6-d619-4d97-9bf3-d0876bb3583e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '12b59891-7e14-4a1c-a655-3de16a22755b', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', 'a3dad4e9-38d7-4dac-b9c4-6da1b9926ced', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '1aacb405-f68e-4fa4-a7ff-d373d41b9d80', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '062ab44f-c239-4435-a0b5-ec8a132a2e1b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'fabe72d3-1ff0-4bc4-968b-aedecdc2d1ce', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '1e15ea38-2ab6-4281-b043-87bf8302449d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '33463eb9-26e3-4863-8783-259c90a4d63b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '1d37f479-48e0-46eb-ba88-483f4571510f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'cdf08e3c-5dd0-4726-b674-a6567224b754', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c18e19fe-709f-4d89-bfc9-122553f9dfca', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8532027d-4499-4c94-8638-088e88241f67', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '26addda1-eea3-4653-885f-7bc591420db5', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9abb3a60-fc6a-4b59-b90d-637ae175cc51', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3e6c74c9-4f38-4ea1-89c0-1075327d19a6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9f23de25-402d-400c-847c-07df61e6d1fb', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9ddbd237-994a-4d41-9d6c-80e496c8d81a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ce2a35d0-ca15-4992-8db9-cb4e468bffc5', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '94f1e799-1617-4e5b-a511-692be80d9523', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2cb80271-6478-4447-85da-dd0590201afe', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9808560c-e77c-425a-a268-f73566409aef', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e7498139-69e5-41ab-8e00-ca7476dfe9f2', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8b2840d4-e0b0-4ec9-a063-f6b8a90e8ad9', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6d5d8ff6-2f0f-4786-a648-15ff251a1914', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '527ce35e-1bbd-4108-919f-f14435255512', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '24f0a809-8834-41d6-9df6-2220457ad47a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '45f8961d-a704-43b0-95c2-67b2e66b4ed7', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a43d24ad-cfae-498d-8317-5276cc3ac738', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4916f24d-41fe-4b21-bdec-df2cdb8c731d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '03a6e71e-e03c-48cc-a247-9d23c4c0d9f6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9256bb73-5dfd-4c0f-a465-b05837f4d742', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ac466933-364a-43c1-ae7b-2ef8d861a31f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '474d1959-4a40-4c2e-b0a3-6c541462ae96', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'abdcd870-dd91-4ba9-8fff-fa34a815c8b9', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'dd457eab-0c2c-4f57-bac3-023d8f8fc502', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ed5511e1-4a82-4d33-956d-6e5c1e3d0d63', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '64001f5f-8ad0-46a1-9ecd-003929388f76', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'bb956a13-c28d-40a1-8f77-beebf7a0e8ff', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c0bb2d05-99d8-4f6c-a7a8-cca60483aa4f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6fa48c41-bf5f-4f1f-b618-38d780c32b0d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ebaa3136-8d5d-4331-a276-f192328a4a04', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8d58e655-0a62-4b98-8fe9-787f7c323afd', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'de272f93-b580-4de5-88d7-cb85c6669147', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5faf6fae-fed3-46dd-80c8-c884895367a3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '41db40e7-200a-4ee2-9d42-a79a5d818503', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', '036b4484-66f8-480f-8e0c-f4b4890ba5e2', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6e6407dc-eb9b-47b9-a739-b53257028740', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'bcc8dff9-f568-46cb-836f-e29d6fe9a302', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '05a15e87-b5c0-430e-af1f-273a38bddfc0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b57e48bc-477b-44bc-8f67-8f1243e993ca', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '01291422-dc34-4940-be49-03c0a4223a4f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c635dd5e-de14-4ace-89e6-a1b2414c343a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a412cbdf-bb7e-4037-92cc-696be8f509d0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'bcf98aa8-6b65-4c91-9c0d-7965cc0cb88b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4491d5c5-45a8-4254-9690-c9309f417253', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '1a573ed3-8f92-4d35-bffd-be86d4833b68', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a3a02771-4316-4857-8bc4-9624ed2d75d5', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '132e31d6-0a04-44d3-92d4-a079d88a6f64', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '559a6bd1-1eda-44a6-b8cf-525176ef0bc6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '69a848d7-0f88-4ef1-9bf0-990e5d325892', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '62fbb413-43c2-4571-b97a-06e0cc7f5b93', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'bcda25dd-73d1-4953-94da-a9042bab7144', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2d215e19-449b-467c-96df-6561684f1e94', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a5eef6c7-49c2-46df-8b55-c56c116813ef', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c28bf1e6-382b-4d10-bf99-94d1f965843a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8fd8e932-dc34-4aa2-bcb8-84c2f6b060af', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7a27aad9-be70-4f9e-b246-9d62cde4156f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5936e921-a6ff-46fc-acdf-a2c64d6e99ee', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'cf7dd8b7-9644-47e5-96d8-9345f2333b74', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '96d2f5fb-2e2e-4255-9ac8-8f95f88214be', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'bbc4d5ad-5ae1-4da9-8133-d40e750b0a90', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4b37b37e-e9c3-46a8-b91e-a843e72e9250', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '63d01b13-4fe8-4451-9ff6-365b5e6bafbe', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd3da90e7-f26e-4422-ba4d-fa9074fd2c56', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9cca52b9-b487-46d6-91d1-1890e1d21291', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'dfdb1adb-2470-4796-a706-4dc487e470d2', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7cd43c4f-dff6-4a91-87b4-658cb0814ba0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '80d3c253-0d57-4bcb-afbc-884a9c2e4d58', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '338d2cf6-f196-427e-82ac-2dd30026ffb2', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7a4bf758-ae85-49ba-8cba-56d46f456c91', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5113603d-0c64-4b83-ad12-c572e0bda3c5', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '07697a9c-75f5-49f5-9a45-ab4ead7dafda', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7ec0d39a-04d4-4c45-8824-3fdb3d195126', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '731607e1-7b29-48d1-bba9-538f3d810175', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8468011e-4f57-415a-9c7a-1450dfee5500', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'dbcab97c-067d-4940-bc3f-4797325f7aa6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '519bed55-0f1f-4ee8-929f-996ada2b12a3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '1ec8eef2-a8eb-4287-afcc-78a760e121c1', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', 'b91a0ed1-ec13-474c-b659-7a1824beebe6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6c03bc86-4c2b-41fc-8ff0-717b1648da75', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a45f46f0-c46b-4fbd-b4ad-85f0a88354b1', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3f5ed759-7579-4e34-83a0-9dd647197c32', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c483ffa1-e483-4d16-b8b0-0f14c7da1310', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '548a610b-a52d-4bc6-8e11-650c2c4c7f51', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b689039e-759f-48d7-8c3a-9d7f9e6b6932', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '05dacf6f-b6ac-4bb8-8407-0d061e74861e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '294fab42-55cb-4eed-b4d2-0986a456b892', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5f545b92-11d9-45cc-b6bc-2abc401848c2', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '359ea1f6-142b-4966-bdd1-190a52e50d79', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f891396e-0202-4554-aac4-78354c5f240c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5d427abb-faf9-4228-868a-4b0b0e7d905a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '73cea19c-f850-4e67-b78b-aa6c66d2e88d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '65b5a5af-f9ff-4e6b-a5e6-10577ed91564', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'aa5898ac-c8a5-4f28-93ca-86a73c535fbb', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '489bcfb9-0b47-4368-bb52-662032499579', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4bbb5e9e-3fdc-4b4d-b5eb-eb06101242ef', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '610de345-8003-44f4-bebb-6f89e97c145a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '25aefffe-d30e-4868-a034-da651fa14858', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9c374f2a-b2aa-4712-948a-117a6a78f854', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '332d971e-087a-49c9-8197-568016ed6908', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '889439eb-fd7a-4f7f-99d2-357f1fd34f05', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9a1d9653-fad0-4088-b716-a3fe39323417', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e167ccb2-a52c-43f8-bd37-77c2967e04cf', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e46d07e2-6063-42c3-b51f-9a9f83c3a496', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '1a7feaa2-c721-44f2-919c-67697f8578cc', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e9a1740b-0706-4218-ad1e-a9c687eb5ce9', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ddacde96-08e3-4a0b-9018-db3e714fb83c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5f9f437e-522d-4f1c-8896-60c40b44974f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9227f499-24b6-4988-a6f0-f628069da7ba', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'fe698f21-9637-4da7-bd4c-a025168c6f3b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd2c1ea98-9318-4407-b521-4ef5e64c481d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2801e628-546e-4c7a-bef5-0b70697ebb40', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd44229d4-0d37-4d1c-8368-0d0af1e64dbf', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3c1702d7-07d5-41c8-b358-273679542392', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9d05ffe0-2996-4cf1-b098-0a66e092bc7c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd25b7c86-3b21-4b53-a39e-7a71bd26eb1b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f1a5afaf-69ba-44a4-97fd-2c8dd38353d7', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7ff418db-004b-4f2f-85dc-c3f0bd7925ea', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '525c2752-c30f-4629-b641-8a7eb0353f16', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '764fb2f8-34d9-41ed-b378-4b14676d37fc', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0f5cd5ee-0630-479b-b784-b55380ca1ac5', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', 'aaca65e2-3d60-424e-9575-6184c1f55d8b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f366f8bb-10cc-4767-84d4-52dd0f988475', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0bac1b2b-5304-486f-8b3d-271ef09816bc', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '93b2ea63-94f2-4b7a-be5f-44dfbf767d7f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '71ccb6a7-2a53-4875-9453-ffa0a688f642', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '663605fd-47ff-49cf-88ec-200047a2f7c4', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5742e9ce-5859-42a7-9035-a40a5a9a1798', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e3d912d1-4845-4b6b-b2ef-550b1afaa66b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ab713c30-ae24-4112-bf39-56657c340d52', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8e0dd5e1-5a5a-4cda-aeb6-07e503955122', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4dc4c0cd-e06b-4557-a2e3-405a497137da', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '97e47396-6b09-411f-a878-731cba939e55', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6be706d5-c056-4180-ad4a-7b9210055c58', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ee1467a2-efc8-46ec-b4ce-6f3537986ce2', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'cf2f4780-1120-43f2-8747-90672c86b130', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6b517a95-c151-48ec-8ceb-e5fad8b622f4', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '502ffefb-e9e7-482c-9fb6-ec8ca8db3b4b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3b3f3798-170d-4154-bdea-1b427960d43e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'caa5effb-0e1c-4807-a2b8-ac852257ab43', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '79397f4c-6bc1-479f-ab63-0d0e6143f196', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3c635d3e-5cad-44b1-a1d2-fca3bc2cb94a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0bdba378-0323-4f4b-ad67-4ef1c6106a5b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b45da4c3-dac5-4820-a7cc-70b547ba61b0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'af2a7b1f-ca14-4bec-acb8-882bc2373878', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '27d3785a-0d94-4e6b-b8d9-8e0d69c0a399', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8125cd2f-8404-478b-8c8c-61c4499c938c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c93e47ca-2eb4-4277-8929-684d74f8d38b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e206be9f-bfcc-42bf-990e-070f4c6fd7a4', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '570b175b-1392-422e-87a0-01d8f6c3864b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b63fd0b5-9a25-4274-a6d8-626f727e2b20', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd7133c33-0433-497b-83f2-e9d3d49f526e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd88318e3-a3b4-4fe0-96a3-2b9e41210e42', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '82bdde6b-895d-4447-b467-8ce18fa85605', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8104cabe-3b62-47cf-94b2-b48c4abdcfc8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c1fb9836-319d-4664-84fc-7b965507258a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4d365d8a-ed84-44b5-b9b4-ee87e96907d3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5b7b960a-d42d-4129-b4e5-10c2c05e8f6b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '78c4992d-b5e9-45e6-b1c6-b54281cacd77', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3050c4e1-9ad7-433e-a4a0-aeb93f2fb53f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c695c1eb-f1a1-4823-83cb-d9967cf1ac57', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e623ce56-7586-4666-a704-0295fb14708d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'aa01d77c-b64d-4fe3-9b1c-49a574401994', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3ef6f00f-179c-4810-a2a4-dd4531d8969b', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', '6f8d2c8f-45e1-40b2-af0b-9347a9405016', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b695b9c3-da4d-4473-8502-e78f43567927', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '552d6a2a-38e7-4fb4-a194-339d4a239c8a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '90ff9e31-420e-48ce-9ff5-9c4cfe7d08d3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5ce3571c-f835-46a5-9b7b-ebd40025522b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a2e00e2d-62d2-4e30-855c-0c1c3cb77ed9', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f757f498-bd0e-4872-b373-b1732816226b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '695caefa-4bc6-4080-bd1c-a9529705a451', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '1d91fefa-ea70-4d28-ab4a-935d193a7fa7', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e70d7cd2-573a-4e57-9c74-a02e0a319310', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd5b524df-000b-4160-98ba-90d062358b43', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ab439d09-9b62-4f38-8133-a57c066c966f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '148ca397-91b2-45b3-ac11-37ac4bb2460f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '1f7e3b14-cf66-4d62-b6b4-48901aacb02d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '61f28d70-b2bb-42e2-b789-213c09612570', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '27ebcd5e-9767-4543-a992-f16cac35d0d7', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'cf33c6e4-3d5c-456d-9850-4258320a63ea', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2d9714be-f767-49c1-8319-f08ad2e99b1d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '96a413db-6bb4-4270-b4ce-68c0858c8c56', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '03387c4e-44c2-4524-a7c7-02288baa37ba', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'aae0f42d-643a-4033-8a4c-7f67705f41fc', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f6c425d2-a547-41ae-900a-ec1b35b5cd20', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'fe5d971a-1fc5-4513-936d-48f490cd72b4', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c6de1654-e123-42c9-9bcc-32124102ecde', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'acfe32f4-a0ef-4fee-b15c-9e0898aaae3c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c73a1821-f6c3-4276-bc41-97173635e39c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '25e6d3fd-bf2e-472c-999a-a4247b312b56', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '1aa9f4b3-ad55-4625-87f7-e1976a225546', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f60f1a8f-6ee1-4ca8-9426-dc12907ace59', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a5b6af38-e49a-4f9d-8b25-1e40312559ef', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f227ba0c-6deb-4f4d-95ba-1e604746bc94', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e1401728-0d2f-431b-8874-adac21bda40e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c8d984f7-b7e9-4203-924a-699ea40d519a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f77bf8f1-59db-43e3-a63c-d318d8a9090d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5962bf45-bf0f-4a18-8f40-351bfe4d1d06', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '52d6ac3f-b704-463c-824f-ea83bbf16b6d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '30cee9a3-42b5-4605-b3c1-b27b2a0b60e5', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '26ecf497-0a28-4f80-81e5-46b58b42b223', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '473bcca3-a842-4cfe-bb9b-94478d6ee247', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f95759bb-72a6-4118-9109-b49fb1115946', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '28830e75-757f-4e4c-a2a3-17cb296c2868', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd1b6cd48-c42c-4dd0-935f-75101af2d594', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '948a5de2-d3a2-41d2-8e73-4c2458030410', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', 'f189ccae-aacc-440b-b71f-a5a7fdb41d60', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '653982fb-f8e2-4934-962b-63645fbc40b7', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '190ef94f-1508-408b-b2b7-cc7735a34a49', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5389df82-00f5-4f7a-bbbb-37ab986d1caf', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '84c9a3b5-8271-443c-9cd3-1be79a090041', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '41a1a9e6-60eb-4a5e-82c1-27af4a292d69', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9244befe-19ca-447b-8b40-cf14db608610', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a01e4af8-9b3d-4a77-a1d8-32569324d34c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '79a28909-18c5-4a03-8758-53f467e8de3b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'bb765ecb-1f24-4200-8c68-aae619c72fb9', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3bba986f-43b9-445e-b68a-e9a0a2e20b5e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '03c4f12c-d631-4d24-a73b-b07ad1e1f9ac', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '893e3045-b2fe-43c3-a798-a3caf393a9a0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3e94a0af-87ba-4f71-923d-4ceaa1821338', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '879fa889-007b-418f-8e96-214105e42cb6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7724031b-3ad7-42b2-9819-1ef9a289cd8e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b098f9cc-3733-4a5c-ac82-85ad179514cd', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd4ef4016-7839-49dd-908d-e4e3f0833e8e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9dfe5f86-33ba-40fd-977a-28147e99909c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3b8ba2ea-49ba-43a7-aac1-22c9e7ae17b4', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6522a989-60ee-4cf6-9cc0-5dddc5730aae', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '500ff6ef-4fc0-4007-b658-fa9448d1a936', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f56b717a-bcb8-4f7b-8f21-c777f1b6d935', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd04c5ed4-70c1-4845-a2ef-5483383b08de', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0ce46809-60b0-4ca3-ba5e-6a0d08f59e2a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e90f30cb-4675-4e7c-a12b-d35aca03a9a4', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3f89232e-d8d1-417a-96ef-aff9cca5610b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0bfc2797-83a4-434d-b09c-68301c20ee79', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2954cfcc-9169-4bce-8bbf-72bf68a6c5ed', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f6359190-823d-4c8c-b6be-1fc3ce14cc6e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '65e1d9b0-2a42-4c11-8829-7bbbf7277ceb', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e7ce3bd2-3187-4d64-8615-ea253629f975', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2211c7ab-9afd-47f7-92c1-2cb9d5a62b57', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9320329c-d175-4783-9ebf-d4a89f8a6167', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c6579939-b8a1-4269-a7de-f02202e26422', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4ca32bb7-231c-4f85-a2f8-1563f138f2c0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'cd7de510-41ce-4d0a-9ee4-e2ae2e48949c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '445dd5f8-b43f-4468-a619-32ff570b314b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e7aa108b-7122-4a3e-83af-15956ac568a9', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5698a602-a371-4eff-a8e0-2fda0aa762a4', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0b628c3b-3b68-4721-af61-9bc41ba75e06', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'bf1deeb5-3108-4c3e-ba57-819280b2fae2', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '30846b8e-d6f4-4e7a-a61d-8e91446b9a3c', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', '8e2451e2-c529-429d-a119-d8dbde2e570b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '36fc5be8-dca3-4ca5-9dd1-e2a19cd4710b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd52aad4e-6e1b-4f12-a6b7-9625dbdd546e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2ba5b0ba-55b1-4424-b644-28990f5f7f7c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'bbe6ca38-f91c-4b7f-8f3b-9fd290c8ada2', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e01051b2-3ed4-4877-a3bf-89d4c25a26b4', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6b485480-81ae-4180-b537-98b25bbe7510', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '14067fb7-e7e9-45d0-b5e1-36f683d151e4', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd6e5e418-198c-4def-8d51-fb5405912cce', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5d6ea64d-394a-45c1-b73d-939ea1c761ce', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '09be6206-95b0-42a8-8f31-c7f818111413', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '122ee6bf-4e6c-4e2e-aded-18ef18ee4c80', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '09d5cf40-0384-4133-b2e0-75a80b5074c6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e7ce2467-0b51-4b15-b8e3-e223188a1b9b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '040bc186-770d-40fd-ac0c-9240afc4ce67', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'dff18467-c412-4cc1-bb2c-6fcb1a160fa7', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9837e10d-ae18-4199-880a-76ba766dd9d6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '51777c6d-1193-4e97-8c49-cb99c8674e67', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6bf49be1-af44-4464-a9fe-7c66f2cb57ea', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '76085212-21db-4051-a786-4533a4ce1264', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '79824ece-a172-4c37-8062-969fb61eec50', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '98f91c0b-56d8-4f20-be8b-c46f0f2f3c27', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '981d1def-f3e0-467e-8af0-2e1e84c94b41', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e5204905-e11f-402d-940e-b7e129b34b65', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '31a3e69c-7d3d-4771-aa8e-dea60e47904e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c9c99ab5-cb17-414f-82e6-aa045cfe036f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '61f08417-f07b-4b88-aa48-e9e272fd9f5d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'cf08f2dd-4705-4096-baa4-4603731dffe2', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e96c2031-0bc9-44b4-a2a5-789166d95525', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3cb5ce3f-9f29-4534-86c1-2851a3a0e0b2', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'faa699c8-815b-4f65-b13c-36006d80211f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5104af84-3741-42b2-8528-b4626fedfd2c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b41e5f0a-0e40-4194-902a-bcc8622999be', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4dfbd027-038f-4142-99eb-3265ccf770f0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '26f4f339-442e-46f8-9832-86e2ddb23fe4', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5fc0c20a-61e9-48d8-905a-d24f84c4d094', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd71b6118-2bd7-4900-b71e-56983619697f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7d2b867e-5701-481e-b163-39e9c571d845', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a15d38e6-473e-4ad1-9e51-0504c2c25410', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4f9acf8f-18f4-49af-8fcb-c4736aea4970', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '56663a71-2bd1-4ad0-8761-d88031bdfc01', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '50e15489-c86e-4df8-8e4b-d4e2cb30bc6b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a0b1fe7c-48dc-4c9e-a8ac-4d969c9f77fc', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', '1c17e99a-2fbc-44de-937b-1bb6de989502', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '18385311-230f-402e-858b-0c7709fd1a53', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '558a7480-cb3b-4a1e-aaf1-508ea55faca1', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '06fe3486-f568-4ef1-b71b-1312cce3cbb3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6c849044-941a-45c6-9561-6965f0787941', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9d243499-abba-44dc-9c35-065571d6b64c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b65ba228-dbc3-4bd5-86a8-e8e9864e1491', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a32b41a8-a42f-4396-a5a9-4bca335f24f0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '86c26ea8-5b63-4ca1-92b3-f4e16bf7f3d0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6dc39edb-1538-40a0-85f2-b1c7bf427192', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'bbe2d4ed-6333-4eff-9756-b1c6b018e4fa', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5ac58a7a-3b5a-4408-b65e-1f154b3ffefc', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'da24911e-a399-40c7-ae7e-0ced5e648d14', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '81bb9ade-f416-4231-8d19-5e10d5f8fda5', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'bd5e11fb-f041-403f-a1bf-343a0ce536a0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e1d0354f-949b-466e-8456-e977a38dfce9', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b9746e93-29e5-4d66-b851-71580c9dfa87', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'dd11def3-3779-4871-9f82-6b5506fac1d4', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a19a8e50-dd3a-43df-9b9e-e9efde46e260', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a22eec3a-da52-49ed-8308-f956534c2a47', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e8bae7fa-cfa6-4b10-a590-948807ab6624', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '854937f9-dbe2-4264-a9ee-68a0df7d144d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '49ecf64a-d962-43cd-b791-ae3cd9599844', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a86c0f17-e587-4fba-8172-e2a2ddbbbee4', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'dbbaf042-a463-4bad-a2ab-d9f054badcb6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '405c69ae-030e-4d1e-bf24-1ee2c5c0c0b9', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'aca01c1b-7753-4123-bf2c-f4c27aa0d0a0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd80c87f1-83f9-41ad-9084-1dfd85f7b202', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '20351cf7-4245-473d-995c-027ad6858a3c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4e735895-6b2d-4db4-915d-c866906daa07', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '17fe9808-8cf9-4407-8dd2-9030ef1662a8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f8059033-1744-45bf-83fa-b55f9da0a591', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8d53a935-554f-408d-a6bf-8e22a3487b42', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'eec1832c-ce25-4053-b11a-d1fd60227085', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '1b29dcca-77ea-451d-a549-f2ac20603668', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '83ba8e55-235d-4f90-aad2-73ae39b96ec2', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ffb8a030-fb77-4a61-b232-a9a1712adc8a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a107b6e3-bf86-4144-a7c4-2969a0af9643', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '41beea52-ab56-4837-95ef-2b5bb73ab4be', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8c7f7f86-eb43-44d2-a650-2e97e5216372', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ccf37b2b-d36c-4281-8b6a-990d635f779e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e3d7e46b-aa62-4c5b-9538-a5e0f963473c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'eeabebab-1f55-4781-91dd-f289ce8b6a3d', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', '7866b672-ce6f-4297-bf54-2cc935d07807', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4d9014ad-ab2b-4faa-8db7-4c38a0db4ade', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'be4b73a1-bb1d-4667-9b3e-724a1b70c843', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7812c7e7-f8e2-4644-91b5-b49cafd01932', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '01ef4852-b521-4d4f-9c44-d35d11041497', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '17572646-81c0-4424-bc42-296f027b9621', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '864c953e-5b57-4b53-a6f0-f34409e93028', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f93440e8-55e4-4d72-b9cf-f2c37759336d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f05fd06b-717b-44df-ae05-0a29483aa9f7', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8ea7a6a1-878f-499f-b182-cb0110a5bcaf', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b461d5f7-c4fc-4e73-8f8f-299116cc000a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '53bba55d-111e-4d97-89ed-f0c268011353', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '75247f5e-9792-4ada-aaf5-9807f2b40c63', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '201fa10a-da09-4ee8-8356-fdf15f586d86', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '80799adc-9353-4445-9d3e-2933a3bd9ac3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7795cbd3-6261-47d4-b10c-c8e12e9f6f03', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6b45f06e-0204-4cec-ba26-899fb725cd08', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7e97decd-f8e5-49d6-b46a-eaee9b07e5f4', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'dd41b8a8-6e0a-4ec0-8648-b8759ef0bda3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2359cfb3-7706-42b2-8bcd-3127c7e69aed', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4e95664d-6bd9-45f2-8e00-3af921a4a100', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ac5f6103-b8a9-4e21-b4de-d5543c26d82f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3a3b071c-4570-4946-b09c-bf065353ad9d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd4df8684-d9e8-4ad7-872e-683091e92d5f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '24970ead-a848-49c2-a949-9acf53f33ff1', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9a7a047c-35a5-4734-86a8-2e0b921d6e38', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd6934b04-4f5a-4b3d-8ec9-4902b99d044d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '488e8a2b-3121-497e-bb79-6d219dd184f6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'de168a6c-7f97-4c13-b939-fdf081212ad2', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '678021cb-3cc3-4b37-a34a-7ca790055f31', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a32b510d-ef3e-47e0-8fd2-aeba498ddedc', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0b8fbdeb-acc3-4a0c-b049-520f29661d1f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3bdc6ede-399f-40d9-b2c2-cdbff3f3d480', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '001a78ae-593f-4c4e-a62d-de39956017de', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '336051fb-f58c-4ce2-a32f-926ba9a6bbbe', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7eedd438-5358-497c-a527-d459b7bbe3e3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '99ba9065-ca6a-45e2-9396-5f0a7ef856d8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a2602e09-e64f-4f6a-9ffe-96d7e79cc703', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '04652ece-9cad-44d4-99e0-555881f74953', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '66bc29b8-75fe-49c7-8942-556b834abbf8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8a78e843-a13b-46fa-aae9-f27dc49d1d6a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0d187b8d-d3f7-4d06-bc1e-b04e68e33d8a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4b9fb9bc-6c56-419a-abfc-5d2d32867e49', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', 'c5635733-b14c-40b8-8ae8-005128509377', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e7ef484e-d5cd-4d3b-8ed9-d0a0144c1400', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7ec8097c-5174-4b1a-8a81-d9af7de764ce', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'db9942e5-56fa-48c4-95c8-c95025f084eb', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '16fdea16-6152-4ac3-8488-4222fcb70cbb', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e41c84e6-b407-41e9-838e-89f6665baace', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a0d322c2-1187-4fe5-8940-26cc3a586b70', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ccac78f1-1440-4e9b-a9ee-dca8ba4986f9', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5274d26c-90e1-4135-83cb-9f4f4d77f09a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd965fffd-c494-425f-834d-b29e8e3506ff', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '910f33c9-1aeb-474e-834c-ac9a204d29ee', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6e8c7795-bc12-40e4-9aac-5cd0224bb076', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '418e85bd-1bc1-405f-8e8b-fef6ec016cd2', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '81dd9da8-31b8-4cc0-a1bb-cd00b6d06078', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '04628057-2c59-40f4-a3cc-a7ce8592fb1b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c829d2b0-3fb7-4eab-ab28-2899fdf73258', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '77bbd279-7dd7-4736-92f5-82f90fac2ee8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3b84dd2b-df6d-408d-a4f7-9762a89c42bb', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a85416c7-4029-45c8-92ce-d88a166916d0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '75df1740-4ca0-4df8-b1a9-0fd04f2254ad', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '88afa6ab-4b9c-4d24-9a86-699b77ffe73d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b13548f6-07b3-4b07-8820-b5447ed5091b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8422958b-a5cf-470f-98de-ac91fae6fdd9', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '113e792e-04b2-42a4-87fe-b16b1ff9bb53', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2588c235-ef02-49a2-8e54-51202fe06fc3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd709b79e-f9b8-4be4-8ba3-f7c0c4694739', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '04b9ffea-c56f-4a1c-a5e5-c23de43180cd', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2fd6c130-5dea-44a1-896d-13d38fa1566c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f43da9d8-fa9d-438f-828f-eef30013a535', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9e27b29d-8915-4ce1-ab42-9da31e0178a2', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9d6e5808-2d29-48a7-b66c-6bfc258dcb42', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '86b581dc-461c-4f9b-8d5d-709b663945a0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f4e5dbbb-f66f-4fe1-8701-6a610c9be0e2', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c8e41763-7ca6-4494-997e-3c21864242f1', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a0b22394-92f1-48a8-8a3a-1ded50b56970', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ee18638d-0f21-45c9-93b5-5514f6980f4a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '18068888-539d-4a1f-a0e9-c7deebf56dd6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '24ab448c-d6ad-4ff9-bf46-fb5bbcb9798d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5ad09d3b-85af-4e79-a4a7-d28ed0cb0d29', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '05ee1758-f3e7-4f7d-aece-3b10ca5e0ffe', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7b5294b8-bf8a-4150-a921-24646fee4f34', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a811ae24-a83c-4631-a8dd-941fdea60d01', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e526e3cd-cca2-4947-9841-6968d2ed3300', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', 'c70b3c46-dc79-4821-bfb4-983eb28685bb', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '598586ff-15f1-4189-9996-4161e222e374', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd794379f-dce4-4b0a-b062-a5f8e25ba042', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '83ec179f-d4e3-4349-b66f-996d0cb65e06', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2184e968-6a6c-4cef-a6b9-570eb6eb8185', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '19d95d3b-bf73-4f29-ac68-4a17f3df4b21', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ab102a84-ef30-4911-9a3d-205ee56fa49a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '22425650-4cb3-4cf5-b03f-306d59dfc8c1', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c99dca40-5b82-4587-9bbf-1b4fedcbfcf6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '71105d8e-de22-4a70-bf2d-93832ded65a0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '447cf3d3-7ec1-4995-b7d2-d8848a379679', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4f3d3e80-b3c4-4510-b5ba-707b3882bad5', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '16322efd-dc01-4623-83c3-3b0e788f5fbe', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f8330776-6f78-46c8-85b4-8bde8b194028', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '80131f7c-13cd-4cfe-8328-11c2dd1a78a3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9e223165-c60e-455a-93df-573a06c07da3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '077fa7c0-e945-449a-a5cf-b92a313f72d0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '27026ab9-9bf2-42d3-80cf-497c4c96c2f6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3340f891-68f6-4dd9-b8e1-1b096aaa4afa', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '24de0cf5-3ff5-4597-8940-39f5e13bbcf8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '941ca3c5-e2ea-49dd-8b5d-8444d8b4568a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '77c2bc59-808e-4bc5-a0ac-f180c6fc90fd', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'db92cfbb-7e8a-419a-b14c-2b60067fef7a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2d45f83e-d4f8-4fa9-b354-a01b81c102a8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ef61e535-ccf8-471d-b3ce-ab932ca3665d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '77d2a999-e99e-4999-9acc-8c62625dcca3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '719c99e4-aaa3-426a-bdc7-d1c59f8666fe', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '204aab35-2026-4b9d-9a7e-26cb7497e8f3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '586a7f50-e9e8-4cf6-98c3-581a944a4afc', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4aad4d18-053d-4029-ad53-0340534084e4', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5b0fc7ca-c310-478f-a9d9-0a46aa3891af', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd45033f9-388f-4494-9d76-ba5a15f55edf', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '72fd1590-c3ca-4d65-9f4d-f9f49d01d87c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd7853a99-cf25-4e70-a712-8851a80fbcd5', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c634960c-a54b-4b87-b526-ae50af8557da', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b447ecee-c344-4459-a4da-0762f1f30821', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '90ed63b3-99e1-467a-a837-645d36b50046', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '24eed08c-8dd9-4d85-bc05-54563389691a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7da4582e-0bdc-4bd4-8781-b39dec270230', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e439ed22-0431-40c7-91e7-8e090ef4bb98', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6cd0c235-9f63-4bf7-9a77-8028fca4c25a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8616f09d-74e7-40c2-8b81-354150da10b9', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '1e8a5915-1cb5-47ec-9103-2dbff5de1532', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', 'ff9119a5-e3be-4dc6-9c4f-ce687a4b140b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6075ae11-e3c3-4d80-9b54-ff1675db24e8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e07819af-8c4b-4a54-8057-e3dda614701f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a961d14b-312c-4dcb-8ba8-77bc2a223842', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a01311e5-da64-43ea-8411-e204960ee733', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd1d6a3a8-fb5d-4319-a9cb-0d71e7f8892a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9cc3a6e5-9370-4974-9569-1e00fa0a244b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c4d10a58-a9bc-42d8-b47c-762544f0fe35', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9d0705ff-07bb-41ad-bf13-d4e5d48d1207', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd0d1da04-c04d-47d6-9b7e-d1624b06cb7b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5be20615-fd38-4052-a94a-70dd784a4379', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0f6be926-82db-4610-a0b7-30c6f2a77bb0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8e673fb0-f997-4c6d-94dc-b3f82e073c51', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2fdf5cf7-4de0-4d5a-82d6-97de9b1b760a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c34c72e8-01bd-49c2-8a6e-91d8c20ee2b6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '547949ac-d500-45aa-8925-95cb52168586', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9967b1a3-1f2c-45bd-bdaf-1db688ff7339', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4ae7a2a4-871f-4376-a01c-b01fe1a0d0cf', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9b57629d-82e7-42cb-93a3-dda886906659', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0cbd3a7f-6bd7-466e-b9ec-1ac834199bbd', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e90e1871-0714-4f6d-bf74-d509ad035d1f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '83da34d4-edbd-43e7-9517-e43e42ddac8b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '23827d08-064a-4d69-b2da-12d49510117e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f6af2e80-1a6d-4909-b45d-5f5909119238', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '02e786e5-35b6-4338-b48d-ac11fae37955', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '56b4328f-ac9e-499d-9859-1dee456afbbf', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'fe9fcd6c-7314-46a7-9148-72058ee6b82d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f134965c-ecdb-49a4-a212-6f29c264c45f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '49a66ac3-c7fd-4166-8410-b2566dc95d18', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c634f49e-e79b-4b3b-b773-cb87518d76d8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a738fa66-aaf8-4f8c-b7d7-9a23b5ab4587', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '958df3ee-2473-48da-aa70-9a3cbb5ca6e0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5bcc53b8-9cea-4180-8548-a90996e68c4d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2af91908-e8bb-40e2-90c1-e3a0bc7fac5d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '823fb554-6653-4174-9318-88507e7d08ad', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd2b39feb-4896-4ed6-bdc5-0432dde0386b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f1dfb32d-69e0-4910-8780-e8740ad25a5f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '56122bb1-908d-43dd-af7c-bd5f7706f8bc', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '99f38e82-d6ae-4705-897c-aa34ba56ba63', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e02a2327-e8b2-4aa1-9d2c-44f27209fe53', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '66d233ef-8eca-45e3-9af4-a51bdfc0a3c8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e59225ed-e028-4c06-a24e-bf588a1179ea', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a8925cb5-6ce8-4482-a811-9b788ca84e2f', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', 'e5e052d7-66c8-431f-9fd2-d739465a316c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'af4b2c8f-3bd3-4e8f-9da5-bc82c5b050ad', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e5bb5eff-e749-4b1a-9c0a-1f15cee0749b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c4a5b9da-e4eb-4e74-98ed-8b6db63cbe4f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '43c7fd6c-7883-4eae-a664-52a23acd5c5d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '968f91ee-eaf5-427f-a5b1-ae9004df7cbf', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '02fc72a9-8e32-4b23-b164-7262e054f6cf', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '95c0a40b-e84c-4020-b70f-9ae681666e42', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7de98b38-9500-4ab0-b27b-27a75e936a3f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd0c88133-ac6f-4b2a-8ee5-d2dab8baccc8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b6588a0d-1b30-4758-96f7-c338d5446c7c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '55cc0204-38c2-4da8-99a2-5aa51a36bceb', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'bce90e91-57be-4bc6-8faa-15255fe0da4d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5c765eb0-b17c-49a9-8b92-fbaca7e48669', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ef9a81f7-0f69-4201-a4cd-05c8bddbc3d1', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '00ac4c41-2bd9-49a5-bdbf-271d4c5d4e34', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3dc15ced-182d-42a7-9e1f-b81c3d33c918', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8de01028-3692-488a-9794-d0bdfe5ada27', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4c5d587c-9f31-47a4-ad24-dd63e30c4563', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '36c778cb-bee0-44ac-b672-f9c492cfd942', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'bb8923ac-e5e1-4a2b-b168-1c7f47181563', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'fd3a568c-3c9d-400c-8e29-7774f7909a14', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2be332a0-6265-401f-a83a-c79ab27a99d2', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2a8c6e71-a2f0-47e6-b3c7-fdab3a227287', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd753630c-8b75-44b2-ad7c-99feb67db715', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f30a27da-d6dd-45f2-b4dd-538567d3b85e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '11346a7f-ada7-408e-8fd6-3093d6de5d2c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '57accdb2-1313-404b-9f44-8ce877279239', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'cec5de79-34f7-4106-887a-87aa16af77b4', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e3a33739-6820-4d5c-86e3-4252740377f8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '370c0319-c2b2-44a2-93a5-3e6aac080b0f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b6c2116e-3089-44fa-ac33-39e499cc1a12', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9e753e6f-f51c-4bc5-9f6b-cc23a6628122', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0a7e511b-0270-47d5-9241-b0f4ec6a144a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '29c0c3be-daa1-4ca4-86aa-940d260c7b5f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'eb1a7349-2a33-4376-9a23-d39ca42cfdef', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '12b84858-55b1-4920-8965-1f4965bfd38e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '37cf6598-a78e-40f5-817a-96d36b1680a1', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '87d3a3da-62a0-45be-a554-c03118a2adbb', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd67c7bd1-19ed-40f5-8894-38fbce718963', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '33b1caaa-568b-4d41-828e-bda67ba0469b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8b466e5e-cb0a-458d-8271-a7c231aa826f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '577700b8-522d-4d4a-bb94-ca864be022c0', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', '88ab211f-a195-41af-81ae-3ee08e54e929', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'da8ce3c4-59c7-4b75-aa4b-71aa08dc9ff8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2e5cef8a-ca19-41b9-8c85-e89785784f88', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7138819c-9288-453d-914d-d8a1e89c9c70', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e5065859-6775-4fd8-bb3e-c7fa780b9809', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0c7245e3-0d44-41a8-a0f0-8683a5f125fb', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9879f5dd-4831-4fa0-acd0-1e9fb522b24d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '67c360a3-fe99-4987-9108-e05018d2411f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '05d919b2-f8bb-4bfb-b59a-869600298646', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '552cbd11-5eec-4b28-968e-9f881ab59b7e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6ad37e09-adc8-468a-ae8b-cb6548879fbf', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a4ce5fd4-1f80-446f-baa0-488ac77491d3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b79c6f2a-f3c3-4f9c-a14a-b81f3ac7ecb3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '21b2c953-c97c-45d4-a286-c9eb0f614527', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '736c5a83-68dd-4ada-a86a-9dfea24e9335', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b6b1da2b-07b8-41cb-84a8-7f5e448e00b3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '06b9370c-ffb5-4b34-8df0-b405e5887873', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '40cb1ac5-a996-4622-aba4-5a99f72b8737', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4f898405-5192-4998-b7ab-c2704db77313', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7ba27aa5-a219-4db9-b884-b0b75ce33f62', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6c7babaf-7ad1-47a4-8fc2-1c6315285540', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0da00893-eaee-4176-a757-adc33356699e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9c75be78-fc8b-40a7-8379-8ab9c50d3337', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'cca559e6-6f2f-465a-9019-4308f92242c9', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '71162691-728b-4b6b-a26f-64a6b2186477', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'dc9dd4f7-676a-4b2a-b787-7edfcd7255d3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '512c44df-8476-496f-9ff7-2b5d0861df02', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3deb1668-e037-49d9-b9d7-172c26027dd3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8b1e1e8f-fa75-4d45-a9bb-3248472f8d08', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '842789bf-bb27-4768-95a4-86a7d91f71ac', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '920ec291-c50c-41d1-8149-bd79ce367df3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2efc652a-8b0d-4730-8863-b3a93a56e464', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ff18f86c-e877-4af7-800b-d67fdecfd38c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9a215999-e7ff-4ccb-9c20-110fc5764cf0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'cc8af7ec-2f85-4680-9bc9-f46f8874cd6a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd0ca9e66-941c-446e-8e4d-d65a6f888a60', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7f17c414-ba3d-4fa4-8414-49c875ec5c9a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '1dfc4f42-7bc6-498c-b82c-5bc184dd11bb', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '289dd686-62af-4155-802f-5a3800a33200', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6807ed3c-e0dc-4bc4-9b43-b4a3618bfef6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '22fee339-c79b-48f5-b551-e52ea296231f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '078a2e7a-c36c-4535-8ec9-3a587551453f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd68394a2-4b59-4019-874a-a5cb5d31e49a', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', '042363ea-a60a-4858-8a18-867e062519cd', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c7a55d61-355f-45e6-a3ee-200f4822f0ff', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '87c1561d-a983-4d1f-836f-30b72a8f328b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b85e6a29-cff3-4c3f-b2c0-c054902fc897', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a9986925-e8ad-44a1-a0cb-c856ecebccf8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '39ac9578-e15b-4f4e-aef3-e179626ec255', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ccaf2415-48b6-4518-9583-83d8bf5882c0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7916ae8c-b03b-4f0a-a293-f5881ada58cd', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ab4c08b6-bac1-4ea3-a024-7793c737f010', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5f7e9f59-9597-4b8a-94ec-fa4a1093c95e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7c4ce466-ab6e-4bd3-b962-6351685c14ed', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3fcdc136-8bed-4fd7-9c0f-7508dd6ce6fc', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '360b4cc6-e1fa-40ba-82d1-766c2ac5942d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ab4cf38b-5338-420a-834c-f9249e017ad9', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '427f6997-c3f2-479e-877a-6e7af0c944c6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8b7fd5cc-f596-498b-b518-0ecbe6133384', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'caef2174-b0f3-4cd0-afd4-970239ccdb73', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2f02c1ee-bf0d-46e4-a662-9679af1d3125', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '55517188-d547-4107-91f6-c7c72e1d4bcd', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'af9b3b9a-7976-444a-9756-ace544ed0db7', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'bfb05c1a-0872-4e46-981b-a7453f3706dd', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'bd8184c9-b38c-4d61-b447-b9d59798370b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '1a7ff5a0-5002-4da9-adab-173f67836fcf', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '63b28a80-4101-46be-a07f-7040f382548e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '57f40ab5-11a0-47b3-afae-70bcb59f7cc8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '069d9973-745c-4f22-8bed-ebd0ccc1a60c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'cf5b7572-4ee2-4dd6-bf33-d361ec839e74', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd7960706-52c2-4b40-9dc3-19b26b22b286', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '43e8233a-c6ab-4117-9622-e223ebe12b88', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7ef854ce-ef87-4eee-a9f5-352dfed0d6ce', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd1f82907-b385-4cd3-acb6-fec38008a65b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5bcdf0f0-ef16-4f02-bd57-a15476e24daf', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '909db1d2-0255-4410-a2c2-869a5f5f9657', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e4c835b8-9943-4f76-848c-0825708ca4fd', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '95cf2813-a181-42fa-9a80-772e95d15098', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'bb45eac7-3fa6-4ad4-9fc7-6089b3bc3a4b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e9c910ef-f4f3-402c-9b25-e643f3e2a8fa', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '30414be3-b22a-4e02-a412-39fc2f13efe9', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7d7afb48-c145-4468-b8c1-12f7cc92519d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'fd46c9b1-bfed-4ea2-aea4-7c480de3d173', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '037e4974-1990-4b2a-80e8-bdfbe9e3df43', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '988bcf85-2200-4b00-bada-e28eb3bda734', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '53411b99-e883-429f-b88c-4bfd0dc914fe', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', '597eb976-bc6a-4c48-a18c-38ff526b35b7', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7c46197f-8645-476d-95dd-0843079435ac', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '65346231-4eff-4ae0-9cfd-a8b4c17a0569', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c55ff4bd-db20-4e69-a938-e9d0c5ff1600', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '910f9b63-e0e6-436a-b6b2-7243162c4757', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3117552f-faca-4507-8e4d-c2a9549df81b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'aef64371-3e18-401b-a7f9-40b59abefa23', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '300f24b2-a3ae-481f-b203-520c0b4f6ac9', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e8ee49b4-dfd0-4fbf-b85b-ae553691ad6c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9a0122e7-83f1-42ca-88ac-08cb437af10c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9882d2b1-9bb6-4f70-ad7c-167b83f4d6dd', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'eaa78f81-543a-4240-bab2-bd7a63c7a15c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '82d624a9-ae0f-42d6-ab5e-f7421e1ff767', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f8f4c604-fcc2-4cd2-adb8-6bc55c4056d6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6bc79db0-c7fd-4255-ac49-77d7eb18d44f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '36b2abdf-202b-4ae9-8202-a624f35606f6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '95e7b84b-c0f5-4ac6-ab3a-798ac22fc3fa', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '23cb1da9-647a-45e5-8d58-12f4a05c5c64', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'fab1e201-b99b-486f-b5ba-3ddfd85a0a2f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8a3e2e94-5daa-47de-8e3d-aa5a54d61010', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f453ff17-e75e-4fa8-95fa-b38b1cc8d34b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '79c97043-811f-4add-9d43-cf06d36cf25b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3b734219-262b-4343-b14a-4d4ce28239c3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ed77f101-ba41-4cf4-a3d0-93ea8049c1ca', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3feea024-8c3f-4e77-9275-4f060a1cd7e6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '45abf0eb-d175-4e68-900d-62420b9dc66a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '65a4454f-8b50-458f-a631-33d79110bc5c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '1584ac6a-cab1-45f9-8fe7-cafacdd20d77', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '34119afc-6402-4f65-963b-e22aa5619c64', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'bd4274e1-e1d2-46a1-9326-8191f7dbfaeb', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '84017e0c-c0c6-4321-8e6a-ac81a979a092', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e114fe7c-c529-4ef4-acbc-e3e839400df7', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd81aa84b-c2ab-41f0-8ad3-0cd7310fcc6d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a2a11a7e-3bea-4545-a3ba-8d2d01defaf0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'fa5addbe-56db-4605-86f0-bd455f2f82c9', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '48b79be9-094f-4361-b646-99ecd6b431b5', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e42b2e1d-6aaa-4345-8286-b387c0959cf6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '46ae31ab-45e8-4110-afef-eb8e0cb3a4dd', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '67d7cb7a-e81b-467f-b145-8919cd0adc2b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'cb1ba872-39c2-4f99-8749-4c4b19cf9140', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b52544b0-fc49-4d30-a6a2-90c927678927', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e6fc7cf5-aca0-42f2-bced-2c9b90a677dc', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8d6de020-36e4-4be3-bd8d-752822a6d30a', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', 'da5a33d8-0c17-4016-a566-4a56a64c5515', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b8e82dfa-d59f-4a62-862e-2ab74252698c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6ad4ad04-0f41-4ef9-a87d-73c85b3c7f0e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd1dc8d43-32a9-4d4c-92b2-c1af5da7a673', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8f01cc2d-9c5f-4fde-84dd-eb6edcc372a8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '165fea88-cfd4-47cb-a142-4bd4d271e4e0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '78cd74c8-f3ab-4b79-8deb-777e0d46348b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '06e3086d-e2a0-4f37-aa5a-956236e7563f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '1f87caef-caba-4e93-8916-90c3ecb3cfb8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f569427a-3e7a-4861-ab8a-994d61d091bb', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '009c89fa-931d-4579-b44d-a677c53af318', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3f27c093-14ff-414b-baff-a40446ee3602', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c904eb58-4947-41eb-bb8d-37392972af32', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '624a90e0-3b3c-4719-98d6-dec1a8688486', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0be4c27a-5c0c-43c8-a88f-9413cd30ad0a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8e4134f0-03fe-46ba-ba0d-eb39b9057971', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a8ab1caa-2f66-4834-a272-3369916d04a8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e0bf3ec2-aab0-44a4-a7ef-e872561bd5d2', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3b1bf2b1-795a-4960-bb51-5bcc4d436791', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ac5e7426-3502-4abe-a764-1319fedd6f36', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5390fd3e-18a4-4230-b463-e5b218cb4bb0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '84c24328-93c7-4617-954b-5cecff70b124', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '18e652f1-4655-49df-a804-d1cfd0ba220d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '600ade99-cb41-410a-8b13-3cfbbb05c1ce', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ed184d52-95df-4792-b1bf-0b43ba6977fb', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ee5e2b8b-73f3-487f-85cc-9c4ac7835279', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9de6ff4a-ab7e-4fef-906d-40b78fb04c93', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f6e8152b-336e-41d5-b6d7-7c2240568c14', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b25be83a-1c5d-4c60-b3a2-ac5b91095476', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e31fd8ab-4751-4e0c-9490-6ab116d11b6f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'dc9e71f1-5a74-4afd-815e-6bdd7ac16c70', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'cc213bcc-bac9-41cd-957e-5d0fb316414f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '1675023a-4a00-4ed6-881e-e4f7a2610c87', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'fa06f738-5837-455a-a97a-8ce66c37790c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '204fc181-ebfb-4852-9fc0-247145e4d9ae', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4800565b-5a70-4807-b5b0-2a58376d5367', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c7afa961-326b-4eac-9080-1c998676a039', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '36b7ba34-3541-42f6-9151-fc4ca28513a1', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0024efc3-c6ed-4075-bfad-3d80c8d5d9f7', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3bd5a40e-aab9-46bf-96c4-87a0a67cd1c3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c9f53613-2a8f-4add-bc6a-6223b3450fa5', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '68f72a07-7cd4-4ac7-a159-bfccecb23044', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '49cba218-00b5-4680-8f6a-dee1fe99201a', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', 'e0ca8ef6-cfd3-46ca-8976-09343c76c9ea', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '65cb2d46-7ea4-4b0d-9bd0-ca26f4dcfa4c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'fcdcdb71-fb3b-466e-96a1-f6e85d070183', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'acad2b63-a8e0-45d6-8689-b1848b08b096', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd960f6fb-cd0c-49b3-a17a-278552418e1f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a810eccf-6814-46c7-be48-b23dbd17a1c8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '053897e2-6ec3-4ad1-8677-5dc07a691f05', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '464b33c4-1b3d-401f-852d-79bd32f20ed9', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '761a8b68-0817-4bd9-ae72-0dcf6aac4460', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '57c6f958-1df4-4ff3-9505-1f80a58cdd8b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f26a2eae-9f1f-4895-a4f2-7f83bb3529ab', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8b7da745-0398-42a6-9c1e-4a484bd98fab', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e9a4f647-356b-4db5-b570-abe9b098a63a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'eb30a8f5-506b-4611-ba43-0be606e83b61', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6e35027d-36e9-437e-b585-27ced94c5dbf', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'eff5ce7c-c4a0-4140-8d69-4ab03c026518', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f94d0264-61fc-41df-9e12-d158a5e48e3e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '20451ebe-04f8-4d16-b6c9-f9b41fd8441c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ea2ae8be-aea4-4384-adaf-82800af6d3b6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ab24bf8a-c6e1-43e4-b12e-b52d6d0c1c79', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd4306af5-ee0f-47db-844d-9df361280b9b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ef5e1f49-c669-48cb-881b-67caec328c2d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8866a22d-ab2c-44d6-9bce-e1816de96b7a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '25503ea1-d78f-4f18-b704-d12b82f5690f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '416df12a-c14b-426b-9d7d-a17809165e8d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e5df1f32-325d-4f80-8be6-9b8a07b2adfe', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c9f3fae9-7e08-409e-a2f8-775183336aae', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ed8df70a-70ad-492c-b086-e1e79fab404a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '36c8cfbc-131d-40f5-8587-6a830508eded', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '71f94636-aeaf-4acf-8a97-eb4641eb264c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd76d0cf5-b0c5-4ca2-a041-bd5eaefd6903', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a5a6e1e6-bb70-4191-8eeb-b5f8d0021018', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8cde49ee-8297-47da-a7a2-f66c8cd794aa', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '21dad5d1-4b86-4299-acb5-e5173248967d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3f03126c-63e4-402a-97fc-bf3418bf30da', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3659f9fb-962e-4f12-9a13-7f33ba60de8c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '020bf940-7f99-49d3-8e50-3917cc3975c9', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6ce69a0c-2bef-4aec-8831-86acef1385cc', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b3dd03f1-c0e0-4383-aeb3-49d93cae318e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6bafc6d3-94c1-4968-9ce7-0ef24ae8e7e8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '31eebb37-cd87-47b8-b908-83da79243c76', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c6afa0e3-9b57-43b2-8394-3743bc05eb2e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '42810b4e-db5f-44e6-aac4-0a98054ba081', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', '6e3cb0a4-3863-4c3a-8d4c-cf1a9b3b8d9a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2cfe6888-b96b-40b4-ab0e-d2595119abd4', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '1a30f891-5ca8-4163-be99-b559c31eb003', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '05dd43f3-f565-4027-b62a-cd012209682b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '674e40ab-f478-416d-8016-922b6e086d60', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0d65f0f3-eee4-4e4c-b058-ec219516e4a7', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'cd138cf5-9235-46b9-bd5d-025d876cf55f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '131ceb87-3410-4f59-a4ef-fe4dfaf0d23c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9f57d6c7-1858-4fed-bec4-95d5484ec54f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '19dbe340-a4d9-44d8-a0d9-6d4eaabbebd5', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'eea9b872-a1a3-4fd3-abb5-da94b0370e9c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4b74587b-bc1b-4167-bb06-276d78f63990', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b43396fe-4541-418a-ad80-5f6416354f1e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5316ac3d-7c9d-413e-a5a2-b94ad1e2ff24', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '10bb3578-1edc-43eb-bbc4-e3752f198a3d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9503a007-34aa-4810-88ab-f9aa033d8c29', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '181ea62c-b693-40cd-be3c-a94d2673aff1', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'cdc454ab-182c-46cc-8505-45d6eb89627e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5ee5b4b4-9d39-41d1-bc08-71840135d87b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'bd85708c-4317-4362-8bd0-b6170725b641', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f1c62aa0-c6e8-46a1-9fcc-57371d101e42', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c2b19f83-3189-4ae8-9d62-b0765837582d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '258a5673-9225-4ac7-9377-1fd903c13553', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '90dc979b-f49d-41f1-8983-be16fbd2cd3a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ce6960fc-bd26-4483-8a85-79741f098dbb', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '08ebd932-cc3f-4c24-bcc0-646461f62909', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f46a3028-1269-4851-9efe-962dba1b78db', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '330606c6-1550-42ec-ab29-9eeab5be83cc', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'bc10c5ee-58a1-41f3-96ec-e2d2317b2522', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9406e0ab-998a-4b22-86cc-8a4ce0a6f9bf', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '57d42504-33c7-45cc-81c0-5f5831394e09', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e3098ebd-f63f-42d7-b675-99f25b1a8ffc', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '141c89b7-4934-44f7-b530-bf9cd8138f71', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '059d12eb-288d-4ad0-acee-379777fcbfd7', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '74ccb58e-1b7f-4595-a532-38bef3ddb867', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e0e5cbb9-2c1d-4b8a-9308-1fd3dd5e6f8f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'daca695b-2ddc-4298-8c32-9ce8aae52a98', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'aa0f8662-2f56-4b86-a10d-b075869955f1', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4cd52eb0-eeef-498e-b94c-c8d368178641', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '60c71f25-51cc-4f92-9327-2c18be460dc5', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2c16a726-56f7-48b6-b140-e98301b78bc5', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '510c0e7a-33ed-4dbc-8a68-7874c58865c0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5de4f624-99a9-427d-ad26-b8d09cc6ee61', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', '6c778d41-215b-423c-b7de-40b7ef5392af', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6488b172-25b4-49f9-ac4d-bef62b9a8015', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd895dda7-a1ad-4afc-b7a7-a1cd1d391591', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e7957daf-d967-4ca8-bc01-e7e090d53a6f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2286ca7d-ca2e-4bdc-9d4b-43fc22ee4d76', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '71785cb0-cc66-4edb-bb01-48f032d518bc', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '43003170-bbe2-4da5-8b91-1495e63ede12', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c51be266-3e15-4656-b8f6-6f05d855fbf8', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c63f386a-1e07-4ea4-ae2e-d5b71974d39b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '67db8a70-5ca0-4dca-8a86-21f736a56eab', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2a87f168-443f-4d1a-8728-bfcc4ef5280f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '1fc88195-aeaa-4d68-9a2a-36263e2c9f1e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '20726747-9e30-4162-8018-afad6fc01114', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '40abc281-e3ab-4fab-a18e-b146fcde5fc0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7e46c934-ae1d-43f0-a755-585eb5938558', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4944d506-281b-42d3-83c4-96f1bd30d4cd', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '2974714a-88e5-458a-ae69-71343dd8034b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5800f662-bf2d-49bd-9d17-60452af5ec1f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '22b17e20-d73a-4ba0-8c6d-7a01652f162a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ae8d84b2-30b2-4e27-84d8-cf734d13ec22', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '362f0d2e-dce8-4351-a090-1d7996d0d17a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '14889d67-2fd4-47e0-b981-b84d154b4926', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '1d9965c2-87f0-44a3-bf4a-6bcb639bae24', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '795f8f32-7ef7-4f74-b826-a7a50341d0f9', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a97945a9-6de2-434f-b044-9577add56562', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '38d43ab1-e72e-4146-bc4a-614ac0942daf', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4d0fcf9a-c6fb-4b11-a7ea-1d82e9f8d6aa', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e2634ea3-7445-485c-8b9e-feaa97f632c6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '63b61543-b108-4b4b-bf97-adda3a89d4c4', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e9b98fb0-3982-4fbf-aafd-1274f73fd664', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ec476a82-b171-47cd-873f-179f2dffd529', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8e6d0da0-54d3-402b-ace7-2d6b63106d43', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6d241e60-0173-4f0f-b67a-360500d2618d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f402a8e5-8fd0-4bed-af70-fe582c73e667', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '7d8f4f16-9cdb-4006-afd3-c57b1c71100a', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'cf309260-17ee-441c-83a2-7128d97eaab1', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3c4a1821-c906-4d34-961f-30ba5cc4c47c', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3ac8981d-0338-4289-94b9-3cc2f2c9833f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0a80ccfa-4f3d-42d4-862f-b7de6c64af33', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '76f49bf6-e023-4a2d-b14c-665f5de38d9e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f5106e18-8146-4ee7-b216-56ea3b917e36', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3e190e41-4421-4e55-9a10-6767aace72cb', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'eb8ef27e-07a1-4fdf-845c-d8a2bacb755d', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', 'd0637196-f8bc-4793-a9ed-d659026e032b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '75efbcc6-1923-4ef2-b066-1c588a32d7a2', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6ee0dff9-539c-4762-83ef-a041481c96ab', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6167e5f2-40fb-4d6f-8c43-180105416271', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4a3d295c-bbdb-49d2-b916-df4c23ad4a2e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '654a94c7-e7e1-4285-b65f-161ba77dc7cf', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'abf4b578-39f2-436d-8d26-16d575c66ad6', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9dc008c4-ff39-4212-9187-c564d33a1cb2', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '86afdeea-e7ef-44fe-9e32-b88664722a79', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ac9c6b5f-c3ef-496b-82be-fe0e7431d625', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6e51c733-ce72-4c79-88b2-4ead7b290fef', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ae0b18d6-f5bd-49c7-9b29-a76a4f2f3802', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5d16fdb3-cf68-4d2a-b00f-7b8bb590e6be', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e995ffbd-db5c-49f5-b52b-93d00b4a1b20', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd9bee1fd-7d51-4e95-8204-56d71d963528', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a4b9cf73-53ec-4410-8cc0-1280aedcf789', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '65c2839e-1103-47a7-8609-6f2030e0d9e7', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6c73507e-3ee1-41e8-883a-973f77c529d1', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c16cdc68-9f9f-4433-a530-c00ab057ce15', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3e100d11-018e-407c-9ac6-26e64b2e19d5', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '9dceebc5-dc24-4c38-a398-688521281230', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b326c0ac-5c51-433c-aad7-b4dd66c3cb3e', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c7bbf82a-60bf-44d7-a7bc-c2554b83e518', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '383f622a-cacc-4fa5-844a-65653d34f489', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5731695d-593c-4476-9ab1-703a603862e0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '12e79754-c7ff-4829-9872-a61ff4c62f79', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '306429d7-edec-4564-baf4-5bc00e5eb067', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f97a9f08-b2e9-4eb0-9ee4-55597f8999de', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'cb01db18-1a4e-4709-9ed3-3ab6c2587ab4', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '0c5aa124-28e8-48e7-9e87-b7b5524ddc1d', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '96060a38-7b68-4c1d-aed8-0c6a478a2d26', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '088a6dc6-d343-498d-bb62-77fc16e61c88', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd1426fc6-8b95-4662-b73e-0629b5300dd7', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b8c44c06-57a1-4d86-b0a6-3b118f89046f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '44800472-e6da-4435-a2d6-258bffce5388', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'b8968a2e-6d34-40c8-bd45-6261f8257f88', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '8965d553-8850-4fb1-8d43-0aec203f0541', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5576d673-c40d-4fc7-be0c-369159c4918b', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c6a91d37-9a00-4603-937b-c25f0d0a70dd', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '4de3f9b9-55aa-42ba-b12e-33e941a232bf', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'dcb7cb9f-4433-4f05-abe7-168bd5a25ecc', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'a6a0cefe-d75c-4806-b9c7-58421af27f6f', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'e469c877-5f8a-48f2-85ce-6ab0fd46cf77', 'VALIDITY', 'SYNTAX_ONLY'); -INSERT INTO "PUBLIC"."ARTIFACT_RULES" VALUES -('__$GROUPID$__', 'e77ee1e0-2de2-46c5-acc9-24ef5b0bbe78', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'c7e1c922-b056-4ad6-aeca-8583652662f0', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f151fd72-97c0-46bb-84bd-5aae4e2542aa', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'd65b422e-d7cb-4fe2-8303-e2077ea626b9', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'f4984726-2a40-4937-84c7-dfecab2410ce', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '6c9a82bd-dd5b-46e7-98aa-07a8c60f1e21', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '5ac98efb-3358-49e4-a67f-4111ebb829ec', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', 'ce8d14bd-16e1-43aa-95b2-256580472ff4', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '70b4bf2b-3505-4d97-afc9-bddc1d99cd38', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '3ba1ac4a-8973-43a9-89fc-7927793cd3c3', 'VALIDITY', 'SYNTAX_ONLY'), -('__$GROUPID$__', '87d1c0e6-60b0-44fd-bece-ea163a468bf2', 'VALIDITY', 'SYNTAX_ONLY'); -CREATE MEMORY TABLE "PUBLIC"."VERSIONS"( - "GLOBALID" BIGINT NOT NULL, - "GROUPID" CHARACTER VARYING(512) NOT NULL, - "ARTIFACTID" CHARACTER VARYING(512) NOT NULL, - "VERSION" CHARACTER VARYING(256), - "VERSIONORDER" INTEGER NOT NULL, - "STATE" CHARACTER VARYING(64) NOT NULL, - "NAME" CHARACTER VARYING(512), - "DESCRIPTION" CHARACTER VARYING(1024), - "OWNER" CHARACTER VARYING(256), - "CREATEDON" TIMESTAMP NOT NULL, - "LABELS" CHARACTER VARYING, - "CONTENTID" BIGINT NOT NULL -); -ALTER TABLE "PUBLIC"."VERSIONS" ADD CONSTRAINT "PUBLIC"."CONSTRAINT_B" PRIMARY KEY("GLOBALID"); --- 1000 +/- SELECT COUNT(*) FROM PUBLIC.VERSIONS; -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(1, '__$GROUPID$__', 'cb91ebe7-5a1b-462f-bc5d-3e05a5b4d0dc', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:50.454', NULL, 1), -(2, '__$GROUPID$__', '06c4c0c1-d00f-4664-b405-5bf8f7c3e9ea', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:56.645', NULL, 1), -(3, '__$GROUPID$__', '7fb9cda5-e93d-4b1c-8fd7-ba55ac70008d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:56.675', NULL, 1), -(4, '__$GROUPID$__', 'cf77f4e5-9143-4e19-9d86-fc515eb12479', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:56.707', NULL, 1), -(5, '__$GROUPID$__', 'd57c8ddd-e38c-4465-bf43-0df1abf594aa', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:56.736', NULL, 1), -(6, '__$GROUPID$__', '96d02ee0-cf26-4e6d-949d-2edff4f251df', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:56.767', NULL, 1), -(7, '__$GROUPID$__', '0145500e-4636-48f4-ae94-b171ab8bbb4e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:56.796', NULL, 1), -(8, '__$GROUPID$__', '65fb3521-9945-475b-87bc-32f11d13799b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:56.823', NULL, 1), -(9, '__$GROUPID$__', '22d74f07-581f-4bc5-8a16-171fa9979403', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:56.859', NULL, 1), -(10, '__$GROUPID$__', '0cc7ef24-bb6d-4324-a03d-cf23a67fe464', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:56.886', NULL, 1), -(11, '__$GROUPID$__', '79c6ce7d-3b49-4e8a-bb2d-8c262dac2e55', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:56.914', NULL, 1), -(12, '__$GROUPID$__', '942913c8-c70e-4b29-9a5b-cd0b64a56872', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:56.947', NULL, 1), -(13, '__$GROUPID$__', '7e467e02-2f34-45db-9e54-768e2baf8964', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:56.974', NULL, 1), -(14, '__$GROUPID$__', '24f5c66e-6519-4ed0-bd16-5a1405e4db87', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.001', NULL, 1), -(15, '__$GROUPID$__', 'bf1362ab-1cd4-4cbb-b555-d600e6b91aa6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.035', NULL, 1), -(16, '__$GROUPID$__', 'c7be03fd-e62a-4560-a23b-5457462124d6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.067', NULL, 1), -(17, '__$GROUPID$__', 'e65be352-8ad1-4da1-9232-270d86605600', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.095', NULL, 1), -(18, '__$GROUPID$__', 'd24e1068-1a9a-4664-9f3f-f02c3a816190', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.121', NULL, 1), -(19, '__$GROUPID$__', '205db78b-e3a3-4ad5-ac0a-c053c5adf2fb', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.145', NULL, 1), -(20, '__$GROUPID$__', '260f6311-dabd-410c-a5c8-ed18d7966ef0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.171', NULL, 1), -(21, '__$GROUPID$__', '39173b57-91dd-43ec-b206-6708f9b44dac', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.199', NULL, 1), -(22, '__$GROUPID$__', 'a5b27784-cca6-4e99-8a57-e7c93325d53b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.226', NULL, 1), -(23, '__$GROUPID$__', '40428271-3b48-41ae-adab-896cfeeb9e32', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.253', NULL, 1), -(24, '__$GROUPID$__', '7c560561-7bbd-4fc6-85de-9ea373a4979d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.281', NULL, 1), -(25, '__$GROUPID$__', 'f6742416-4b6c-4726-8a4f-7ee4f861d3ad', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.307', NULL, 1), -(26, '__$GROUPID$__', 'bde4b305-7eb8-4fc0-a5a9-a3051b8c8ba7', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.331', NULL, 1), -(27, '__$GROUPID$__', '88f7b085-7ba2-4341-aac3-3d2a9aa7ec9c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.357', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(28, '__$GROUPID$__', '4243f08c-608c-42ba-b28e-c0b8b988249c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.38', NULL, 1), -(29, '__$GROUPID$__', '58c490f9-8a61-4ceb-9345-360500e15881', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.404', NULL, 1), -(30, '__$GROUPID$__', '9150c976-babe-492d-8edb-785497ffd23d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.429', NULL, 1), -(31, '__$GROUPID$__', 'cec97fd5-9151-4bff-9133-45c746560e91', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.454', NULL, 1), -(32, '__$GROUPID$__', '9117820f-8856-4f31-b70e-51f977d8c5fc', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.479', NULL, 1), -(33, '__$GROUPID$__', 'e15b51dc-cc77-4797-8d02-c2c03e5a73a3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.504', NULL, 1), -(34, '__$GROUPID$__', '8a5e64dc-a9a3-42f7-ad68-a6ae4d0e0c5b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.528', NULL, 1), -(35, '__$GROUPID$__', 'c4b4703c-fbab-4421-8ac9-da3709b99174', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.552', NULL, 1), -(36, '__$GROUPID$__', 'c03f8abd-3a16-4478-97ce-3d6491b829f4', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.577', NULL, 1), -(37, '__$GROUPID$__', '803a029b-da61-4baa-8da3-8a327b6c6d56', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.601', NULL, 1), -(38, '__$GROUPID$__', 'ae131edb-debc-4415-95ad-94e781aa00cd', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.625', NULL, 1), -(39, '__$GROUPID$__', 'fc01cf2b-000f-454a-a428-e456de015c34', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.648', NULL, 1), -(40, '__$GROUPID$__', '2c160926-5265-4bf5-a1cc-0c87e6953b97', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.673', NULL, 1), -(41, '__$GROUPID$__', '02f72213-36d5-40e1-9ce6-03ac4df92087', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.697', NULL, 1), -(42, '__$GROUPID$__', 'e285c686-5a40-4ff4-9178-ab332512120a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.72', NULL, 1), -(43, '__$GROUPID$__', 'd5598f2e-228d-440f-ae93-fc683a5ae7ef', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.744', NULL, 1), -(44, '__$GROUPID$__', 'ec81316a-6522-47bd-879b-52fbc2425a58', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.767', NULL, 1), -(45, '__$GROUPID$__', '8d1857de-b458-4476-9f20-a26ac8343b62', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.791', NULL, 1), -(46, '__$GROUPID$__', 'a28731d2-ae4a-4044-9299-e6a51fd37b8d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.814', NULL, 1), -(47, '__$GROUPID$__', '0124d710-92c8-4058-9dd9-49b36690fa5f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.837', NULL, 1), -(48, '__$GROUPID$__', '214ca507-695e-47a4-b32e-2f307f05050a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.862', NULL, 1), -(49, '__$GROUPID$__', '32be4fca-566c-4ca1-ad6a-3bb408f44abc', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.886', NULL, 1), -(50, '__$GROUPID$__', '55556b17-156d-46ba-b800-259e5a12c0a8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.909', NULL, 1), -(51, '__$GROUPID$__', 'd1e5c01d-94a2-4c24-a9f1-187d30c4393e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.932', NULL, 1), -(52, '__$GROUPID$__', '6b556835-d792-42ac-9471-6b33e7864bde', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.957', NULL, 1), -(53, '__$GROUPID$__', '56852352-e7f2-4b51-b909-ddf0e222c60e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:57.98', NULL, 1), -(54, '__$GROUPID$__', 'a08e294c-867e-4dbe-87e6-f54da187cdac', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.003', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(55, '__$GROUPID$__', 'cece0559-1bec-4d4c-ad4f-42bb2726ffd3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.027', NULL, 1), -(56, '__$GROUPID$__', '00ab9a7f-ffbc-4964-9425-af4b96d26aff', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.051', NULL, 1), -(57, '__$GROUPID$__', '79bbfbec-e2ea-4a35-b3f1-ca4739fd3962', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.074', NULL, 1), -(58, '__$GROUPID$__', '199c6822-ea36-487c-986c-d5f413e19169', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.095', NULL, 1), -(59, '__$GROUPID$__', '839d0a48-a0d3-4de9-a843-6866041d7020', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.119', NULL, 1), -(60, '__$GROUPID$__', 'de24e91e-2f4f-4b0d-9eb8-c0d73b3dd7ce', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.142', NULL, 1), -(61, '__$GROUPID$__', '5639b90a-ea6f-4915-be3b-f37b7333e897', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.164', NULL, 1), -(62, '__$GROUPID$__', '449f37e8-3aa2-4341-b159-2d7ee7e29f92', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.187', NULL, 1), -(63, '__$GROUPID$__', 'e9543445-d707-4c42-a6a9-d70da13c8c4f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.208', NULL, 1), -(64, '__$GROUPID$__', '537a3424-8448-43df-aee1-fdf94a405fd7', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.231', NULL, 1), -(65, '__$GROUPID$__', '6f303807-c47d-4c62-b81e-e97745a04413', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.256', NULL, 1), -(66, '__$GROUPID$__', 'e530388d-0135-4c7f-938b-7f44b9680768', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.278', NULL, 1), -(67, '__$GROUPID$__', '2c3b36ad-435c-41f1-a5f5-8432c60bca6d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.301', NULL, 1), -(68, '__$GROUPID$__', 'e151bf47-022f-40de-9513-0ed57ce301c6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.323', NULL, 1), -(69, '__$GROUPID$__', 'e90869f3-31fc-4404-92fb-d1e5b8af348c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.346', NULL, 1), -(70, '__$GROUPID$__', '40be1886-3bfa-4a33-abad-201143d3b0bc', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.368', NULL, 1), -(71, '__$GROUPID$__', 'befce9a3-c954-4842-a474-1fce8f4b051d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.39', NULL, 1), -(72, '__$GROUPID$__', '10170629-99a2-4f60-ba1d-88ce1d28b13d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.412', NULL, 1), -(73, '__$GROUPID$__', 'e3ede857-18bb-46ba-81c0-50bdb0f26f57', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.434', NULL, 1), -(74, '__$GROUPID$__', '62cb03b5-2622-4d11-8113-241062bdc91b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.457', NULL, 1), -(75, '__$GROUPID$__', 'ea526d21-9e7e-4855-b60f-7087e1b87a01', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.48', NULL, 1), -(76, '__$GROUPID$__', '8ffb371e-96b6-49d5-8e9f-ec7696f4157f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.505', NULL, 1), -(77, '__$GROUPID$__', '62428daf-16a8-4a2a-bfd9-fbc17a93a141', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.529', NULL, 1), -(78, '__$GROUPID$__', 'fb7e54ed-34b1-489f-bbc5-60a31e4c1aa0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.553', NULL, 1), -(79, '__$GROUPID$__', 'a5c6a8cc-6856-49d8-807c-c774f7d5d65d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.575', NULL, 1), -(80, '__$GROUPID$__', '306d3824-a1ce-4596-8bc2-01443c7a43db', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.596', NULL, 1), -(81, '__$GROUPID$__', '4bf53e95-c27a-4009-8e71-87f2ed009d68', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.618', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(82, '__$GROUPID$__', '23a2bb48-a268-4d36-a0bc-978c8c75aeb2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.64', NULL, 1), -(83, '__$GROUPID$__', 'c9114a0d-07c1-4b39-9440-d03950d62c99', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.662', NULL, 1), -(84, '__$GROUPID$__', '91655f37-8c16-4f8c-8ece-e415820fdad1', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.685', NULL, 1), -(85, '__$GROUPID$__', 'd3a235b6-d619-4d97-9bf3-d0876bb3583e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.707', NULL, 1), -(86, '__$GROUPID$__', '12b59891-7e14-4a1c-a655-3de16a22755b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.73', NULL, 1), -(87, '__$GROUPID$__', 'a3dad4e9-38d7-4dac-b9c4-6da1b9926ced', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.752', NULL, 1), -(88, '__$GROUPID$__', '1aacb405-f68e-4fa4-a7ff-d373d41b9d80', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.774', NULL, 1), -(89, '__$GROUPID$__', '062ab44f-c239-4435-a0b5-ec8a132a2e1b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.796', NULL, 1), -(90, '__$GROUPID$__', 'fabe72d3-1ff0-4bc4-968b-aedecdc2d1ce', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.818', NULL, 1), -(91, '__$GROUPID$__', '1e15ea38-2ab6-4281-b043-87bf8302449d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.84', NULL, 1), -(92, '__$GROUPID$__', '33463eb9-26e3-4863-8783-259c90a4d63b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.865', NULL, 1), -(93, '__$GROUPID$__', '1d37f479-48e0-46eb-ba88-483f4571510f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.887', NULL, 1), -(94, '__$GROUPID$__', 'cdf08e3c-5dd0-4726-b674-a6567224b754', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.911', NULL, 1), -(95, '__$GROUPID$__', 'c18e19fe-709f-4d89-bfc9-122553f9dfca', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.934', NULL, 1), -(96, '__$GROUPID$__', '8532027d-4499-4c94-8638-088e88241f67', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.96', NULL, 1), -(97, '__$GROUPID$__', '26addda1-eea3-4653-885f-7bc591420db5', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:58.983', NULL, 1), -(98, '__$GROUPID$__', '9abb3a60-fc6a-4b59-b90d-637ae175cc51', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.004', NULL, 1), -(99, '__$GROUPID$__', '3e6c74c9-4f38-4ea1-89c0-1075327d19a6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.028', NULL, 1), -(100, '__$GROUPID$__', '9f23de25-402d-400c-847c-07df61e6d1fb', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.049', NULL, 1), -(101, '__$GROUPID$__', '9ddbd237-994a-4d41-9d6c-80e496c8d81a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.071', NULL, 1), -(102, '__$GROUPID$__', 'ce2a35d0-ca15-4992-8db9-cb4e468bffc5', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.094', NULL, 1), -(103, '__$GROUPID$__', '94f1e799-1617-4e5b-a511-692be80d9523', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.118', NULL, 1), -(104, '__$GROUPID$__', '2cb80271-6478-4447-85da-dd0590201afe', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.139', NULL, 1), -(105, '__$GROUPID$__', '9808560c-e77c-425a-a268-f73566409aef', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.162', NULL, 1), -(106, '__$GROUPID$__', 'e7498139-69e5-41ab-8e00-ca7476dfe9f2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.184', NULL, 1), -(107, '__$GROUPID$__', '8b2840d4-e0b0-4ec9-a063-f6b8a90e8ad9', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.206', NULL, 1), -(108, '__$GROUPID$__', '6d5d8ff6-2f0f-4786-a648-15ff251a1914', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.227', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(109, '__$GROUPID$__', '527ce35e-1bbd-4108-919f-f14435255512', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.248', NULL, 1), -(110, '__$GROUPID$__', '24f0a809-8834-41d6-9df6-2220457ad47a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.269', NULL, 1), -(111, '__$GROUPID$__', '45f8961d-a704-43b0-95c2-67b2e66b4ed7', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.291', NULL, 1), -(112, '__$GROUPID$__', 'a43d24ad-cfae-498d-8317-5276cc3ac738', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.313', NULL, 1), -(113, '__$GROUPID$__', '4916f24d-41fe-4b21-bdec-df2cdb8c731d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.332', NULL, 1), -(114, '__$GROUPID$__', '03a6e71e-e03c-48cc-a247-9d23c4c0d9f6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.353', NULL, 1), -(115, '__$GROUPID$__', '9256bb73-5dfd-4c0f-a465-b05837f4d742', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.375', NULL, 1), -(116, '__$GROUPID$__', 'ac466933-364a-43c1-ae7b-2ef8d861a31f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.397', NULL, 1), -(117, '__$GROUPID$__', '474d1959-4a40-4c2e-b0a3-6c541462ae96', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.418', NULL, 1), -(118, '__$GROUPID$__', 'abdcd870-dd91-4ba9-8fff-fa34a815c8b9', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.439', NULL, 1), -(119, '__$GROUPID$__', 'dd457eab-0c2c-4f57-bac3-023d8f8fc502', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.46', NULL, 1), -(120, '__$GROUPID$__', 'ed5511e1-4a82-4d33-956d-6e5c1e3d0d63', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.48', NULL, 1), -(121, '__$GROUPID$__', '64001f5f-8ad0-46a1-9ecd-003929388f76', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.501', NULL, 1), -(122, '__$GROUPID$__', 'bb956a13-c28d-40a1-8f77-beebf7a0e8ff', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.522', NULL, 1), -(123, '__$GROUPID$__', 'c0bb2d05-99d8-4f6c-a7a8-cca60483aa4f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.543', NULL, 1), -(124, '__$GROUPID$__', '6fa48c41-bf5f-4f1f-b618-38d780c32b0d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.567', NULL, 1), -(125, '__$GROUPID$__', 'ebaa3136-8d5d-4331-a276-f192328a4a04', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.589', NULL, 1), -(126, '__$GROUPID$__', '8d58e655-0a62-4b98-8fe9-787f7c323afd', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.612', NULL, 1), -(127, '__$GROUPID$__', 'de272f93-b580-4de5-88d7-cb85c6669147', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.635', NULL, 1), -(128, '__$GROUPID$__', '5faf6fae-fed3-46dd-80c8-c884895367a3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.658', NULL, 1), -(129, '__$GROUPID$__', '41db40e7-200a-4ee2-9d42-a79a5d818503', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.682', NULL, 1), -(130, '__$GROUPID$__', '036b4484-66f8-480f-8e0c-f4b4890ba5e2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.702', NULL, 1), -(131, '__$GROUPID$__', '6e6407dc-eb9b-47b9-a739-b53257028740', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.723', NULL, 1), -(132, '__$GROUPID$__', 'bcc8dff9-f568-46cb-836f-e29d6fe9a302', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.742', NULL, 1), -(133, '__$GROUPID$__', '05a15e87-b5c0-430e-af1f-273a38bddfc0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.764', NULL, 1), -(134, '__$GROUPID$__', 'b57e48bc-477b-44bc-8f67-8f1243e993ca', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.786', NULL, 1), -(135, '__$GROUPID$__', '01291422-dc34-4940-be49-03c0a4223a4f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.808', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(136, '__$GROUPID$__', 'c635dd5e-de14-4ace-89e6-a1b2414c343a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.83', NULL, 1), -(137, '__$GROUPID$__', 'a412cbdf-bb7e-4037-92cc-696be8f509d0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.852', NULL, 1), -(138, '__$GROUPID$__', 'bcf98aa8-6b65-4c91-9c0d-7965cc0cb88b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.872', NULL, 1), -(139, '__$GROUPID$__', '4491d5c5-45a8-4254-9690-c9309f417253', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.893', NULL, 1), -(140, '__$GROUPID$__', '1a573ed3-8f92-4d35-bffd-be86d4833b68', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.914', NULL, 1), -(141, '__$GROUPID$__', 'a3a02771-4316-4857-8bc4-9624ed2d75d5', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.935', NULL, 1), -(142, '__$GROUPID$__', '132e31d6-0a04-44d3-92d4-a079d88a6f64', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.956', NULL, 1), -(143, '__$GROUPID$__', '559a6bd1-1eda-44a6-b8cf-525176ef0bc6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.977', NULL, 1), -(144, '__$GROUPID$__', '69a848d7-0f88-4ef1-9bf0-990e5d325892', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:43:59.999', NULL, 1), -(145, '__$GROUPID$__', '62fbb413-43c2-4571-b97a-06e0cc7f5b93', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.02', NULL, 1), -(146, '__$GROUPID$__', 'bcda25dd-73d1-4953-94da-a9042bab7144', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.041', NULL, 1), -(147, '__$GROUPID$__', '2d215e19-449b-467c-96df-6561684f1e94', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.062', NULL, 1), -(148, '__$GROUPID$__', 'a5eef6c7-49c2-46df-8b55-c56c116813ef', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.083', NULL, 1), -(149, '__$GROUPID$__', 'c28bf1e6-382b-4d10-bf99-94d1f965843a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.104', NULL, 1), -(150, '__$GROUPID$__', '8fd8e932-dc34-4aa2-bcb8-84c2f6b060af', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.125', NULL, 1), -(151, '__$GROUPID$__', '7a27aad9-be70-4f9e-b246-9d62cde4156f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.146', NULL, 1), -(152, '__$GROUPID$__', '5936e921-a6ff-46fc-acdf-a2c64d6e99ee', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.168', NULL, 1), -(153, '__$GROUPID$__', 'cf7dd8b7-9644-47e5-96d8-9345f2333b74', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.19', NULL, 1), -(154, '__$GROUPID$__', '96d2f5fb-2e2e-4255-9ac8-8f95f88214be', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.211', NULL, 1), -(155, '__$GROUPID$__', 'bbc4d5ad-5ae1-4da9-8133-d40e750b0a90', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.232', NULL, 1), -(156, '__$GROUPID$__', '4b37b37e-e9c3-46a8-b91e-a843e72e9250', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.252', NULL, 1), -(157, '__$GROUPID$__', '63d01b13-4fe8-4451-9ff6-365b5e6bafbe', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.272', NULL, 1), -(158, '__$GROUPID$__', 'd3da90e7-f26e-4422-ba4d-fa9074fd2c56', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.293', NULL, 1), -(159, '__$GROUPID$__', '9cca52b9-b487-46d6-91d1-1890e1d21291', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.313', NULL, 1), -(160, '__$GROUPID$__', 'dfdb1adb-2470-4796-a706-4dc487e470d2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.334', NULL, 1), -(161, '__$GROUPID$__', '7cd43c4f-dff6-4a91-87b4-658cb0814ba0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.354', NULL, 1), -(162, '__$GROUPID$__', '80d3c253-0d57-4bcb-afbc-884a9c2e4d58', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.375', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(163, '__$GROUPID$__', '338d2cf6-f196-427e-82ac-2dd30026ffb2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.397', NULL, 1), -(164, '__$GROUPID$__', '7a4bf758-ae85-49ba-8cba-56d46f456c91', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.418', NULL, 1), -(165, '__$GROUPID$__', '5113603d-0c64-4b83-ad12-c572e0bda3c5', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.449', NULL, 1), -(166, '__$GROUPID$__', '07697a9c-75f5-49f5-9a45-ab4ead7dafda', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.469', NULL, 1), -(167, '__$GROUPID$__', '7ec0d39a-04d4-4c45-8824-3fdb3d195126', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.489', NULL, 1), -(168, '__$GROUPID$__', '731607e1-7b29-48d1-bba9-538f3d810175', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.51', NULL, 1), -(169, '__$GROUPID$__', '8468011e-4f57-415a-9c7a-1450dfee5500', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.53', NULL, 1), -(170, '__$GROUPID$__', 'dbcab97c-067d-4940-bc3f-4797325f7aa6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.556', NULL, 1), -(171, '__$GROUPID$__', '519bed55-0f1f-4ee8-929f-996ada2b12a3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.577', NULL, 1), -(172, '__$GROUPID$__', '1ec8eef2-a8eb-4287-afcc-78a760e121c1', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.598', NULL, 1), -(173, '__$GROUPID$__', 'b91a0ed1-ec13-474c-b659-7a1824beebe6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.619', NULL, 1), -(174, '__$GROUPID$__', '6c03bc86-4c2b-41fc-8ff0-717b1648da75', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.639', NULL, 1), -(175, '__$GROUPID$__', 'a45f46f0-c46b-4fbd-b4ad-85f0a88354b1', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.66', NULL, 1), -(176, '__$GROUPID$__', '3f5ed759-7579-4e34-83a0-9dd647197c32', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.68', NULL, 1), -(177, '__$GROUPID$__', 'c483ffa1-e483-4d16-b8b0-0f14c7da1310', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.699', NULL, 1), -(178, '__$GROUPID$__', '548a610b-a52d-4bc6-8e11-650c2c4c7f51', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.718', NULL, 1), -(179, '__$GROUPID$__', 'b689039e-759f-48d7-8c3a-9d7f9e6b6932', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.74', NULL, 1), -(180, '__$GROUPID$__', '05dacf6f-b6ac-4bb8-8407-0d061e74861e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.761', NULL, 1), -(181, '__$GROUPID$__', '294fab42-55cb-4eed-b4d2-0986a456b892', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.781', NULL, 1), -(182, '__$GROUPID$__', '5f545b92-11d9-45cc-b6bc-2abc401848c2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.801', NULL, 1), -(183, '__$GROUPID$__', '359ea1f6-142b-4966-bdd1-190a52e50d79', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.822', NULL, 1), -(184, '__$GROUPID$__', 'f891396e-0202-4554-aac4-78354c5f240c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.842', NULL, 1), -(185, '__$GROUPID$__', '5d427abb-faf9-4228-868a-4b0b0e7d905a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.862', NULL, 1), -(186, '__$GROUPID$__', '73cea19c-f850-4e67-b78b-aa6c66d2e88d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.882', NULL, 1), -(187, '__$GROUPID$__', '65b5a5af-f9ff-4e6b-a5e6-10577ed91564', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.902', NULL, 1), -(188, '__$GROUPID$__', 'aa5898ac-c8a5-4f28-93ca-86a73c535fbb', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.921', NULL, 1), -(189, '__$GROUPID$__', '489bcfb9-0b47-4368-bb52-662032499579', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.942', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(190, '__$GROUPID$__', '4bbb5e9e-3fdc-4b4d-b5eb-eb06101242ef', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.962', NULL, 1), -(191, '__$GROUPID$__', '610de345-8003-44f4-bebb-6f89e97c145a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:00.983', NULL, 1), -(192, '__$GROUPID$__', '25aefffe-d30e-4868-a034-da651fa14858', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.004', NULL, 1), -(193, '__$GROUPID$__', '9c374f2a-b2aa-4712-948a-117a6a78f854', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.026', NULL, 1), -(194, '__$GROUPID$__', '332d971e-087a-49c9-8197-568016ed6908', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.046', NULL, 1), -(195, '__$GROUPID$__', '889439eb-fd7a-4f7f-99d2-357f1fd34f05', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.066', NULL, 1), -(196, '__$GROUPID$__', '9a1d9653-fad0-4088-b716-a3fe39323417', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.085', NULL, 1), -(197, '__$GROUPID$__', 'e167ccb2-a52c-43f8-bd37-77c2967e04cf', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.105', NULL, 1), -(198, '__$GROUPID$__', 'e46d07e2-6063-42c3-b51f-9a9f83c3a496', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.126', NULL, 1), -(199, '__$GROUPID$__', '1a7feaa2-c721-44f2-919c-67697f8578cc', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.147', NULL, 1), -(200, '__$GROUPID$__', 'e9a1740b-0706-4218-ad1e-a9c687eb5ce9', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.167', NULL, 1), -(201, '__$GROUPID$__', 'ddacde96-08e3-4a0b-9018-db3e714fb83c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.191', NULL, 1), -(202, '__$GROUPID$__', '5f9f437e-522d-4f1c-8896-60c40b44974f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.211', NULL, 1), -(203, '__$GROUPID$__', '9227f499-24b6-4988-a6f0-f628069da7ba', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.233', NULL, 1), -(204, '__$GROUPID$__', 'fe698f21-9637-4da7-bd4c-a025168c6f3b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.254', NULL, 1), -(205, '__$GROUPID$__', 'd2c1ea98-9318-4407-b521-4ef5e64c481d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.274', NULL, 1), -(206, '__$GROUPID$__', '2801e628-546e-4c7a-bef5-0b70697ebb40', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.294', NULL, 1), -(207, '__$GROUPID$__', 'd44229d4-0d37-4d1c-8368-0d0af1e64dbf', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.314', NULL, 1), -(208, '__$GROUPID$__', '3c1702d7-07d5-41c8-b358-273679542392', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.333', NULL, 1), -(209, '__$GROUPID$__', '9d05ffe0-2996-4cf1-b098-0a66e092bc7c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.353', NULL, 1), -(210, '__$GROUPID$__', 'd25b7c86-3b21-4b53-a39e-7a71bd26eb1b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.372', NULL, 1), -(211, '__$GROUPID$__', 'f1a5afaf-69ba-44a4-97fd-2c8dd38353d7', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.393', NULL, 1), -(212, '__$GROUPID$__', '7ff418db-004b-4f2f-85dc-c3f0bd7925ea', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.413', NULL, 1), -(213, '__$GROUPID$__', '525c2752-c30f-4629-b641-8a7eb0353f16', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.433', NULL, 1), -(214, '__$GROUPID$__', '764fb2f8-34d9-41ed-b378-4b14676d37fc', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.454', NULL, 1), -(215, '__$GROUPID$__', '0f5cd5ee-0630-479b-b784-b55380ca1ac5', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.476', NULL, 1), -(216, '__$GROUPID$__', 'aaca65e2-3d60-424e-9575-6184c1f55d8b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.496', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(217, '__$GROUPID$__', 'f366f8bb-10cc-4767-84d4-52dd0f988475', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.516', NULL, 1), -(218, '__$GROUPID$__', '0bac1b2b-5304-486f-8b3d-271ef09816bc', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.535', NULL, 1), -(219, '__$GROUPID$__', '93b2ea63-94f2-4b7a-be5f-44dfbf767d7f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.557', NULL, 1), -(220, '__$GROUPID$__', '71ccb6a7-2a53-4875-9453-ffa0a688f642', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.578', NULL, 1), -(221, '__$GROUPID$__', '663605fd-47ff-49cf-88ec-200047a2f7c4', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.597', NULL, 1), -(222, '__$GROUPID$__', '5742e9ce-5859-42a7-9035-a40a5a9a1798', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.617', NULL, 1), -(223, '__$GROUPID$__', 'e3d912d1-4845-4b6b-b2ef-550b1afaa66b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.638', NULL, 1), -(224, '__$GROUPID$__', 'ab713c30-ae24-4112-bf39-56657c340d52', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.657', NULL, 1), -(225, '__$GROUPID$__', '8e0dd5e1-5a5a-4cda-aeb6-07e503955122', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.677', NULL, 1), -(226, '__$GROUPID$__', '4dc4c0cd-e06b-4557-a2e3-405a497137da', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.696', NULL, 1), -(227, '__$GROUPID$__', '97e47396-6b09-411f-a878-731cba939e55', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.716', NULL, 1), -(228, '__$GROUPID$__', '6be706d5-c056-4180-ad4a-7b9210055c58', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.735', NULL, 1), -(229, '__$GROUPID$__', 'ee1467a2-efc8-46ec-b4ce-6f3537986ce2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.754', NULL, 1), -(230, '__$GROUPID$__', 'cf2f4780-1120-43f2-8747-90672c86b130', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.773', NULL, 1), -(231, '__$GROUPID$__', '6b517a95-c151-48ec-8ceb-e5fad8b622f4', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.793', NULL, 1), -(232, '__$GROUPID$__', '502ffefb-e9e7-482c-9fb6-ec8ca8db3b4b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.813', NULL, 1), -(233, '__$GROUPID$__', '3b3f3798-170d-4154-bdea-1b427960d43e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.831', NULL, 1), -(234, '__$GROUPID$__', 'caa5effb-0e1c-4807-a2b8-ac852257ab43', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.851', NULL, 1), -(235, '__$GROUPID$__', '79397f4c-6bc1-479f-ab63-0d0e6143f196', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.871', NULL, 1), -(236, '__$GROUPID$__', '3c635d3e-5cad-44b1-a1d2-fca3bc2cb94a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.892', NULL, 1), -(237, '__$GROUPID$__', '0bdba378-0323-4f4b-ad67-4ef1c6106a5b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.912', NULL, 1), -(238, '__$GROUPID$__', 'b45da4c3-dac5-4820-a7cc-70b547ba61b0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.931', NULL, 1), -(239, '__$GROUPID$__', 'af2a7b1f-ca14-4bec-acb8-882bc2373878', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.951', NULL, 1), -(240, '__$GROUPID$__', '27d3785a-0d94-4e6b-b8d9-8e0d69c0a399', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.97', NULL, 1), -(241, '__$GROUPID$__', '8125cd2f-8404-478b-8c8c-61c4499c938c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:01.99', NULL, 1), -(242, '__$GROUPID$__', 'c93e47ca-2eb4-4277-8929-684d74f8d38b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.008', NULL, 1), -(243, '__$GROUPID$__', 'e206be9f-bfcc-42bf-990e-070f4c6fd7a4', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.028', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(244, '__$GROUPID$__', '570b175b-1392-422e-87a0-01d8f6c3864b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.048', NULL, 1), -(245, '__$GROUPID$__', 'b63fd0b5-9a25-4274-a6d8-626f727e2b20', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.068', NULL, 1), -(246, '__$GROUPID$__', 'd7133c33-0433-497b-83f2-e9d3d49f526e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.088', NULL, 1), -(247, '__$GROUPID$__', 'd88318e3-a3b4-4fe0-96a3-2b9e41210e42', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.107', NULL, 1), -(248, '__$GROUPID$__', '82bdde6b-895d-4447-b467-8ce18fa85605', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.127', NULL, 1), -(249, '__$GROUPID$__', '8104cabe-3b62-47cf-94b2-b48c4abdcfc8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.147', NULL, 1), -(250, '__$GROUPID$__', 'c1fb9836-319d-4664-84fc-7b965507258a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.166', NULL, 1), -(251, '__$GROUPID$__', '4d365d8a-ed84-44b5-b9b4-ee87e96907d3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.185', NULL, 1), -(252, '__$GROUPID$__', '5b7b960a-d42d-4129-b4e5-10c2c05e8f6b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.205', NULL, 1), -(253, '__$GROUPID$__', '78c4992d-b5e9-45e6-b1c6-b54281cacd77', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.226', NULL, 1), -(254, '__$GROUPID$__', '3050c4e1-9ad7-433e-a4a0-aeb93f2fb53f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.246', NULL, 1), -(255, '__$GROUPID$__', 'c695c1eb-f1a1-4823-83cb-d9967cf1ac57', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.267', NULL, 1), -(256, '__$GROUPID$__', 'e623ce56-7586-4666-a704-0295fb14708d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.288', NULL, 1), -(257, '__$GROUPID$__', 'aa01d77c-b64d-4fe3-9b1c-49a574401994', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.312', NULL, 1), -(258, '__$GROUPID$__', '3ef6f00f-179c-4810-a2a4-dd4531d8969b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.332', NULL, 1), -(259, '__$GROUPID$__', '6f8d2c8f-45e1-40b2-af0b-9347a9405016', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.352', NULL, 1), -(260, '__$GROUPID$__', 'b695b9c3-da4d-4473-8502-e78f43567927', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.371', NULL, 1), -(261, '__$GROUPID$__', '552d6a2a-38e7-4fb4-a194-339d4a239c8a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.39', NULL, 1), -(262, '__$GROUPID$__', '90ff9e31-420e-48ce-9ff5-9c4cfe7d08d3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.409', NULL, 1), -(263, '__$GROUPID$__', '5ce3571c-f835-46a5-9b7b-ebd40025522b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.428', NULL, 1), -(264, '__$GROUPID$__', 'a2e00e2d-62d2-4e30-855c-0c1c3cb77ed9', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.457', NULL, 1), -(265, '__$GROUPID$__', 'f757f498-bd0e-4872-b373-b1732816226b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.48', NULL, 1), -(266, '__$GROUPID$__', '695caefa-4bc6-4080-bd1c-a9529705a451', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.503', NULL, 1), -(267, '__$GROUPID$__', '1d91fefa-ea70-4d28-ab4a-935d193a7fa7', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.524', NULL, 1), -(268, '__$GROUPID$__', 'e70d7cd2-573a-4e57-9c74-a02e0a319310', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.546', NULL, 1), -(269, '__$GROUPID$__', 'd5b524df-000b-4160-98ba-90d062358b43', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.72', NULL, 1), -(270, '__$GROUPID$__', 'ab439d09-9b62-4f38-8133-a57c066c966f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.758', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(271, '__$GROUPID$__', '148ca397-91b2-45b3-ac11-37ac4bb2460f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.779', NULL, 1), -(272, '__$GROUPID$__', '1f7e3b14-cf66-4d62-b6b4-48901aacb02d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.802', NULL, 1), -(273, '__$GROUPID$__', '61f28d70-b2bb-42e2-b789-213c09612570', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.827', NULL, 1), -(274, '__$GROUPID$__', '27ebcd5e-9767-4543-a992-f16cac35d0d7', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.848', NULL, 1), -(275, '__$GROUPID$__', 'cf33c6e4-3d5c-456d-9850-4258320a63ea', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.873', NULL, 1), -(276, '__$GROUPID$__', '2d9714be-f767-49c1-8319-f08ad2e99b1d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.893', NULL, 1), -(277, '__$GROUPID$__', '96a413db-6bb4-4270-b4ce-68c0858c8c56', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.912', NULL, 1), -(278, '__$GROUPID$__', '03387c4e-44c2-4524-a7c7-02288baa37ba', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.933', NULL, 1), -(279, '__$GROUPID$__', 'aae0f42d-643a-4033-8a4c-7f67705f41fc', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.954', NULL, 1), -(280, '__$GROUPID$__', 'f6c425d2-a547-41ae-900a-ec1b35b5cd20', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.974', NULL, 1), -(281, '__$GROUPID$__', 'fe5d971a-1fc5-4513-936d-48f490cd72b4', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:02.994', NULL, 1), -(282, '__$GROUPID$__', 'c6de1654-e123-42c9-9bcc-32124102ecde', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.015', NULL, 1), -(283, '__$GROUPID$__', 'acfe32f4-a0ef-4fee-b15c-9e0898aaae3c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.036', NULL, 1), -(284, '__$GROUPID$__', 'c73a1821-f6c3-4276-bc41-97173635e39c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.055', NULL, 1), -(285, '__$GROUPID$__', '25e6d3fd-bf2e-472c-999a-a4247b312b56', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.075', NULL, 1), -(286, '__$GROUPID$__', '1aa9f4b3-ad55-4625-87f7-e1976a225546', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.1', NULL, 1), -(287, '__$GROUPID$__', 'f60f1a8f-6ee1-4ca8-9426-dc12907ace59', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.123', NULL, 1), -(288, '__$GROUPID$__', 'a5b6af38-e49a-4f9d-8b25-1e40312559ef', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.144', NULL, 1), -(289, '__$GROUPID$__', 'f227ba0c-6deb-4f4d-95ba-1e604746bc94', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.167', NULL, 1), -(290, '__$GROUPID$__', 'e1401728-0d2f-431b-8874-adac21bda40e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.188', NULL, 1), -(291, '__$GROUPID$__', 'c8d984f7-b7e9-4203-924a-699ea40d519a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.208', NULL, 1), -(292, '__$GROUPID$__', 'f77bf8f1-59db-43e3-a63c-d318d8a9090d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.228', NULL, 1), -(293, '__$GROUPID$__', '5962bf45-bf0f-4a18-8f40-351bfe4d1d06', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.249', NULL, 1), -(294, '__$GROUPID$__', '52d6ac3f-b704-463c-824f-ea83bbf16b6d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.268', NULL, 1), -(295, '__$GROUPID$__', '30cee9a3-42b5-4605-b3c1-b27b2a0b60e5', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.288', NULL, 1), -(296, '__$GROUPID$__', '26ecf497-0a28-4f80-81e5-46b58b42b223', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.307', NULL, 1), -(297, '__$GROUPID$__', '473bcca3-a842-4cfe-bb9b-94478d6ee247', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.326', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(298, '__$GROUPID$__', 'f95759bb-72a6-4118-9109-b49fb1115946', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.345', NULL, 1), -(299, '__$GROUPID$__', '28830e75-757f-4e4c-a2a3-17cb296c2868', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.365', NULL, 1), -(300, '__$GROUPID$__', 'd1b6cd48-c42c-4dd0-935f-75101af2d594', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.386', NULL, 1), -(301, '__$GROUPID$__', '948a5de2-d3a2-41d2-8e73-4c2458030410', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.406', NULL, 1), -(302, '__$GROUPID$__', 'f189ccae-aacc-440b-b71f-a5a7fdb41d60', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.426', NULL, 1), -(303, '__$GROUPID$__', '653982fb-f8e2-4934-962b-63645fbc40b7', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.446', NULL, 1), -(304, '__$GROUPID$__', '190ef94f-1508-408b-b2b7-cc7735a34a49', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.467', NULL, 1), -(305, '__$GROUPID$__', '5389df82-00f5-4f7a-bbbb-37ab986d1caf', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.488', NULL, 1), -(306, '__$GROUPID$__', '84c9a3b5-8271-443c-9cd3-1be79a090041', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.509', NULL, 1), -(307, '__$GROUPID$__', '41a1a9e6-60eb-4a5e-82c1-27af4a292d69', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.529', NULL, 1), -(308, '__$GROUPID$__', '9244befe-19ca-447b-8b40-cf14db608610', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.549', NULL, 1), -(309, '__$GROUPID$__', 'a01e4af8-9b3d-4a77-a1d8-32569324d34c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.568', NULL, 1), -(310, '__$GROUPID$__', '79a28909-18c5-4a03-8758-53f467e8de3b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.588', NULL, 1), -(311, '__$GROUPID$__', 'bb765ecb-1f24-4200-8c68-aae619c72fb9', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.608', NULL, 1), -(312, '__$GROUPID$__', '3bba986f-43b9-445e-b68a-e9a0a2e20b5e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.628', NULL, 1), -(313, '__$GROUPID$__', '03c4f12c-d631-4d24-a73b-b07ad1e1f9ac', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.648', NULL, 1), -(314, '__$GROUPID$__', '893e3045-b2fe-43c3-a798-a3caf393a9a0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.669', NULL, 1), -(315, '__$GROUPID$__', '3e94a0af-87ba-4f71-923d-4ceaa1821338', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.69', NULL, 1), -(316, '__$GROUPID$__', '879fa889-007b-418f-8e96-214105e42cb6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.709', NULL, 1), -(317, '__$GROUPID$__', '7724031b-3ad7-42b2-9819-1ef9a289cd8e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.728', NULL, 1), -(318, '__$GROUPID$__', 'b098f9cc-3733-4a5c-ac82-85ad179514cd', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.747', NULL, 1), -(319, '__$GROUPID$__', 'd4ef4016-7839-49dd-908d-e4e3f0833e8e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.767', NULL, 1), -(320, '__$GROUPID$__', '9dfe5f86-33ba-40fd-977a-28147e99909c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.786', NULL, 1), -(321, '__$GROUPID$__', '3b8ba2ea-49ba-43a7-aac1-22c9e7ae17b4', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.806', NULL, 1), -(322, '__$GROUPID$__', '6522a989-60ee-4cf6-9cc0-5dddc5730aae', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.827', NULL, 1), -(323, '__$GROUPID$__', '500ff6ef-4fc0-4007-b658-fa9448d1a936', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.846', NULL, 1), -(324, '__$GROUPID$__', 'f56b717a-bcb8-4f7b-8f21-c777f1b6d935', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.868', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(325, '__$GROUPID$__', 'd04c5ed4-70c1-4845-a2ef-5483383b08de', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.892', NULL, 1), -(326, '__$GROUPID$__', '0ce46809-60b0-4ca3-ba5e-6a0d08f59e2a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.913', NULL, 1), -(327, '__$GROUPID$__', 'e90f30cb-4675-4e7c-a12b-d35aca03a9a4', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.933', NULL, 1), -(328, '__$GROUPID$__', '3f89232e-d8d1-417a-96ef-aff9cca5610b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.955', NULL, 1), -(329, '__$GROUPID$__', '0bfc2797-83a4-434d-b09c-68301c20ee79', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:03.979', NULL, 1), -(330, '__$GROUPID$__', '2954cfcc-9169-4bce-8bbf-72bf68a6c5ed', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.005', NULL, 1), -(331, '__$GROUPID$__', 'f6359190-823d-4c8c-b6be-1fc3ce14cc6e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.028', NULL, 1), -(332, '__$GROUPID$__', '65e1d9b0-2a42-4c11-8829-7bbbf7277ceb', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.051', NULL, 1), -(333, '__$GROUPID$__', 'e7ce3bd2-3187-4d64-8615-ea253629f975', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.075', NULL, 1), -(334, '__$GROUPID$__', '2211c7ab-9afd-47f7-92c1-2cb9d5a62b57', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.097', NULL, 1), -(335, '__$GROUPID$__', '9320329c-d175-4783-9ebf-d4a89f8a6167', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.117', NULL, 1), -(336, '__$GROUPID$__', 'c6579939-b8a1-4269-a7de-f02202e26422', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.137', NULL, 1), -(337, '__$GROUPID$__', '4ca32bb7-231c-4f85-a2f8-1563f138f2c0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.159', NULL, 1), -(338, '__$GROUPID$__', 'cd7de510-41ce-4d0a-9ee4-e2ae2e48949c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.179', NULL, 1), -(339, '__$GROUPID$__', '445dd5f8-b43f-4468-a619-32ff570b314b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.2', NULL, 1), -(340, '__$GROUPID$__', 'e7aa108b-7122-4a3e-83af-15956ac568a9', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.221', NULL, 1), -(341, '__$GROUPID$__', '5698a602-a371-4eff-a8e0-2fda0aa762a4', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.243', NULL, 1), -(342, '__$GROUPID$__', '0b628c3b-3b68-4721-af61-9bc41ba75e06', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.263', NULL, 1), -(343, '__$GROUPID$__', 'bf1deeb5-3108-4c3e-ba57-819280b2fae2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.283', NULL, 1), -(344, '__$GROUPID$__', '30846b8e-d6f4-4e7a-a61d-8e91446b9a3c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.305', NULL, 1), -(345, '__$GROUPID$__', '8e2451e2-c529-429d-a119-d8dbde2e570b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.329', NULL, 1), -(346, '__$GROUPID$__', '36fc5be8-dca3-4ca5-9dd1-e2a19cd4710b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.351', NULL, 1), -(347, '__$GROUPID$__', 'd52aad4e-6e1b-4f12-a6b7-9625dbdd546e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.371', NULL, 1), -(348, '__$GROUPID$__', '2ba5b0ba-55b1-4424-b644-28990f5f7f7c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.391', NULL, 1), -(349, '__$GROUPID$__', 'bbe6ca38-f91c-4b7f-8f3b-9fd290c8ada2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.413', NULL, 1), -(350, '__$GROUPID$__', 'e01051b2-3ed4-4877-a3bf-89d4c25a26b4', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.435', NULL, 1), -(351, '__$GROUPID$__', '6b485480-81ae-4180-b537-98b25bbe7510', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.454', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(352, '__$GROUPID$__', '14067fb7-e7e9-45d0-b5e1-36f683d151e4', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.484', NULL, 1), -(353, '__$GROUPID$__', 'd6e5e418-198c-4def-8d51-fb5405912cce', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.506', NULL, 1), -(354, '__$GROUPID$__', '5d6ea64d-394a-45c1-b73d-939ea1c761ce', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.527', NULL, 1), -(355, '__$GROUPID$__', '09be6206-95b0-42a8-8f31-c7f818111413', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.546', NULL, 1), -(356, '__$GROUPID$__', '122ee6bf-4e6c-4e2e-aded-18ef18ee4c80', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.567', NULL, 1), -(357, '__$GROUPID$__', '09d5cf40-0384-4133-b2e0-75a80b5074c6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.586', NULL, 1), -(358, '__$GROUPID$__', 'e7ce2467-0b51-4b15-b8e3-e223188a1b9b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.605', NULL, 1), -(359, '__$GROUPID$__', '040bc186-770d-40fd-ac0c-9240afc4ce67', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.624', NULL, 1), -(360, '__$GROUPID$__', 'dff18467-c412-4cc1-bb2c-6fcb1a160fa7', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.644', NULL, 1), -(361, '__$GROUPID$__', '9837e10d-ae18-4199-880a-76ba766dd9d6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.664', NULL, 1), -(362, '__$GROUPID$__', '51777c6d-1193-4e97-8c49-cb99c8674e67', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.684', NULL, 1), -(363, '__$GROUPID$__', '6bf49be1-af44-4464-a9fe-7c66f2cb57ea', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.703', NULL, 1), -(364, '__$GROUPID$__', '76085212-21db-4051-a786-4533a4ce1264', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.722', NULL, 1), -(365, '__$GROUPID$__', '79824ece-a172-4c37-8062-969fb61eec50', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.743', NULL, 1), -(366, '__$GROUPID$__', '98f91c0b-56d8-4f20-be8b-c46f0f2f3c27', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.761', NULL, 1), -(367, '__$GROUPID$__', '981d1def-f3e0-467e-8af0-2e1e84c94b41', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.782', NULL, 1), -(368, '__$GROUPID$__', 'e5204905-e11f-402d-940e-b7e129b34b65', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.802', NULL, 1), -(369, '__$GROUPID$__', '31a3e69c-7d3d-4771-aa8e-dea60e47904e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.822', NULL, 1), -(370, '__$GROUPID$__', 'c9c99ab5-cb17-414f-82e6-aa045cfe036f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.842', NULL, 1), -(371, '__$GROUPID$__', '61f08417-f07b-4b88-aa48-e9e272fd9f5d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.861', NULL, 1), -(372, '__$GROUPID$__', 'cf08f2dd-4705-4096-baa4-4603731dffe2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.88', NULL, 1), -(373, '__$GROUPID$__', 'e96c2031-0bc9-44b4-a2a5-789166d95525', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.9', NULL, 1), -(374, '__$GROUPID$__', '3cb5ce3f-9f29-4534-86c1-2851a3a0e0b2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.92', NULL, 1), -(375, '__$GROUPID$__', 'faa699c8-815b-4f65-b13c-36006d80211f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.94', NULL, 1), -(376, '__$GROUPID$__', '5104af84-3741-42b2-8528-b4626fedfd2c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.961', NULL, 1), -(377, '__$GROUPID$__', 'b41e5f0a-0e40-4194-902a-bcc8622999be', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:04.981', NULL, 1), -(378, '__$GROUPID$__', '4dfbd027-038f-4142-99eb-3265ccf770f0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(379, '__$GROUPID$__', '26f4f339-442e-46f8-9832-86e2ddb23fe4', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.02', NULL, 1), -(380, '__$GROUPID$__', '5fc0c20a-61e9-48d8-905a-d24f84c4d094', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.042', NULL, 1), -(381, '__$GROUPID$__', 'd71b6118-2bd7-4900-b71e-56983619697f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.06', NULL, 1), -(382, '__$GROUPID$__', '7d2b867e-5701-481e-b163-39e9c571d845', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.08', NULL, 1), -(383, '__$GROUPID$__', 'a15d38e6-473e-4ad1-9e51-0504c2c25410', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.1', NULL, 1), -(384, '__$GROUPID$__', '4f9acf8f-18f4-49af-8fcb-c4736aea4970', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.12', NULL, 1), -(385, '__$GROUPID$__', '56663a71-2bd1-4ad0-8761-d88031bdfc01', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.141', NULL, 1), -(386, '__$GROUPID$__', '50e15489-c86e-4df8-8e4b-d4e2cb30bc6b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.16', NULL, 1), -(387, '__$GROUPID$__', 'a0b1fe7c-48dc-4c9e-a8ac-4d969c9f77fc', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.178', NULL, 1), -(388, '__$GROUPID$__', '1c17e99a-2fbc-44de-937b-1bb6de989502', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.197', NULL, 1), -(389, '__$GROUPID$__', '18385311-230f-402e-858b-0c7709fd1a53', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.215', NULL, 1), -(390, '__$GROUPID$__', '558a7480-cb3b-4a1e-aaf1-508ea55faca1', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.233', NULL, 1), -(391, '__$GROUPID$__', '06fe3486-f568-4ef1-b71b-1312cce3cbb3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.252', NULL, 1), -(392, '__$GROUPID$__', '6c849044-941a-45c6-9561-6965f0787941', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.27', NULL, 1), -(393, '__$GROUPID$__', '9d243499-abba-44dc-9c35-065571d6b64c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.288', NULL, 1), -(394, '__$GROUPID$__', 'b65ba228-dbc3-4bd5-86a8-e8e9864e1491', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.307', NULL, 1), -(395, '__$GROUPID$__', 'a32b41a8-a42f-4396-a5a9-4bca335f24f0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.328', NULL, 1), -(396, '__$GROUPID$__', '86c26ea8-5b63-4ca1-92b3-f4e16bf7f3d0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.347', NULL, 1), -(397, '__$GROUPID$__', '6dc39edb-1538-40a0-85f2-b1c7bf427192', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.367', NULL, 1), -(398, '__$GROUPID$__', 'bbe2d4ed-6333-4eff-9756-b1c6b018e4fa', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.387', NULL, 1), -(399, '__$GROUPID$__', '5ac58a7a-3b5a-4408-b65e-1f154b3ffefc', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.405', NULL, 1), -(400, '__$GROUPID$__', 'da24911e-a399-40c7-ae7e-0ced5e648d14', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.424', NULL, 1), -(401, '__$GROUPID$__', '81bb9ade-f416-4231-8d19-5e10d5f8fda5', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.443', NULL, 1), -(402, '__$GROUPID$__', 'bd5e11fb-f041-403f-a1bf-343a0ce536a0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.462', NULL, 1), -(403, '__$GROUPID$__', 'e1d0354f-949b-466e-8456-e977a38dfce9', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.481', NULL, 1), -(404, '__$GROUPID$__', 'b9746e93-29e5-4d66-b851-71580c9dfa87', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.501', NULL, 1), -(405, '__$GROUPID$__', 'dd11def3-3779-4871-9f82-6b5506fac1d4', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.52', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(406, '__$GROUPID$__', 'a19a8e50-dd3a-43df-9b9e-e9efde46e260', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.538', NULL, 1), -(407, '__$GROUPID$__', 'a22eec3a-da52-49ed-8308-f956534c2a47', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.558', NULL, 1), -(408, '__$GROUPID$__', 'e8bae7fa-cfa6-4b10-a590-948807ab6624', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.578', NULL, 1), -(409, '__$GROUPID$__', '854937f9-dbe2-4264-a9ee-68a0df7d144d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.596', NULL, 1), -(410, '__$GROUPID$__', '49ecf64a-d962-43cd-b791-ae3cd9599844', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.615', NULL, 1), -(411, '__$GROUPID$__', 'a86c0f17-e587-4fba-8172-e2a2ddbbbee4', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.632', NULL, 1), -(412, '__$GROUPID$__', 'dbbaf042-a463-4bad-a2ab-d9f054badcb6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.651', NULL, 1), -(413, '__$GROUPID$__', '405c69ae-030e-4d1e-bf24-1ee2c5c0c0b9', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.669', NULL, 1), -(414, '__$GROUPID$__', 'aca01c1b-7753-4123-bf2c-f4c27aa0d0a0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.687', NULL, 1), -(415, '__$GROUPID$__', 'd80c87f1-83f9-41ad-9084-1dfd85f7b202', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.706', NULL, 1), -(416, '__$GROUPID$__', '20351cf7-4245-473d-995c-027ad6858a3c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.725', NULL, 1), -(417, '__$GROUPID$__', '4e735895-6b2d-4db4-915d-c866906daa07', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.744', NULL, 1), -(418, '__$GROUPID$__', '17fe9808-8cf9-4407-8dd2-9030ef1662a8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.763', NULL, 1), -(419, '__$GROUPID$__', 'f8059033-1744-45bf-83fa-b55f9da0a591', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.781', NULL, 1), -(420, '__$GROUPID$__', '8d53a935-554f-408d-a6bf-8e22a3487b42', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.8', NULL, 1), -(421, '__$GROUPID$__', 'eec1832c-ce25-4053-b11a-d1fd60227085', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.819', NULL, 1), -(422, '__$GROUPID$__', '1b29dcca-77ea-451d-a549-f2ac20603668', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.837', NULL, 1), -(423, '__$GROUPID$__', '83ba8e55-235d-4f90-aad2-73ae39b96ec2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.855', NULL, 1), -(424, '__$GROUPID$__', 'ffb8a030-fb77-4a61-b232-a9a1712adc8a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.874', NULL, 1), -(425, '__$GROUPID$__', 'a107b6e3-bf86-4144-a7c4-2969a0af9643', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.892', NULL, 1), -(426, '__$GROUPID$__', '41beea52-ab56-4837-95ef-2b5bb73ab4be', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.911', NULL, 1), -(427, '__$GROUPID$__', '8c7f7f86-eb43-44d2-a650-2e97e5216372', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.931', NULL, 1), -(428, '__$GROUPID$__', 'ccf37b2b-d36c-4281-8b6a-990d635f779e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.95', NULL, 1), -(429, '__$GROUPID$__', 'e3d7e46b-aa62-4c5b-9538-a5e0f963473c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.969', NULL, 1), -(430, '__$GROUPID$__', 'eeabebab-1f55-4781-91dd-f289ce8b6a3d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:05.988', NULL, 1), -(431, '__$GROUPID$__', '7866b672-ce6f-4297-bf54-2cc935d07807', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.007', NULL, 1), -(432, '__$GROUPID$__', '4d9014ad-ab2b-4faa-8db7-4c38a0db4ade', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.025', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(433, '__$GROUPID$__', 'be4b73a1-bb1d-4667-9b3e-724a1b70c843', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.044', NULL, 1), -(434, '__$GROUPID$__', '7812c7e7-f8e2-4644-91b5-b49cafd01932', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.062', NULL, 1), -(435, '__$GROUPID$__', '01ef4852-b521-4d4f-9c44-d35d11041497', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.08', NULL, 1), -(436, '__$GROUPID$__', '17572646-81c0-4424-bc42-296f027b9621', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.099', NULL, 1), -(437, '__$GROUPID$__', '864c953e-5b57-4b53-a6f0-f34409e93028', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.118', NULL, 1), -(438, '__$GROUPID$__', 'f93440e8-55e4-4d72-b9cf-f2c37759336d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.137', NULL, 1), -(439, '__$GROUPID$__', 'f05fd06b-717b-44df-ae05-0a29483aa9f7', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.156', NULL, 1), -(440, '__$GROUPID$__', '8ea7a6a1-878f-499f-b182-cb0110a5bcaf', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.176', NULL, 1), -(441, '__$GROUPID$__', 'b461d5f7-c4fc-4e73-8f8f-299116cc000a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.194', NULL, 1), -(442, '__$GROUPID$__', '53bba55d-111e-4d97-89ed-f0c268011353', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.212', NULL, 1), -(443, '__$GROUPID$__', '75247f5e-9792-4ada-aaf5-9807f2b40c63', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.231', NULL, 1), -(444, '__$GROUPID$__', '201fa10a-da09-4ee8-8356-fdf15f586d86', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.249', NULL, 1), -(445, '__$GROUPID$__', '80799adc-9353-4445-9d3e-2933a3bd9ac3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.267', NULL, 1), -(446, '__$GROUPID$__', '7795cbd3-6261-47d4-b10c-c8e12e9f6f03', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.284', NULL, 1), -(447, '__$GROUPID$__', '6b45f06e-0204-4cec-ba26-899fb725cd08', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.303', NULL, 1), -(448, '__$GROUPID$__', '7e97decd-f8e5-49d6-b46a-eaee9b07e5f4', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.321', NULL, 1), -(449, '__$GROUPID$__', 'dd41b8a8-6e0a-4ec0-8648-b8759ef0bda3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.342', NULL, 1), -(450, '__$GROUPID$__', '2359cfb3-7706-42b2-8bcd-3127c7e69aed', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.363', NULL, 1), -(451, '__$GROUPID$__', '4e95664d-6bd9-45f2-8e00-3af921a4a100', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.382', NULL, 1), -(452, '__$GROUPID$__', 'ac5f6103-b8a9-4e21-b4de-d5543c26d82f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.402', NULL, 1), -(453, '__$GROUPID$__', '3a3b071c-4570-4946-b09c-bf065353ad9d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.423', NULL, 1), -(454, '__$GROUPID$__', 'd4df8684-d9e8-4ad7-872e-683091e92d5f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.443', NULL, 1), -(455, '__$GROUPID$__', '24970ead-a848-49c2-a949-9acf53f33ff1', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.462', NULL, 1), -(456, '__$GROUPID$__', '9a7a047c-35a5-4734-86a8-2e0b921d6e38', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.488', NULL, 1), -(457, '__$GROUPID$__', 'd6934b04-4f5a-4b3d-8ec9-4902b99d044d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.506', NULL, 1), -(458, '__$GROUPID$__', '488e8a2b-3121-497e-bb79-6d219dd184f6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.526', NULL, 1), -(459, '__$GROUPID$__', 'de168a6c-7f97-4c13-b939-fdf081212ad2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.546', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(460, '__$GROUPID$__', '678021cb-3cc3-4b37-a34a-7ca790055f31', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.565', NULL, 1), -(461, '__$GROUPID$__', 'a32b510d-ef3e-47e0-8fd2-aeba498ddedc', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.584', NULL, 1), -(462, '__$GROUPID$__', '0b8fbdeb-acc3-4a0c-b049-520f29661d1f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.603', NULL, 1), -(463, '__$GROUPID$__', '3bdc6ede-399f-40d9-b2c2-cdbff3f3d480', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.621', NULL, 1), -(464, '__$GROUPID$__', '001a78ae-593f-4c4e-a62d-de39956017de', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.641', NULL, 1), -(465, '__$GROUPID$__', '336051fb-f58c-4ce2-a32f-926ba9a6bbbe', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.659', NULL, 1), -(466, '__$GROUPID$__', '7eedd438-5358-497c-a527-d459b7bbe3e3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.676', NULL, 1), -(467, '__$GROUPID$__', '99ba9065-ca6a-45e2-9396-5f0a7ef856d8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.695', NULL, 1), -(468, '__$GROUPID$__', 'a2602e09-e64f-4f6a-9ffe-96d7e79cc703', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.714', NULL, 1), -(469, '__$GROUPID$__', '04652ece-9cad-44d4-99e0-555881f74953', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.732', NULL, 1), -(470, '__$GROUPID$__', '66bc29b8-75fe-49c7-8942-556b834abbf8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.751', NULL, 1), -(471, '__$GROUPID$__', '8a78e843-a13b-46fa-aae9-f27dc49d1d6a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.771', NULL, 1), -(472, '__$GROUPID$__', '0d187b8d-d3f7-4d06-bc1e-b04e68e33d8a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.79', NULL, 1), -(473, '__$GROUPID$__', '4b9fb9bc-6c56-419a-abfc-5d2d32867e49', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.809', NULL, 1), -(474, '__$GROUPID$__', 'c5635733-b14c-40b8-8ae8-005128509377', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.828', NULL, 1), -(475, '__$GROUPID$__', 'e7ef484e-d5cd-4d3b-8ed9-d0a0144c1400', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.846', NULL, 1), -(476, '__$GROUPID$__', '7ec8097c-5174-4b1a-8a81-d9af7de764ce', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.865', NULL, 1), -(477, '__$GROUPID$__', 'db9942e5-56fa-48c4-95c8-c95025f084eb', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.883', NULL, 1), -(478, '__$GROUPID$__', '16fdea16-6152-4ac3-8488-4222fcb70cbb', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.901', NULL, 1), -(479, '__$GROUPID$__', 'e41c84e6-b407-41e9-838e-89f6665baace', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.92', NULL, 1), -(480, '__$GROUPID$__', 'a0d322c2-1187-4fe5-8940-26cc3a586b70', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.938', NULL, 1), -(481, '__$GROUPID$__', 'ccac78f1-1440-4e9b-a9ee-dca8ba4986f9', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.957', NULL, 1), -(482, '__$GROUPID$__', '5274d26c-90e1-4135-83cb-9f4f4d77f09a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.976', NULL, 1), -(483, '__$GROUPID$__', 'd965fffd-c494-425f-834d-b29e8e3506ff', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:06.995', NULL, 1), -(484, '__$GROUPID$__', '910f33c9-1aeb-474e-834c-ac9a204d29ee', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.014', NULL, 1), -(485, '__$GROUPID$__', '6e8c7795-bc12-40e4-9aac-5cd0224bb076', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.033', NULL, 1), -(486, '__$GROUPID$__', '418e85bd-1bc1-405f-8e8b-fef6ec016cd2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.053', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(487, '__$GROUPID$__', '81dd9da8-31b8-4cc0-a1bb-cd00b6d06078', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.071', NULL, 1), -(488, '__$GROUPID$__', '04628057-2c59-40f4-a3cc-a7ce8592fb1b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.089', NULL, 1), -(489, '__$GROUPID$__', 'c829d2b0-3fb7-4eab-ab28-2899fdf73258', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.107', NULL, 1), -(490, '__$GROUPID$__', '77bbd279-7dd7-4736-92f5-82f90fac2ee8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.126', NULL, 1), -(491, '__$GROUPID$__', '3b84dd2b-df6d-408d-a4f7-9762a89c42bb', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.144', NULL, 1), -(492, '__$GROUPID$__', 'a85416c7-4029-45c8-92ce-d88a166916d0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.163', NULL, 1), -(493, '__$GROUPID$__', '75df1740-4ca0-4df8-b1a9-0fd04f2254ad', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.181', NULL, 1), -(494, '__$GROUPID$__', '88afa6ab-4b9c-4d24-9a86-699b77ffe73d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.202', NULL, 1), -(495, '__$GROUPID$__', 'b13548f6-07b3-4b07-8820-b5447ed5091b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.22', NULL, 1), -(496, '__$GROUPID$__', '8422958b-a5cf-470f-98de-ac91fae6fdd9', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.239', NULL, 1), -(497, '__$GROUPID$__', '113e792e-04b2-42a4-87fe-b16b1ff9bb53', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.259', NULL, 1), -(498, '__$GROUPID$__', '2588c235-ef02-49a2-8e54-51202fe06fc3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.277', NULL, 1), -(499, '__$GROUPID$__', 'd709b79e-f9b8-4be4-8ba3-f7c0c4694739', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.295', NULL, 1), -(500, '__$GROUPID$__', '04b9ffea-c56f-4a1c-a5e5-c23de43180cd', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.313', NULL, 1), -(501, '__$GROUPID$__', '2fd6c130-5dea-44a1-896d-13d38fa1566c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.332', NULL, 1), -(502, '__$GROUPID$__', 'f43da9d8-fa9d-438f-828f-eef30013a535', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.35', NULL, 1), -(503, '__$GROUPID$__', '9e27b29d-8915-4ce1-ab42-9da31e0178a2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.368', NULL, 1), -(504, '__$GROUPID$__', '9d6e5808-2d29-48a7-b66c-6bfc258dcb42', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.387', NULL, 1), -(505, '__$GROUPID$__', '86b581dc-461c-4f9b-8d5d-709b663945a0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.406', NULL, 1), -(506, '__$GROUPID$__', 'f4e5dbbb-f66f-4fe1-8701-6a610c9be0e2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.424', NULL, 1), -(507, '__$GROUPID$__', 'c8e41763-7ca6-4494-997e-3c21864242f1', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.442', NULL, 1), -(508, '__$GROUPID$__', 'a0b22394-92f1-48a8-8a3a-1ded50b56970', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.462', NULL, 1), -(509, '__$GROUPID$__', 'ee18638d-0f21-45c9-93b5-5514f6980f4a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.48', NULL, 1), -(510, '__$GROUPID$__', '18068888-539d-4a1f-a0e9-c7deebf56dd6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.498', NULL, 1), -(511, '__$GROUPID$__', '24ab448c-d6ad-4ff9-bf46-fb5bbcb9798d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.519', NULL, 1), -(512, '__$GROUPID$__', '5ad09d3b-85af-4e79-a4a7-d28ed0cb0d29', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.538', NULL, 1), -(513, '__$GROUPID$__', '05ee1758-f3e7-4f7d-aece-3b10ca5e0ffe', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.557', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(514, '__$GROUPID$__', '7b5294b8-bf8a-4150-a921-24646fee4f34', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.577', NULL, 1), -(515, '__$GROUPID$__', 'a811ae24-a83c-4631-a8dd-941fdea60d01', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.596', NULL, 1), -(516, '__$GROUPID$__', 'e526e3cd-cca2-4947-9841-6968d2ed3300', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.614', NULL, 1), -(517, '__$GROUPID$__', 'c70b3c46-dc79-4821-bfb4-983eb28685bb', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.633', NULL, 1), -(518, '__$GROUPID$__', '598586ff-15f1-4189-9996-4161e222e374', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.652', NULL, 1), -(519, '__$GROUPID$__', 'd794379f-dce4-4b0a-b062-a5f8e25ba042', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.67', NULL, 1), -(520, '__$GROUPID$__', '83ec179f-d4e3-4349-b66f-996d0cb65e06', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.689', NULL, 1), -(521, '__$GROUPID$__', '2184e968-6a6c-4cef-a6b9-570eb6eb8185', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.707', NULL, 1), -(522, '__$GROUPID$__', '19d95d3b-bf73-4f29-ac68-4a17f3df4b21', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.727', NULL, 1), -(523, '__$GROUPID$__', 'ab102a84-ef30-4911-9a3d-205ee56fa49a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.748', NULL, 1), -(524, '__$GROUPID$__', '22425650-4cb3-4cf5-b03f-306d59dfc8c1', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.771', NULL, 1), -(525, '__$GROUPID$__', 'c99dca40-5b82-4587-9bbf-1b4fedcbfcf6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.79', NULL, 1), -(526, '__$GROUPID$__', '71105d8e-de22-4a70-bf2d-93832ded65a0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.808', NULL, 1), -(527, '__$GROUPID$__', '447cf3d3-7ec1-4995-b7d2-d8848a379679', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.827', NULL, 1), -(528, '__$GROUPID$__', '4f3d3e80-b3c4-4510-b5ba-707b3882bad5', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.846', NULL, 1), -(529, '__$GROUPID$__', '16322efd-dc01-4623-83c3-3b0e788f5fbe', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.864', NULL, 1), -(530, '__$GROUPID$__', 'f8330776-6f78-46c8-85b4-8bde8b194028', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.883', NULL, 1), -(531, '__$GROUPID$__', '80131f7c-13cd-4cfe-8328-11c2dd1a78a3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.901', NULL, 1), -(532, '__$GROUPID$__', '9e223165-c60e-455a-93df-573a06c07da3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.919', NULL, 1), -(533, '__$GROUPID$__', '077fa7c0-e945-449a-a5cf-b92a313f72d0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.937', NULL, 1), -(534, '__$GROUPID$__', '27026ab9-9bf2-42d3-80cf-497c4c96c2f6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.954', NULL, 1), -(535, '__$GROUPID$__', '3340f891-68f6-4dd9-b8e1-1b096aaa4afa', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.972', NULL, 1), -(536, '__$GROUPID$__', '24de0cf5-3ff5-4597-8940-39f5e13bbcf8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:07.99', NULL, 1), -(537, '__$GROUPID$__', '941ca3c5-e2ea-49dd-8b5d-8444d8b4568a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.01', NULL, 1), -(538, '__$GROUPID$__', '77c2bc59-808e-4bc5-a0ac-f180c6fc90fd', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.029', NULL, 1), -(539, '__$GROUPID$__', 'db92cfbb-7e8a-419a-b14c-2b60067fef7a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.048', NULL, 1), -(540, '__$GROUPID$__', '2d45f83e-d4f8-4fa9-b354-a01b81c102a8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.067', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(541, '__$GROUPID$__', 'ef61e535-ccf8-471d-b3ce-ab932ca3665d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.085', NULL, 1), -(542, '__$GROUPID$__', '77d2a999-e99e-4999-9acc-8c62625dcca3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.103', NULL, 1), -(543, '__$GROUPID$__', '719c99e4-aaa3-426a-bdc7-d1c59f8666fe', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.121', NULL, 1), -(544, '__$GROUPID$__', '204aab35-2026-4b9d-9a7e-26cb7497e8f3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.139', NULL, 1), -(545, '__$GROUPID$__', '586a7f50-e9e8-4cf6-98c3-581a944a4afc', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.157', NULL, 1), -(546, '__$GROUPID$__', '4aad4d18-053d-4029-ad53-0340534084e4', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.175', NULL, 1), -(547, '__$GROUPID$__', '5b0fc7ca-c310-478f-a9d9-0a46aa3891af', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.193', NULL, 1), -(548, '__$GROUPID$__', 'd45033f9-388f-4494-9d76-ba5a15f55edf', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.212', NULL, 1), -(549, '__$GROUPID$__', '72fd1590-c3ca-4d65-9f4d-f9f49d01d87c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.233', NULL, 1), -(550, '__$GROUPID$__', 'd7853a99-cf25-4e70-a712-8851a80fbcd5', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.253', NULL, 1), -(551, '__$GROUPID$__', 'c634960c-a54b-4b87-b526-ae50af8557da', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.272', NULL, 1), -(552, '__$GROUPID$__', 'b447ecee-c344-4459-a4da-0762f1f30821', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.292', NULL, 1), -(553, '__$GROUPID$__', '90ed63b3-99e1-467a-a837-645d36b50046', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.311', NULL, 1), -(554, '__$GROUPID$__', '24eed08c-8dd9-4d85-bc05-54563389691a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.33', NULL, 1), -(555, '__$GROUPID$__', '7da4582e-0bdc-4bd4-8781-b39dec270230', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.348', NULL, 1), -(556, '__$GROUPID$__', 'e439ed22-0431-40c7-91e7-8e090ef4bb98', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.367', NULL, 1), -(557, '__$GROUPID$__', '6cd0c235-9f63-4bf7-9a77-8028fca4c25a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.385', NULL, 1), -(558, '__$GROUPID$__', '8616f09d-74e7-40c2-8b81-354150da10b9', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.404', NULL, 1), -(559, '__$GROUPID$__', '1e8a5915-1cb5-47ec-9103-2dbff5de1532', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.423', NULL, 1), -(560, '__$GROUPID$__', 'ff9119a5-e3be-4dc6-9c4f-ce687a4b140b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.442', NULL, 1), -(561, '__$GROUPID$__', '6075ae11-e3c3-4d80-9b54-ff1675db24e8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.46', NULL, 1), -(562, '__$GROUPID$__', 'e07819af-8c4b-4a54-8057-e3dda614701f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.479', NULL, 1), -(563, '__$GROUPID$__', 'a961d14b-312c-4dcb-8ba8-77bc2a223842', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.498', NULL, 1), -(564, '__$GROUPID$__', 'a01311e5-da64-43ea-8411-e204960ee733', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.517', NULL, 1), -(565, '__$GROUPID$__', 'd1d6a3a8-fb5d-4319-a9cb-0d71e7f8892a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.534', NULL, 1), -(566, '__$GROUPID$__', '9cc3a6e5-9370-4974-9569-1e00fa0a244b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.554', NULL, 1), -(567, '__$GROUPID$__', 'c4d10a58-a9bc-42d8-b47c-762544f0fe35', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.572', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(568, '__$GROUPID$__', '9d0705ff-07bb-41ad-bf13-d4e5d48d1207', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.591', NULL, 1), -(569, '__$GROUPID$__', 'd0d1da04-c04d-47d6-9b7e-d1624b06cb7b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.609', NULL, 1), -(570, '__$GROUPID$__', '5be20615-fd38-4052-a94a-70dd784a4379', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.628', NULL, 1), -(571, '__$GROUPID$__', '0f6be926-82db-4610-a0b7-30c6f2a77bb0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.648', NULL, 1), -(572, '__$GROUPID$__', '8e673fb0-f997-4c6d-94dc-b3f82e073c51', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.667', NULL, 1), -(573, '__$GROUPID$__', '2fdf5cf7-4de0-4d5a-82d6-97de9b1b760a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.686', NULL, 1), -(574, '__$GROUPID$__', 'c34c72e8-01bd-49c2-8a6e-91d8c20ee2b6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.705', NULL, 1), -(575, '__$GROUPID$__', '547949ac-d500-45aa-8925-95cb52168586', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.725', NULL, 1), -(576, '__$GROUPID$__', '9967b1a3-1f2c-45bd-bdaf-1db688ff7339', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.744', NULL, 1), -(577, '__$GROUPID$__', '4ae7a2a4-871f-4376-a01c-b01fe1a0d0cf', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.772', NULL, 1), -(578, '__$GROUPID$__', '9b57629d-82e7-42cb-93a3-dda886906659', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.798', NULL, 1), -(579, '__$GROUPID$__', '0cbd3a7f-6bd7-466e-b9ec-1ac834199bbd', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.817', NULL, 1), -(580, '__$GROUPID$__', 'e90e1871-0714-4f6d-bf74-d509ad035d1f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.836', NULL, 1), -(581, '__$GROUPID$__', '83da34d4-edbd-43e7-9517-e43e42ddac8b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.855', NULL, 1), -(582, '__$GROUPID$__', '23827d08-064a-4d69-b2da-12d49510117e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.875', NULL, 1), -(583, '__$GROUPID$__', 'f6af2e80-1a6d-4909-b45d-5f5909119238', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.894', NULL, 1), -(584, '__$GROUPID$__', '02e786e5-35b6-4338-b48d-ac11fae37955', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.914', NULL, 1), -(585, '__$GROUPID$__', '56b4328f-ac9e-499d-9859-1dee456afbbf', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.933', NULL, 1), -(586, '__$GROUPID$__', 'fe9fcd6c-7314-46a7-9148-72058ee6b82d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.952', NULL, 1), -(587, '__$GROUPID$__', 'f134965c-ecdb-49a4-a212-6f29c264c45f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.971', NULL, 1), -(588, '__$GROUPID$__', '49a66ac3-c7fd-4166-8410-b2566dc95d18', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:08.991', NULL, 1), -(589, '__$GROUPID$__', 'c634f49e-e79b-4b3b-b773-cb87518d76d8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.009', NULL, 1), -(590, '__$GROUPID$__', 'a738fa66-aaf8-4f8c-b7d7-9a23b5ab4587', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.026', NULL, 1), -(591, '__$GROUPID$__', '958df3ee-2473-48da-aa70-9a3cbb5ca6e0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.045', NULL, 1), -(592, '__$GROUPID$__', '5bcc53b8-9cea-4180-8548-a90996e68c4d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.064', NULL, 1), -(593, '__$GROUPID$__', '2af91908-e8bb-40e2-90c1-e3a0bc7fac5d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.082', NULL, 1), -(594, '__$GROUPID$__', '823fb554-6653-4174-9318-88507e7d08ad', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.101', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(595, '__$GROUPID$__', 'd2b39feb-4896-4ed6-bdc5-0432dde0386b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.12', NULL, 1), -(596, '__$GROUPID$__', 'f1dfb32d-69e0-4910-8780-e8740ad25a5f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.138', NULL, 1), -(597, '__$GROUPID$__', '56122bb1-908d-43dd-af7c-bd5f7706f8bc', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.156', NULL, 1), -(598, '__$GROUPID$__', '99f38e82-d6ae-4705-897c-aa34ba56ba63', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.174', NULL, 1), -(599, '__$GROUPID$__', 'e02a2327-e8b2-4aa1-9d2c-44f27209fe53', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.192', NULL, 1), -(600, '__$GROUPID$__', '66d233ef-8eca-45e3-9af4-a51bdfc0a3c8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.211', NULL, 1), -(601, '__$GROUPID$__', 'e59225ed-e028-4c06-a24e-bf588a1179ea', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.229', NULL, 1), -(602, '__$GROUPID$__', 'a8925cb5-6ce8-4482-a811-9b788ca84e2f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.247', NULL, 1), -(603, '__$GROUPID$__', 'e5e052d7-66c8-431f-9fd2-d739465a316c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.265', NULL, 1), -(604, '__$GROUPID$__', 'af4b2c8f-3bd3-4e8f-9da5-bc82c5b050ad', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.283', NULL, 1), -(605, '__$GROUPID$__', 'e5bb5eff-e749-4b1a-9c0a-1f15cee0749b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.302', NULL, 1), -(606, '__$GROUPID$__', 'c4a5b9da-e4eb-4e74-98ed-8b6db63cbe4f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.319', NULL, 1), -(607, '__$GROUPID$__', '43c7fd6c-7883-4eae-a664-52a23acd5c5d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.337', NULL, 1), -(608, '__$GROUPID$__', '968f91ee-eaf5-427f-a5b1-ae9004df7cbf', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.356', NULL, 1), -(609, '__$GROUPID$__', '02fc72a9-8e32-4b23-b164-7262e054f6cf', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.374', NULL, 1), -(610, '__$GROUPID$__', '95c0a40b-e84c-4020-b70f-9ae681666e42', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.392', NULL, 1), -(611, '__$GROUPID$__', '7de98b38-9500-4ab0-b27b-27a75e936a3f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.41', NULL, 1), -(612, '__$GROUPID$__', 'd0c88133-ac6f-4b2a-8ee5-d2dab8baccc8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.428', NULL, 1), -(613, '__$GROUPID$__', 'b6588a0d-1b30-4758-96f7-c338d5446c7c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.446', NULL, 1), -(614, '__$GROUPID$__', '55cc0204-38c2-4da8-99a2-5aa51a36bceb', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.464', NULL, 1), -(615, '__$GROUPID$__', 'bce90e91-57be-4bc6-8faa-15255fe0da4d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.482', NULL, 1), -(616, '__$GROUPID$__', '5c765eb0-b17c-49a9-8b92-fbaca7e48669', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.502', NULL, 1), -(617, '__$GROUPID$__', 'ef9a81f7-0f69-4201-a4cd-05c8bddbc3d1', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.52', NULL, 1), -(618, '__$GROUPID$__', '00ac4c41-2bd9-49a5-bdbf-271d4c5d4e34', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.538', NULL, 1), -(619, '__$GROUPID$__', '3dc15ced-182d-42a7-9e1f-b81c3d33c918', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.556', NULL, 1), -(620, '__$GROUPID$__', '8de01028-3692-488a-9794-d0bdfe5ada27', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.574', NULL, 1), -(621, '__$GROUPID$__', '4c5d587c-9f31-47a4-ad24-dd63e30c4563', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.592', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(622, '__$GROUPID$__', '36c778cb-bee0-44ac-b672-f9c492cfd942', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.611', NULL, 1), -(623, '__$GROUPID$__', 'bb8923ac-e5e1-4a2b-b168-1c7f47181563', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.628', NULL, 1), -(624, '__$GROUPID$__', 'fd3a568c-3c9d-400c-8e29-7774f7909a14', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.646', NULL, 1), -(625, '__$GROUPID$__', '2be332a0-6265-401f-a83a-c79ab27a99d2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.665', NULL, 1), -(626, '__$GROUPID$__', '2a8c6e71-a2f0-47e6-b3c7-fdab3a227287', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.684', NULL, 1), -(627, '__$GROUPID$__', 'd753630c-8b75-44b2-ad7c-99feb67db715', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.702', NULL, 1), -(628, '__$GROUPID$__', 'f30a27da-d6dd-45f2-b4dd-538567d3b85e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.72', NULL, 1), -(629, '__$GROUPID$__', '11346a7f-ada7-408e-8fd6-3093d6de5d2c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.738', NULL, 1), -(630, '__$GROUPID$__', '57accdb2-1313-404b-9f44-8ce877279239', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.756', NULL, 1), -(631, '__$GROUPID$__', 'cec5de79-34f7-4106-887a-87aa16af77b4', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.773', NULL, 1), -(632, '__$GROUPID$__', 'e3a33739-6820-4d5c-86e3-4252740377f8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.79', NULL, 1), -(633, '__$GROUPID$__', '370c0319-c2b2-44a2-93a5-3e6aac080b0f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.808', NULL, 1), -(634, '__$GROUPID$__', 'b6c2116e-3089-44fa-ac33-39e499cc1a12', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.827', NULL, 1), -(635, '__$GROUPID$__', '9e753e6f-f51c-4bc5-9f6b-cc23a6628122', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.844', NULL, 1), -(636, '__$GROUPID$__', '0a7e511b-0270-47d5-9241-b0f4ec6a144a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.863', NULL, 1), -(637, '__$GROUPID$__', '29c0c3be-daa1-4ca4-86aa-940d260c7b5f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.883', NULL, 1), -(638, '__$GROUPID$__', 'eb1a7349-2a33-4376-9a23-d39ca42cfdef', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.902', NULL, 1), -(639, '__$GROUPID$__', '12b84858-55b1-4920-8965-1f4965bfd38e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.92', NULL, 1), -(640, '__$GROUPID$__', '37cf6598-a78e-40f5-817a-96d36b1680a1', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.939', NULL, 1), -(641, '__$GROUPID$__', '87d3a3da-62a0-45be-a554-c03118a2adbb', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.959', NULL, 1), -(642, '__$GROUPID$__', 'd67c7bd1-19ed-40f5-8894-38fbce718963', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.977', NULL, 1), -(643, '__$GROUPID$__', '33b1caaa-568b-4d41-828e-bda67ba0469b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:09.995', NULL, 1), -(644, '__$GROUPID$__', '8b466e5e-cb0a-458d-8271-a7c231aa826f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.013', NULL, 1), -(645, '__$GROUPID$__', '577700b8-522d-4d4a-bb94-ca864be022c0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.03', NULL, 1), -(646, '__$GROUPID$__', '88ab211f-a195-41af-81ae-3ee08e54e929', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.047', NULL, 1), -(647, '__$GROUPID$__', 'da8ce3c4-59c7-4b75-aa4b-71aa08dc9ff8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.064', NULL, 1), -(648, '__$GROUPID$__', '2e5cef8a-ca19-41b9-8c85-e89785784f88', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.082', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(649, '__$GROUPID$__', '7138819c-9288-453d-914d-d8a1e89c9c70', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.1', NULL, 1), -(650, '__$GROUPID$__', 'e5065859-6775-4fd8-bb3e-c7fa780b9809', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.118', NULL, 1), -(651, '__$GROUPID$__', '0c7245e3-0d44-41a8-a0f0-8683a5f125fb', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.136', NULL, 1), -(652, '__$GROUPID$__', '9879f5dd-4831-4fa0-acd0-1e9fb522b24d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.155', NULL, 1), -(653, '__$GROUPID$__', '67c360a3-fe99-4987-9108-e05018d2411f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.173', NULL, 1), -(654, '__$GROUPID$__', '05d919b2-f8bb-4bfb-b59a-869600298646', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.198', NULL, 1), -(655, '__$GROUPID$__', '552cbd11-5eec-4b28-968e-9f881ab59b7e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.216', NULL, 1), -(656, '__$GROUPID$__', '6ad37e09-adc8-468a-ae8b-cb6548879fbf', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.235', NULL, 1), -(657, '__$GROUPID$__', 'a4ce5fd4-1f80-446f-baa0-488ac77491d3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.253', NULL, 1), -(658, '__$GROUPID$__', 'b79c6f2a-f3c3-4f9c-a14a-b81f3ac7ecb3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.271', NULL, 1), -(659, '__$GROUPID$__', '21b2c953-c97c-45d4-a286-c9eb0f614527', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.289', NULL, 1), -(660, '__$GROUPID$__', '736c5a83-68dd-4ada-a86a-9dfea24e9335', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.307', NULL, 1), -(661, '__$GROUPID$__', 'b6b1da2b-07b8-41cb-84a8-7f5e448e00b3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.325', NULL, 1), -(662, '__$GROUPID$__', '06b9370c-ffb5-4b34-8df0-b405e5887873', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.343', NULL, 1), -(663, '__$GROUPID$__', '40cb1ac5-a996-4622-aba4-5a99f72b8737', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.362', NULL, 1), -(664, '__$GROUPID$__', '4f898405-5192-4998-b7ab-c2704db77313', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.38', NULL, 1), -(665, '__$GROUPID$__', '7ba27aa5-a219-4db9-b884-b0b75ce33f62', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.398', NULL, 1), -(666, '__$GROUPID$__', '6c7babaf-7ad1-47a4-8fc2-1c6315285540', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.416', NULL, 1), -(667, '__$GROUPID$__', '0da00893-eaee-4176-a757-adc33356699e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.434', NULL, 1), -(668, '__$GROUPID$__', '9c75be78-fc8b-40a7-8379-8ab9c50d3337', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.452', NULL, 1), -(669, '__$GROUPID$__', 'cca559e6-6f2f-465a-9019-4308f92242c9', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.469', NULL, 1), -(670, '__$GROUPID$__', '71162691-728b-4b6b-a26f-64a6b2186477', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.487', NULL, 1), -(671, '__$GROUPID$__', 'dc9dd4f7-676a-4b2a-b787-7edfcd7255d3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.504', NULL, 1), -(672, '__$GROUPID$__', '512c44df-8476-496f-9ff7-2b5d0861df02', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.522', NULL, 1), -(673, '__$GROUPID$__', '3deb1668-e037-49d9-b9d7-172c26027dd3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.54', NULL, 1), -(674, '__$GROUPID$__', '8b1e1e8f-fa75-4d45-a9bb-3248472f8d08', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.559', NULL, 1), -(675, '__$GROUPID$__', '842789bf-bb27-4768-95a4-86a7d91f71ac', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.576', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(676, '__$GROUPID$__', '920ec291-c50c-41d1-8149-bd79ce367df3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.594', NULL, 1), -(677, '__$GROUPID$__', '2efc652a-8b0d-4730-8863-b3a93a56e464', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.611', NULL, 1), -(678, '__$GROUPID$__', 'ff18f86c-e877-4af7-800b-d67fdecfd38c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.628', NULL, 1), -(679, '__$GROUPID$__', '9a215999-e7ff-4ccb-9c20-110fc5764cf0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.646', NULL, 1), -(680, '__$GROUPID$__', 'cc8af7ec-2f85-4680-9bc9-f46f8874cd6a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.664', NULL, 1), -(681, '__$GROUPID$__', 'd0ca9e66-941c-446e-8e4d-d65a6f888a60', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.681', NULL, 1), -(682, '__$GROUPID$__', '7f17c414-ba3d-4fa4-8414-49c875ec5c9a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.698', NULL, 1), -(683, '__$GROUPID$__', '1dfc4f42-7bc6-498c-b82c-5bc184dd11bb', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.716', NULL, 1), -(684, '__$GROUPID$__', '289dd686-62af-4155-802f-5a3800a33200', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.734', NULL, 1), -(685, '__$GROUPID$__', '6807ed3c-e0dc-4bc4-9b43-b4a3618bfef6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.751', NULL, 1), -(686, '__$GROUPID$__', '22fee339-c79b-48f5-b551-e52ea296231f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.768', NULL, 1), -(687, '__$GROUPID$__', '078a2e7a-c36c-4535-8ec9-3a587551453f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.786', NULL, 1), -(688, '__$GROUPID$__', 'd68394a2-4b59-4019-874a-a5cb5d31e49a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.804', NULL, 1), -(689, '__$GROUPID$__', '042363ea-a60a-4858-8a18-867e062519cd', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.821', NULL, 1), -(690, '__$GROUPID$__', 'c7a55d61-355f-45e6-a3ee-200f4822f0ff', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.839', NULL, 1), -(691, '__$GROUPID$__', '87c1561d-a983-4d1f-836f-30b72a8f328b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.857', NULL, 1), -(692, '__$GROUPID$__', 'b85e6a29-cff3-4c3f-b2c0-c054902fc897', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.874', NULL, 1), -(693, '__$GROUPID$__', 'a9986925-e8ad-44a1-a0cb-c856ecebccf8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.892', NULL, 1), -(694, '__$GROUPID$__', '39ac9578-e15b-4f4e-aef3-e179626ec255', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.909', NULL, 1), -(695, '__$GROUPID$__', 'ccaf2415-48b6-4518-9583-83d8bf5882c0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.927', NULL, 1), -(696, '__$GROUPID$__', '7916ae8c-b03b-4f0a-a293-f5881ada58cd', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.944', NULL, 1), -(697, '__$GROUPID$__', 'ab4c08b6-bac1-4ea3-a024-7793c737f010', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.962', NULL, 1), -(698, '__$GROUPID$__', '5f7e9f59-9597-4b8a-94ec-fa4a1093c95e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.98', NULL, 1), -(699, '__$GROUPID$__', '7c4ce466-ab6e-4bd3-b962-6351685c14ed', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:10.998', NULL, 1), -(700, '__$GROUPID$__', '3fcdc136-8bed-4fd7-9c0f-7508dd6ce6fc', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.016', NULL, 1), -(701, '__$GROUPID$__', '360b4cc6-e1fa-40ba-82d1-766c2ac5942d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.034', NULL, 1), -(702, '__$GROUPID$__', 'ab4cf38b-5338-420a-834c-f9249e017ad9', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.051', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(703, '__$GROUPID$__', '427f6997-c3f2-479e-877a-6e7af0c944c6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.069', NULL, 1), -(704, '__$GROUPID$__', '8b7fd5cc-f596-498b-b518-0ecbe6133384', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.086', NULL, 1), -(705, '__$GROUPID$__', 'caef2174-b0f3-4cd0-afd4-970239ccdb73', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.103', NULL, 1), -(706, '__$GROUPID$__', '2f02c1ee-bf0d-46e4-a662-9679af1d3125', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.124', NULL, 1), -(707, '__$GROUPID$__', '55517188-d547-4107-91f6-c7c72e1d4bcd', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.142', NULL, 1), -(708, '__$GROUPID$__', 'af9b3b9a-7976-444a-9756-ace544ed0db7', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.16', NULL, 1), -(709, '__$GROUPID$__', 'bfb05c1a-0872-4e46-981b-a7453f3706dd', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.179', NULL, 1), -(710, '__$GROUPID$__', 'bd8184c9-b38c-4d61-b447-b9d59798370b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.197', NULL, 1), -(711, '__$GROUPID$__', '1a7ff5a0-5002-4da9-adab-173f67836fcf', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.215', NULL, 1), -(712, '__$GROUPID$__', '63b28a80-4101-46be-a07f-7040f382548e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.232', NULL, 1), -(713, '__$GROUPID$__', '57f40ab5-11a0-47b3-afae-70bcb59f7cc8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.249', NULL, 1), -(714, '__$GROUPID$__', '069d9973-745c-4f22-8bed-ebd0ccc1a60c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.266', NULL, 1), -(715, '__$GROUPID$__', 'cf5b7572-4ee2-4dd6-bf33-d361ec839e74', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.283', NULL, 1), -(716, '__$GROUPID$__', 'd7960706-52c2-4b40-9dc3-19b26b22b286', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.301', NULL, 1), -(717, '__$GROUPID$__', '43e8233a-c6ab-4117-9622-e223ebe12b88', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.318', NULL, 1), -(718, '__$GROUPID$__', '7ef854ce-ef87-4eee-a9f5-352dfed0d6ce', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.335', NULL, 1), -(719, '__$GROUPID$__', 'd1f82907-b385-4cd3-acb6-fec38008a65b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.353', NULL, 1), -(720, '__$GROUPID$__', '5bcdf0f0-ef16-4f02-bd57-a15476e24daf', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.383', NULL, 1), -(721, '__$GROUPID$__', '909db1d2-0255-4410-a2c2-869a5f5f9657', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.404', NULL, 1), -(722, '__$GROUPID$__', 'e4c835b8-9943-4f76-848c-0825708ca4fd', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.422', NULL, 1), -(723, '__$GROUPID$__', '95cf2813-a181-42fa-9a80-772e95d15098', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.44', NULL, 1), -(724, '__$GROUPID$__', 'bb45eac7-3fa6-4ad4-9fc7-6089b3bc3a4b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.458', NULL, 1), -(725, '__$GROUPID$__', 'e9c910ef-f4f3-402c-9b25-e643f3e2a8fa', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.475', NULL, 1), -(726, '__$GROUPID$__', '30414be3-b22a-4e02-a412-39fc2f13efe9', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.493', NULL, 1), -(727, '__$GROUPID$__', '7d7afb48-c145-4468-b8c1-12f7cc92519d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.51', NULL, 1), -(728, '__$GROUPID$__', 'fd46c9b1-bfed-4ea2-aea4-7c480de3d173', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.528', NULL, 1), -(729, '__$GROUPID$__', '037e4974-1990-4b2a-80e8-bdfbe9e3df43', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.546', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(730, '__$GROUPID$__', '988bcf85-2200-4b00-bada-e28eb3bda734', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.564', NULL, 1), -(731, '__$GROUPID$__', '53411b99-e883-429f-b88c-4bfd0dc914fe', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.583', NULL, 1), -(732, '__$GROUPID$__', '597eb976-bc6a-4c48-a18c-38ff526b35b7', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.602', NULL, 1), -(733, '__$GROUPID$__', '7c46197f-8645-476d-95dd-0843079435ac', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.62', NULL, 1), -(734, '__$GROUPID$__', '65346231-4eff-4ae0-9cfd-a8b4c17a0569', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.639', NULL, 1), -(735, '__$GROUPID$__', 'c55ff4bd-db20-4e69-a938-e9d0c5ff1600', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.658', NULL, 1), -(736, '__$GROUPID$__', '910f9b63-e0e6-436a-b6b2-7243162c4757', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.676', NULL, 1), -(737, '__$GROUPID$__', '3117552f-faca-4507-8e4d-c2a9549df81b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.694', NULL, 1), -(738, '__$GROUPID$__', 'aef64371-3e18-401b-a7f9-40b59abefa23', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.712', NULL, 1), -(739, '__$GROUPID$__', '300f24b2-a3ae-481f-b203-520c0b4f6ac9', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.732', NULL, 1), -(740, '__$GROUPID$__', 'e8ee49b4-dfd0-4fbf-b85b-ae553691ad6c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.75', NULL, 1), -(741, '__$GROUPID$__', '9a0122e7-83f1-42ca-88ac-08cb437af10c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.768', NULL, 1), -(742, '__$GROUPID$__', '9882d2b1-9bb6-4f70-ad7c-167b83f4d6dd', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.786', NULL, 1), -(743, '__$GROUPID$__', 'eaa78f81-543a-4240-bab2-bd7a63c7a15c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.804', NULL, 1), -(744, '__$GROUPID$__', '82d624a9-ae0f-42d6-ab5e-f7421e1ff767', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.821', NULL, 1), -(745, '__$GROUPID$__', 'f8f4c604-fcc2-4cd2-adb8-6bc55c4056d6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.839', NULL, 1), -(746, '__$GROUPID$__', '6bc79db0-c7fd-4255-ac49-77d7eb18d44f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.858', NULL, 1), -(747, '__$GROUPID$__', '36b2abdf-202b-4ae9-8202-a624f35606f6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.876', NULL, 1), -(748, '__$GROUPID$__', '95e7b84b-c0f5-4ac6-ab3a-798ac22fc3fa', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.893', NULL, 1), -(749, '__$GROUPID$__', '23cb1da9-647a-45e5-8d58-12f4a05c5c64', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.911', NULL, 1), -(750, '__$GROUPID$__', 'fab1e201-b99b-486f-b5ba-3ddfd85a0a2f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.928', NULL, 1), -(751, '__$GROUPID$__', '8a3e2e94-5daa-47de-8e3d-aa5a54d61010', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.947', NULL, 1), -(752, '__$GROUPID$__', 'f453ff17-e75e-4fa8-95fa-b38b1cc8d34b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.964', NULL, 1), -(753, '__$GROUPID$__', '79c97043-811f-4add-9d43-cf06d36cf25b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:11.983', NULL, 1), -(754, '__$GROUPID$__', '3b734219-262b-4343-b14a-4d4ce28239c3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.002', NULL, 1), -(755, '__$GROUPID$__', 'ed77f101-ba41-4cf4-a3d0-93ea8049c1ca', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.018', NULL, 1), -(756, '__$GROUPID$__', '3feea024-8c3f-4e77-9275-4f060a1cd7e6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.036', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(757, '__$GROUPID$__', '45abf0eb-d175-4e68-900d-62420b9dc66a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.054', NULL, 1), -(758, '__$GROUPID$__', '65a4454f-8b50-458f-a631-33d79110bc5c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.073', NULL, 1), -(759, '__$GROUPID$__', '1584ac6a-cab1-45f9-8fe7-cafacdd20d77', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.09', NULL, 1), -(760, '__$GROUPID$__', '34119afc-6402-4f65-963b-e22aa5619c64', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.109', NULL, 1), -(761, '__$GROUPID$__', 'bd4274e1-e1d2-46a1-9326-8191f7dbfaeb', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.127', NULL, 1), -(762, '__$GROUPID$__', '84017e0c-c0c6-4321-8e6a-ac81a979a092', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.144', NULL, 1), -(763, '__$GROUPID$__', 'e114fe7c-c529-4ef4-acbc-e3e839400df7', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.161', NULL, 1), -(764, '__$GROUPID$__', 'd81aa84b-c2ab-41f0-8ad3-0cd7310fcc6d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.18', NULL, 1), -(765, '__$GROUPID$__', 'a2a11a7e-3bea-4545-a3ba-8d2d01defaf0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.2', NULL, 1), -(766, '__$GROUPID$__', 'fa5addbe-56db-4605-86f0-bd455f2f82c9', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.218', NULL, 1), -(767, '__$GROUPID$__', '48b79be9-094f-4361-b646-99ecd6b431b5', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.236', NULL, 1), -(768, '__$GROUPID$__', 'e42b2e1d-6aaa-4345-8286-b387c0959cf6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.255', NULL, 1), -(769, '__$GROUPID$__', '46ae31ab-45e8-4110-afef-eb8e0cb3a4dd', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.275', NULL, 1), -(770, '__$GROUPID$__', '67d7cb7a-e81b-467f-b145-8919cd0adc2b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.292', NULL, 1), -(771, '__$GROUPID$__', 'cb1ba872-39c2-4f99-8749-4c4b19cf9140', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.31', NULL, 1), -(772, '__$GROUPID$__', 'b52544b0-fc49-4d30-a6a2-90c927678927', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.328', NULL, 1), -(773, '__$GROUPID$__', 'e6fc7cf5-aca0-42f2-bced-2c9b90a677dc', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.345', NULL, 1), -(774, '__$GROUPID$__', '8d6de020-36e4-4be3-bd8d-752822a6d30a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.363', NULL, 1), -(775, '__$GROUPID$__', 'da5a33d8-0c17-4016-a566-4a56a64c5515', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.381', NULL, 1), -(776, '__$GROUPID$__', 'b8e82dfa-d59f-4a62-862e-2ab74252698c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.399', NULL, 1), -(777, '__$GROUPID$__', '6ad4ad04-0f41-4ef9-a87d-73c85b3c7f0e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.416', NULL, 1), -(778, '__$GROUPID$__', 'd1dc8d43-32a9-4d4c-92b2-c1af5da7a673', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.434', NULL, 1), -(779, '__$GROUPID$__', '8f01cc2d-9c5f-4fde-84dd-eb6edcc372a8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.452', NULL, 1), -(780, '__$GROUPID$__', '165fea88-cfd4-47cb-a142-4bd4d271e4e0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.471', NULL, 1), -(781, '__$GROUPID$__', '78cd74c8-f3ab-4b79-8deb-777e0d46348b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.49', NULL, 1), -(782, '__$GROUPID$__', '06e3086d-e2a0-4f37-aa5a-956236e7563f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.509', NULL, 1), -(783, '__$GROUPID$__', '1f87caef-caba-4e93-8916-90c3ecb3cfb8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.527', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(784, '__$GROUPID$__', 'f569427a-3e7a-4861-ab8a-994d61d091bb', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.545', NULL, 1), -(785, '__$GROUPID$__', '009c89fa-931d-4579-b44d-a677c53af318', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.564', NULL, 1), -(786, '__$GROUPID$__', '3f27c093-14ff-414b-baff-a40446ee3602', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.583', NULL, 1), -(787, '__$GROUPID$__', 'c904eb58-4947-41eb-bb8d-37392972af32', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.601', NULL, 1), -(788, '__$GROUPID$__', '624a90e0-3b3c-4719-98d6-dec1a8688486', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.62', NULL, 1), -(789, '__$GROUPID$__', '0be4c27a-5c0c-43c8-a88f-9413cd30ad0a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.639', NULL, 1), -(790, '__$GROUPID$__', '8e4134f0-03fe-46ba-ba0d-eb39b9057971', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.657', NULL, 1), -(791, '__$GROUPID$__', 'a8ab1caa-2f66-4834-a272-3369916d04a8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.675', NULL, 1), -(792, '__$GROUPID$__', 'e0bf3ec2-aab0-44a4-a7ef-e872561bd5d2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.694', NULL, 1), -(793, '__$GROUPID$__', '3b1bf2b1-795a-4960-bb51-5bcc4d436791', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.712', NULL, 1), -(794, '__$GROUPID$__', 'ac5e7426-3502-4abe-a764-1319fedd6f36', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.731', NULL, 1), -(795, '__$GROUPID$__', '5390fd3e-18a4-4230-b463-e5b218cb4bb0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.749', NULL, 1), -(796, '__$GROUPID$__', '84c24328-93c7-4617-954b-5cecff70b124', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.768', NULL, 1), -(797, '__$GROUPID$__', '18e652f1-4655-49df-a804-d1cfd0ba220d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.785', NULL, 1), -(798, '__$GROUPID$__', '600ade99-cb41-410a-8b13-3cfbbb05c1ce', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.803', NULL, 1), -(799, '__$GROUPID$__', 'ed184d52-95df-4792-b1bf-0b43ba6977fb', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.82', NULL, 1), -(800, '__$GROUPID$__', 'ee5e2b8b-73f3-487f-85cc-9c4ac7835279', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.838', NULL, 1), -(801, '__$GROUPID$__', '9de6ff4a-ab7e-4fef-906d-40b78fb04c93', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.856', NULL, 1), -(802, '__$GROUPID$__', 'f6e8152b-336e-41d5-b6d7-7c2240568c14', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.875', NULL, 1), -(803, '__$GROUPID$__', 'b25be83a-1c5d-4c60-b3a2-ac5b91095476', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.893', NULL, 1), -(804, '__$GROUPID$__', 'e31fd8ab-4751-4e0c-9490-6ab116d11b6f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.91', NULL, 1), -(805, '__$GROUPID$__', 'dc9e71f1-5a74-4afd-815e-6bdd7ac16c70', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.927', NULL, 1), -(806, '__$GROUPID$__', 'cc213bcc-bac9-41cd-957e-5d0fb316414f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.944', NULL, 1), -(807, '__$GROUPID$__', '1675023a-4a00-4ed6-881e-e4f7a2610c87', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.961', NULL, 1), -(808, '__$GROUPID$__', 'fa06f738-5837-455a-a97a-8ce66c37790c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.979', NULL, 1), -(809, '__$GROUPID$__', '204fc181-ebfb-4852-9fc0-247145e4d9ae', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:12.996', NULL, 1), -(810, '__$GROUPID$__', '4800565b-5a70-4807-b5b0-2a58376d5367', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.014', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(811, '__$GROUPID$__', 'c7afa961-326b-4eac-9080-1c998676a039', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.033', NULL, 1), -(812, '__$GROUPID$__', '36b7ba34-3541-42f6-9151-fc4ca28513a1', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.05', NULL, 1), -(813, '__$GROUPID$__', '0024efc3-c6ed-4075-bfad-3d80c8d5d9f7', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.068', NULL, 1), -(814, '__$GROUPID$__', '3bd5a40e-aab9-46bf-96c4-87a0a67cd1c3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.085', NULL, 1), -(815, '__$GROUPID$__', 'c9f53613-2a8f-4add-bc6a-6223b3450fa5', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.103', NULL, 1), -(816, '__$GROUPID$__', '68f72a07-7cd4-4ac7-a159-bfccecb23044', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.12', NULL, 1), -(817, '__$GROUPID$__', '49cba218-00b5-4680-8f6a-dee1fe99201a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.138', NULL, 1), -(818, '__$GROUPID$__', 'e0ca8ef6-cfd3-46ca-8976-09343c76c9ea', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.156', NULL, 1), -(819, '__$GROUPID$__', '65cb2d46-7ea4-4b0d-9bd0-ca26f4dcfa4c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.173', NULL, 1), -(820, '__$GROUPID$__', 'fcdcdb71-fb3b-466e-96a1-f6e85d070183', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.191', NULL, 1), -(821, '__$GROUPID$__', 'acad2b63-a8e0-45d6-8689-b1848b08b096', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.208', NULL, 1), -(822, '__$GROUPID$__', 'd960f6fb-cd0c-49b3-a17a-278552418e1f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.226', NULL, 1), -(823, '__$GROUPID$__', 'a810eccf-6814-46c7-be48-b23dbd17a1c8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.243', NULL, 1), -(824, '__$GROUPID$__', '053897e2-6ec3-4ad1-8677-5dc07a691f05', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.261', NULL, 1), -(825, '__$GROUPID$__', '464b33c4-1b3d-401f-852d-79bd32f20ed9', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.278', NULL, 1), -(826, '__$GROUPID$__', '761a8b68-0817-4bd9-ae72-0dcf6aac4460', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.296', NULL, 1), -(827, '__$GROUPID$__', '57c6f958-1df4-4ff3-9505-1f80a58cdd8b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.313', NULL, 1), -(828, '__$GROUPID$__', 'f26a2eae-9f1f-4895-a4f2-7f83bb3529ab', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.329', NULL, 1), -(829, '__$GROUPID$__', '8b7da745-0398-42a6-9c1e-4a484bd98fab', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.347', NULL, 1), -(830, '__$GROUPID$__', 'e9a4f647-356b-4db5-b570-abe9b098a63a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.364', NULL, 1), -(831, '__$GROUPID$__', 'eb30a8f5-506b-4611-ba43-0be606e83b61', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.38', NULL, 1), -(832, '__$GROUPID$__', '6e35027d-36e9-437e-b585-27ced94c5dbf', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.397', NULL, 1), -(833, '__$GROUPID$__', 'eff5ce7c-c4a0-4140-8d69-4ab03c026518', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.414', NULL, 1), -(834, '__$GROUPID$__', 'f94d0264-61fc-41df-9e12-d158a5e48e3e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.433', NULL, 1), -(835, '__$GROUPID$__', '20451ebe-04f8-4d16-b6c9-f9b41fd8441c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.451', NULL, 1), -(836, '__$GROUPID$__', 'ea2ae8be-aea4-4384-adaf-82800af6d3b6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.468', NULL, 1), -(837, '__$GROUPID$__', 'ab24bf8a-c6e1-43e4-b12e-b52d6d0c1c79', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.485', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(838, '__$GROUPID$__', 'd4306af5-ee0f-47db-844d-9df361280b9b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.503', NULL, 1), -(839, '__$GROUPID$__', 'ef5e1f49-c669-48cb-881b-67caec328c2d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.52', NULL, 1), -(840, '__$GROUPID$__', '8866a22d-ab2c-44d6-9bce-e1816de96b7a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.537', NULL, 1), -(841, '__$GROUPID$__', '25503ea1-d78f-4f18-b704-d12b82f5690f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.554', NULL, 1), -(842, '__$GROUPID$__', '416df12a-c14b-426b-9d7d-a17809165e8d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.572', NULL, 1), -(843, '__$GROUPID$__', 'e5df1f32-325d-4f80-8be6-9b8a07b2adfe', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.589', NULL, 1), -(844, '__$GROUPID$__', 'c9f3fae9-7e08-409e-a2f8-775183336aae', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.607', NULL, 1), -(845, '__$GROUPID$__', 'ed8df70a-70ad-492c-b086-e1e79fab404a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.624', NULL, 1), -(846, '__$GROUPID$__', '36c8cfbc-131d-40f5-8587-6a830508eded', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.642', NULL, 1), -(847, '__$GROUPID$__', '71f94636-aeaf-4acf-8a97-eb4641eb264c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.66', NULL, 1), -(848, '__$GROUPID$__', 'd76d0cf5-b0c5-4ca2-a041-bd5eaefd6903', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.678', NULL, 1), -(849, '__$GROUPID$__', 'a5a6e1e6-bb70-4191-8eeb-b5f8d0021018', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.695', NULL, 1), -(850, '__$GROUPID$__', '8cde49ee-8297-47da-a7a2-f66c8cd794aa', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.712', NULL, 1), -(851, '__$GROUPID$__', '21dad5d1-4b86-4299-acb5-e5173248967d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.729', NULL, 1), -(852, '__$GROUPID$__', '3f03126c-63e4-402a-97fc-bf3418bf30da', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.747', NULL, 1), -(853, '__$GROUPID$__', '3659f9fb-962e-4f12-9a13-7f33ba60de8c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.765', NULL, 1), -(854, '__$GROUPID$__', '020bf940-7f99-49d3-8e50-3917cc3975c9', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.782', NULL, 1), -(855, '__$GROUPID$__', '6ce69a0c-2bef-4aec-8831-86acef1385cc', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.799', NULL, 1), -(856, '__$GROUPID$__', 'b3dd03f1-c0e0-4383-aeb3-49d93cae318e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.817', NULL, 1), -(857, '__$GROUPID$__', '6bafc6d3-94c1-4968-9ce7-0ef24ae8e7e8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.834', NULL, 1), -(858, '__$GROUPID$__', '31eebb37-cd87-47b8-b908-83da79243c76', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.852', NULL, 1), -(859, '__$GROUPID$__', 'c6afa0e3-9b57-43b2-8394-3743bc05eb2e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.869', NULL, 1), -(860, '__$GROUPID$__', '42810b4e-db5f-44e6-aac4-0a98054ba081', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.886', NULL, 1), -(861, '__$GROUPID$__', '6e3cb0a4-3863-4c3a-8d4c-cf1a9b3b8d9a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.903', NULL, 1), -(862, '__$GROUPID$__', '2cfe6888-b96b-40b4-ab0e-d2595119abd4', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.921', NULL, 1), -(863, '__$GROUPID$__', '1a30f891-5ca8-4163-be99-b559c31eb003', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.938', NULL, 1), -(864, '__$GROUPID$__', '05dd43f3-f565-4027-b62a-cd012209682b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.956', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(865, '__$GROUPID$__', '674e40ab-f478-416d-8016-922b6e086d60', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.973', NULL, 1), -(866, '__$GROUPID$__', '0d65f0f3-eee4-4e4c-b058-ec219516e4a7', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:13.99', NULL, 1), -(867, '__$GROUPID$__', 'cd138cf5-9235-46b9-bd5d-025d876cf55f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.007', NULL, 1), -(868, '__$GROUPID$__', '131ceb87-3410-4f59-a4ef-fe4dfaf0d23c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.025', NULL, 1), -(869, '__$GROUPID$__', '9f57d6c7-1858-4fed-bec4-95d5484ec54f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.042', NULL, 1), -(870, '__$GROUPID$__', '19dbe340-a4d9-44d8-a0d9-6d4eaabbebd5', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.058', NULL, 1), -(871, '__$GROUPID$__', 'eea9b872-a1a3-4fd3-abb5-da94b0370e9c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.076', NULL, 1), -(872, '__$GROUPID$__', '4b74587b-bc1b-4167-bb06-276d78f63990', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.094', NULL, 1), -(873, '__$GROUPID$__', 'b43396fe-4541-418a-ad80-5f6416354f1e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.111', NULL, 1), -(874, '__$GROUPID$__', '5316ac3d-7c9d-413e-a5a2-b94ad1e2ff24', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.129', NULL, 1), -(875, '__$GROUPID$__', '10bb3578-1edc-43eb-bbc4-e3752f198a3d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.147', NULL, 1), -(876, '__$GROUPID$__', '9503a007-34aa-4810-88ab-f9aa033d8c29', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.164', NULL, 1), -(877, '__$GROUPID$__', '181ea62c-b693-40cd-be3c-a94d2673aff1', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.182', NULL, 1), -(878, '__$GROUPID$__', 'cdc454ab-182c-46cc-8505-45d6eb89627e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.199', NULL, 1), -(879, '__$GROUPID$__', '5ee5b4b4-9d39-41d1-bc08-71840135d87b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.217', NULL, 1), -(880, '__$GROUPID$__', 'bd85708c-4317-4362-8bd0-b6170725b641', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.234', NULL, 1), -(881, '__$GROUPID$__', 'f1c62aa0-c6e8-46a1-9fcc-57371d101e42', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.251', NULL, 1), -(882, '__$GROUPID$__', 'c2b19f83-3189-4ae8-9d62-b0765837582d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.269', NULL, 1), -(883, '__$GROUPID$__', '258a5673-9225-4ac7-9377-1fd903c13553', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.286', NULL, 1), -(884, '__$GROUPID$__', '90dc979b-f49d-41f1-8983-be16fbd2cd3a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.304', NULL, 1), -(885, '__$GROUPID$__', 'ce6960fc-bd26-4483-8a85-79741f098dbb', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.321', NULL, 1), -(886, '__$GROUPID$__', '08ebd932-cc3f-4c24-bcc0-646461f62909', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.339', NULL, 1), -(887, '__$GROUPID$__', 'f46a3028-1269-4851-9efe-962dba1b78db', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.357', NULL, 1), -(888, '__$GROUPID$__', '330606c6-1550-42ec-ab29-9eeab5be83cc', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.374', NULL, 1), -(889, '__$GROUPID$__', 'bc10c5ee-58a1-41f3-96ec-e2d2317b2522', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.391', NULL, 1), -(890, '__$GROUPID$__', '9406e0ab-998a-4b22-86cc-8a4ce0a6f9bf', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.408', NULL, 1), -(891, '__$GROUPID$__', '57d42504-33c7-45cc-81c0-5f5831394e09', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.426', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(892, '__$GROUPID$__', 'e3098ebd-f63f-42d7-b675-99f25b1a8ffc', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.443', NULL, 1), -(893, '__$GROUPID$__', '141c89b7-4934-44f7-b530-bf9cd8138f71', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.461', NULL, 1), -(894, '__$GROUPID$__', '059d12eb-288d-4ad0-acee-379777fcbfd7', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.48', NULL, 1), -(895, '__$GROUPID$__', '74ccb58e-1b7f-4595-a532-38bef3ddb867', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.5', NULL, 1), -(896, '__$GROUPID$__', 'e0e5cbb9-2c1d-4b8a-9308-1fd3dd5e6f8f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.519', NULL, 1), -(897, '__$GROUPID$__', 'daca695b-2ddc-4298-8c32-9ce8aae52a98', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.542', NULL, 1), -(898, '__$GROUPID$__', 'aa0f8662-2f56-4b86-a10d-b075869955f1', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.56', NULL, 1), -(899, '__$GROUPID$__', '4cd52eb0-eeef-498e-b94c-c8d368178641', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.579', NULL, 1), -(900, '__$GROUPID$__', '60c71f25-51cc-4f92-9327-2c18be460dc5', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.597', NULL, 1), -(901, '__$GROUPID$__', '2c16a726-56f7-48b6-b140-e98301b78bc5', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.615', NULL, 1), -(902, '__$GROUPID$__', '510c0e7a-33ed-4dbc-8a68-7874c58865c0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.632', NULL, 1), -(903, '__$GROUPID$__', '5de4f624-99a9-427d-ad26-b8d09cc6ee61', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.65', NULL, 1), -(904, '__$GROUPID$__', '6c778d41-215b-423c-b7de-40b7ef5392af', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.668', NULL, 1), -(905, '__$GROUPID$__', '6488b172-25b4-49f9-ac4d-bef62b9a8015', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.685', NULL, 1), -(906, '__$GROUPID$__', 'd895dda7-a1ad-4afc-b7a7-a1cd1d391591', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.702', NULL, 1), -(907, '__$GROUPID$__', 'e7957daf-d967-4ca8-bc01-e7e090d53a6f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.72', NULL, 1), -(908, '__$GROUPID$__', '2286ca7d-ca2e-4bdc-9d4b-43fc22ee4d76', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.738', NULL, 1), -(909, '__$GROUPID$__', '71785cb0-cc66-4edb-bb01-48f032d518bc', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.756', NULL, 1), -(910, '__$GROUPID$__', '43003170-bbe2-4da5-8b91-1495e63ede12', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.773', NULL, 1), -(911, '__$GROUPID$__', 'c51be266-3e15-4656-b8f6-6f05d855fbf8', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.791', NULL, 1), -(912, '__$GROUPID$__', 'c63f386a-1e07-4ea4-ae2e-d5b71974d39b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.809', NULL, 1), -(913, '__$GROUPID$__', '67db8a70-5ca0-4dca-8a86-21f736a56eab', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.826', NULL, 1), -(914, '__$GROUPID$__', '2a87f168-443f-4d1a-8728-bfcc4ef5280f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.844', NULL, 1), -(915, '__$GROUPID$__', '1fc88195-aeaa-4d68-9a2a-36263e2c9f1e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.862', NULL, 1), -(916, '__$GROUPID$__', '20726747-9e30-4162-8018-afad6fc01114', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.88', NULL, 1), -(917, '__$GROUPID$__', '40abc281-e3ab-4fab-a18e-b146fcde5fc0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.898', NULL, 1), -(918, '__$GROUPID$__', '7e46c934-ae1d-43f0-a755-585eb5938558', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.916', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(919, '__$GROUPID$__', '4944d506-281b-42d3-83c4-96f1bd30d4cd', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.951', NULL, 1), -(920, '__$GROUPID$__', '2974714a-88e5-458a-ae69-71343dd8034b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.968', NULL, 1), -(921, '__$GROUPID$__', '5800f662-bf2d-49bd-9d17-60452af5ec1f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:14.986', NULL, 1), -(922, '__$GROUPID$__', '22b17e20-d73a-4ba0-8c6d-7a01652f162a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.003', NULL, 1), -(923, '__$GROUPID$__', 'ae8d84b2-30b2-4e27-84d8-cf734d13ec22', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.02', NULL, 1), -(924, '__$GROUPID$__', '362f0d2e-dce8-4351-a090-1d7996d0d17a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.037', NULL, 1), -(925, '__$GROUPID$__', '14889d67-2fd4-47e0-b981-b84d154b4926', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.054', NULL, 1), -(926, '__$GROUPID$__', '1d9965c2-87f0-44a3-bf4a-6bcb639bae24', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.072', NULL, 1), -(927, '__$GROUPID$__', '795f8f32-7ef7-4f74-b826-a7a50341d0f9', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.09', NULL, 1), -(928, '__$GROUPID$__', 'a97945a9-6de2-434f-b044-9577add56562', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.107', NULL, 1), -(929, '__$GROUPID$__', '38d43ab1-e72e-4146-bc4a-614ac0942daf', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.125', NULL, 1), -(930, '__$GROUPID$__', '4d0fcf9a-c6fb-4b11-a7ea-1d82e9f8d6aa', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.141', NULL, 1), -(931, '__$GROUPID$__', 'e2634ea3-7445-485c-8b9e-feaa97f632c6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.158', NULL, 1), -(932, '__$GROUPID$__', '63b61543-b108-4b4b-bf97-adda3a89d4c4', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.176', NULL, 1), -(933, '__$GROUPID$__', 'e9b98fb0-3982-4fbf-aafd-1274f73fd664', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.194', NULL, 1), -(934, '__$GROUPID$__', 'ec476a82-b171-47cd-873f-179f2dffd529', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.212', NULL, 1), -(935, '__$GROUPID$__', '8e6d0da0-54d3-402b-ace7-2d6b63106d43', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.231', NULL, 1), -(936, '__$GROUPID$__', '6d241e60-0173-4f0f-b67a-360500d2618d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.249', NULL, 1), -(937, '__$GROUPID$__', 'f402a8e5-8fd0-4bed-af70-fe582c73e667', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.27', NULL, 1), -(938, '__$GROUPID$__', '7d8f4f16-9cdb-4006-afd3-c57b1c71100a', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.288', NULL, 1), -(939, '__$GROUPID$__', 'cf309260-17ee-441c-83a2-7128d97eaab1', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.308', NULL, 1), -(940, '__$GROUPID$__', '3c4a1821-c906-4d34-961f-30ba5cc4c47c', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.327', NULL, 1), -(941, '__$GROUPID$__', '3ac8981d-0338-4289-94b9-3cc2f2c9833f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.344', NULL, 1), -(942, '__$GROUPID$__', '0a80ccfa-4f3d-42d4-862f-b7de6c64af33', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.36', NULL, 1), -(943, '__$GROUPID$__', '76f49bf6-e023-4a2d-b14c-665f5de38d9e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.377', NULL, 1), -(944, '__$GROUPID$__', 'f5106e18-8146-4ee7-b216-56ea3b917e36', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.395', NULL, 1), -(945, '__$GROUPID$__', '3e190e41-4421-4e55-9a10-6767aace72cb', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.412', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(946, '__$GROUPID$__', 'eb8ef27e-07a1-4fdf-845c-d8a2bacb755d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.43', NULL, 1), -(947, '__$GROUPID$__', 'd0637196-f8bc-4793-a9ed-d659026e032b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.448', NULL, 1), -(948, '__$GROUPID$__', '75efbcc6-1923-4ef2-b066-1c588a32d7a2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.465', NULL, 1), -(949, '__$GROUPID$__', '6ee0dff9-539c-4762-83ef-a041481c96ab', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.483', NULL, 1), -(950, '__$GROUPID$__', '6167e5f2-40fb-4d6f-8c43-180105416271', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.5', NULL, 1), -(951, '__$GROUPID$__', '4a3d295c-bbdb-49d2-b916-df4c23ad4a2e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.517', NULL, 1), -(952, '__$GROUPID$__', '654a94c7-e7e1-4285-b65f-161ba77dc7cf', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.535', NULL, 1), -(953, '__$GROUPID$__', 'abf4b578-39f2-436d-8d26-16d575c66ad6', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.551', NULL, 1), -(954, '__$GROUPID$__', '9dc008c4-ff39-4212-9187-c564d33a1cb2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.568', NULL, 1), -(955, '__$GROUPID$__', '86afdeea-e7ef-44fe-9e32-b88664722a79', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.586', NULL, 1), -(956, '__$GROUPID$__', 'ac9c6b5f-c3ef-496b-82be-fe0e7431d625', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.603', NULL, 1), -(957, '__$GROUPID$__', '6e51c733-ce72-4c79-88b2-4ead7b290fef', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.62', NULL, 1), -(958, '__$GROUPID$__', 'ae0b18d6-f5bd-49c7-9b29-a76a4f2f3802', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.637', NULL, 1), -(959, '__$GROUPID$__', '5d16fdb3-cf68-4d2a-b00f-7b8bb590e6be', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.654', NULL, 1), -(960, '__$GROUPID$__', 'e995ffbd-db5c-49f5-b52b-93d00b4a1b20', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.671', NULL, 1), -(961, '__$GROUPID$__', 'd9bee1fd-7d51-4e95-8204-56d71d963528', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.688', NULL, 1), -(962, '__$GROUPID$__', 'a4b9cf73-53ec-4410-8cc0-1280aedcf789', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.705', NULL, 1), -(963, '__$GROUPID$__', '65c2839e-1103-47a7-8609-6f2030e0d9e7', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.722', NULL, 1), -(964, '__$GROUPID$__', '6c73507e-3ee1-41e8-883a-973f77c529d1', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.74', NULL, 1), -(965, '__$GROUPID$__', 'c16cdc68-9f9f-4433-a530-c00ab057ce15', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.757', NULL, 1), -(966, '__$GROUPID$__', '3e100d11-018e-407c-9ac6-26e64b2e19d5', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.775', NULL, 1), -(967, '__$GROUPID$__', '9dceebc5-dc24-4c38-a398-688521281230', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.792', NULL, 1), -(968, '__$GROUPID$__', 'b326c0ac-5c51-433c-aad7-b4dd66c3cb3e', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.81', NULL, 1), -(969, '__$GROUPID$__', 'c7bbf82a-60bf-44d7-a7bc-c2554b83e518', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.827', NULL, 1), -(970, '__$GROUPID$__', '383f622a-cacc-4fa5-844a-65653d34f489', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.844', NULL, 1), -(971, '__$GROUPID$__', '5731695d-593c-4476-9ab1-703a603862e0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.861', NULL, 1), -(972, '__$GROUPID$__', '12e79754-c7ff-4829-9872-a61ff4c62f79', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.878', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(973, '__$GROUPID$__', '306429d7-edec-4564-baf4-5bc00e5eb067', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.895', NULL, 1), -(974, '__$GROUPID$__', 'f97a9f08-b2e9-4eb0-9ee4-55597f8999de', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.912', NULL, 1), -(975, '__$GROUPID$__', 'cb01db18-1a4e-4709-9ed3-3ab6c2587ab4', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.929', NULL, 1), -(976, '__$GROUPID$__', '0c5aa124-28e8-48e7-9e87-b7b5524ddc1d', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.946', NULL, 1), -(977, '__$GROUPID$__', '96060a38-7b68-4c1d-aed8-0c6a478a2d26', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.964', NULL, 1), -(978, '__$GROUPID$__', '088a6dc6-d343-498d-bb62-77fc16e61c88', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.981', NULL, 1), -(979, '__$GROUPID$__', 'd1426fc6-8b95-4662-b73e-0629b5300dd7', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:15.999', NULL, 1), -(980, '__$GROUPID$__', 'b8c44c06-57a1-4d86-b0a6-3b118f89046f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.016', NULL, 1), -(981, '__$GROUPID$__', '44800472-e6da-4435-a2d6-258bffce5388', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.033', NULL, 1), -(982, '__$GROUPID$__', 'b8968a2e-6d34-40c8-bd45-6261f8257f88', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.05', NULL, 1), -(983, '__$GROUPID$__', '8965d553-8850-4fb1-8d43-0aec203f0541', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.067', NULL, 1), -(984, '__$GROUPID$__', '5576d673-c40d-4fc7-be0c-369159c4918b', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.084', NULL, 1), -(985, '__$GROUPID$__', 'c6a91d37-9a00-4603-937b-c25f0d0a70dd', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.101', NULL, 1), -(986, '__$GROUPID$__', '4de3f9b9-55aa-42ba-b12e-33e941a232bf', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.118', NULL, 1), -(987, '__$GROUPID$__', 'dcb7cb9f-4433-4f05-abe7-168bd5a25ecc', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.135', NULL, 1), -(988, '__$GROUPID$__', 'a6a0cefe-d75c-4806-b9c7-58421af27f6f', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.152', NULL, 1), -(989, '__$GROUPID$__', 'e469c877-5f8a-48f2-85ce-6ab0fd46cf77', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.169', NULL, 1), -(990, '__$GROUPID$__', 'e77ee1e0-2de2-46c5-acc9-24ef5b0bbe78', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.186', NULL, 1), -(991, '__$GROUPID$__', 'c7e1c922-b056-4ad6-aeca-8583652662f0', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.203', NULL, 1), -(992, '__$GROUPID$__', 'f151fd72-97c0-46bb-84bd-5aae4e2542aa', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.221', NULL, 1), -(993, '__$GROUPID$__', 'd65b422e-d7cb-4fe2-8303-e2077ea626b9', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.238', NULL, 1), -(994, '__$GROUPID$__', 'f4984726-2a40-4937-84c7-dfecab2410ce', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.255', NULL, 1), -(995, '__$GROUPID$__', '6c9a82bd-dd5b-46e7-98aa-07a8c60f1e21', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.272', NULL, 1), -(996, '__$GROUPID$__', '5ac98efb-3358-49e4-a67f-4111ebb829ec', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.288', NULL, 1), -(997, '__$GROUPID$__', 'ce8d14bd-16e1-43aa-95b2-256580472ff4', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.305', NULL, 1), -(998, '__$GROUPID$__', '70b4bf2b-3505-4d97-afc9-bddc1d99cd38', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.321', NULL, 1), -(999, '__$GROUPID$__', '3ba1ac4a-8973-43a9-89fc-7927793cd3c3', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.338', NULL, 1); -INSERT INTO "PUBLIC"."VERSIONS" VALUES -(1000, '__$GROUPID$__', '87d1c0e6-60b0-44fd-bece-ea163a468bf2', '1', 1, 'ENABLED', NULL, NULL, '', TIMESTAMP '2024-05-21 13:44:16.356', NULL, 1); -CREATE INDEX "PUBLIC"."IDX_VERSIONS_1" ON "PUBLIC"."VERSIONS"("VERSION" NULLS FIRST); -CREATE HASH INDEX "PUBLIC"."IDX_VERSIONS_2" ON "PUBLIC"."VERSIONS"("STATE" NULLS FIRST); -CREATE INDEX "PUBLIC"."IDX_VERSIONS_3" ON "PUBLIC"."VERSIONS"("NAME" NULLS FIRST); -CREATE INDEX "PUBLIC"."IDX_VERSIONS_4" ON "PUBLIC"."VERSIONS"("DESCRIPTION" NULLS FIRST); -CREATE HASH INDEX "PUBLIC"."IDX_VERSIONS_5" ON "PUBLIC"."VERSIONS"("OWNER" NULLS FIRST); -CREATE INDEX "PUBLIC"."IDX_VERSIONS_6" ON "PUBLIC"."VERSIONS"("CREATEDON" NULLS FIRST); -CREATE HASH INDEX "PUBLIC"."IDX_VERSIONS_7" ON "PUBLIC"."VERSIONS"("CONTENTID" NULLS FIRST); -CREATE MEMORY TABLE "PUBLIC"."VERSION_LABELS"( - "GLOBALID" BIGINT NOT NULL, - "LABELKEY" CHARACTER VARYING(256) NOT NULL, - "LABELVALUE" CHARACTER VARYING(512) -); --- 0 +/- SELECT COUNT(*) FROM PUBLIC.VERSION_LABELS; -CREATE INDEX "PUBLIC"."IDX_VLABELS_1" ON "PUBLIC"."VERSION_LABELS"("LABELKEY" NULLS FIRST); -CREATE INDEX "PUBLIC"."IDX_VLABELS_2" ON "PUBLIC"."VERSION_LABELS"("LABELVALUE" NULLS FIRST); -CREATE MEMORY TABLE "PUBLIC"."VERSION_COMMENTS"( - "COMMENTID" CHARACTER VARYING(128) NOT NULL, - "GLOBALID" BIGINT NOT NULL, - "OWNER" CHARACTER VARYING(256), - "CREATEDON" TIMESTAMP NOT NULL, - "CVALUE" CHARACTER VARYING(1024) NOT NULL -); -ALTER TABLE "PUBLIC"."VERSION_COMMENTS" ADD CONSTRAINT "PUBLIC"."CONSTRAINT_4" PRIMARY KEY("COMMENTID"); --- 0 +/- SELECT COUNT(*) FROM PUBLIC.VERSION_COMMENTS; -CREATE INDEX "PUBLIC"."IDX_VERSION_COMMENTS_1" ON "PUBLIC"."VERSION_COMMENTS"("OWNER" NULLS FIRST); -CREATE MEMORY TABLE "PUBLIC"."ARTIFACT_BRANCHES"( - "GROUPID" CHARACTER VARYING(512) NOT NULL, - "ARTIFACTID" CHARACTER VARYING(512) NOT NULL, - "BRANCHID" CHARACTER VARYING(256) NOT NULL, - "BRANCHORDER" INTEGER NOT NULL, - "VERSION" CHARACTER VARYING(256) NOT NULL -); -ALTER TABLE "PUBLIC"."ARTIFACT_BRANCHES" ADD CONSTRAINT "PUBLIC"."CONSTRAINT_1E" PRIMARY KEY("GROUPID", "ARTIFACTID", "BRANCHID", "BRANCHORDER"); --- 1000 +/- SELECT COUNT(*) FROM PUBLIC.ARTIFACT_BRANCHES; -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', 'cb91ebe7-5a1b-462f-bc5d-3e05a5b4d0dc', 'latest', 1, '1'), -('__$GROUPID$__', '06c4c0c1-d00f-4664-b405-5bf8f7c3e9ea', 'latest', 1, '1'), -('__$GROUPID$__', '7fb9cda5-e93d-4b1c-8fd7-ba55ac70008d', 'latest', 1, '1'), -('__$GROUPID$__', 'cf77f4e5-9143-4e19-9d86-fc515eb12479', 'latest', 1, '1'), -('__$GROUPID$__', 'd57c8ddd-e38c-4465-bf43-0df1abf594aa', 'latest', 1, '1'), -('__$GROUPID$__', '96d02ee0-cf26-4e6d-949d-2edff4f251df', 'latest', 1, '1'), -('__$GROUPID$__', '0145500e-4636-48f4-ae94-b171ab8bbb4e', 'latest', 1, '1'), -('__$GROUPID$__', '65fb3521-9945-475b-87bc-32f11d13799b', 'latest', 1, '1'), -('__$GROUPID$__', '22d74f07-581f-4bc5-8a16-171fa9979403', 'latest', 1, '1'), -('__$GROUPID$__', '0cc7ef24-bb6d-4324-a03d-cf23a67fe464', 'latest', 1, '1'), -('__$GROUPID$__', '79c6ce7d-3b49-4e8a-bb2d-8c262dac2e55', 'latest', 1, '1'), -('__$GROUPID$__', '942913c8-c70e-4b29-9a5b-cd0b64a56872', 'latest', 1, '1'), -('__$GROUPID$__', '7e467e02-2f34-45db-9e54-768e2baf8964', 'latest', 1, '1'), -('__$GROUPID$__', '24f5c66e-6519-4ed0-bd16-5a1405e4db87', 'latest', 1, '1'), -('__$GROUPID$__', 'bf1362ab-1cd4-4cbb-b555-d600e6b91aa6', 'latest', 1, '1'), -('__$GROUPID$__', 'c7be03fd-e62a-4560-a23b-5457462124d6', 'latest', 1, '1'), -('__$GROUPID$__', 'e65be352-8ad1-4da1-9232-270d86605600', 'latest', 1, '1'), -('__$GROUPID$__', 'd24e1068-1a9a-4664-9f3f-f02c3a816190', 'latest', 1, '1'), -('__$GROUPID$__', '205db78b-e3a3-4ad5-ac0a-c053c5adf2fb', 'latest', 1, '1'), -('__$GROUPID$__', '260f6311-dabd-410c-a5c8-ed18d7966ef0', 'latest', 1, '1'), -('__$GROUPID$__', '39173b57-91dd-43ec-b206-6708f9b44dac', 'latest', 1, '1'), -('__$GROUPID$__', 'a5b27784-cca6-4e99-8a57-e7c93325d53b', 'latest', 1, '1'), -('__$GROUPID$__', '40428271-3b48-41ae-adab-896cfeeb9e32', 'latest', 1, '1'), -('__$GROUPID$__', '7c560561-7bbd-4fc6-85de-9ea373a4979d', 'latest', 1, '1'), -('__$GROUPID$__', 'f6742416-4b6c-4726-8a4f-7ee4f861d3ad', 'latest', 1, '1'), -('__$GROUPID$__', 'bde4b305-7eb8-4fc0-a5a9-a3051b8c8ba7', 'latest', 1, '1'), -('__$GROUPID$__', '88f7b085-7ba2-4341-aac3-3d2a9aa7ec9c', 'latest', 1, '1'), -('__$GROUPID$__', '4243f08c-608c-42ba-b28e-c0b8b988249c', 'latest', 1, '1'), -('__$GROUPID$__', '58c490f9-8a61-4ceb-9345-360500e15881', 'latest', 1, '1'), -('__$GROUPID$__', '9150c976-babe-492d-8edb-785497ffd23d', 'latest', 1, '1'), -('__$GROUPID$__', 'cec97fd5-9151-4bff-9133-45c746560e91', 'latest', 1, '1'), -('__$GROUPID$__', '9117820f-8856-4f31-b70e-51f977d8c5fc', 'latest', 1, '1'), -('__$GROUPID$__', 'e15b51dc-cc77-4797-8d02-c2c03e5a73a3', 'latest', 1, '1'), -('__$GROUPID$__', '8a5e64dc-a9a3-42f7-ad68-a6ae4d0e0c5b', 'latest', 1, '1'), -('__$GROUPID$__', 'c4b4703c-fbab-4421-8ac9-da3709b99174', 'latest', 1, '1'), -('__$GROUPID$__', 'c03f8abd-3a16-4478-97ce-3d6491b829f4', 'latest', 1, '1'), -('__$GROUPID$__', '803a029b-da61-4baa-8da3-8a327b6c6d56', 'latest', 1, '1'), -('__$GROUPID$__', 'ae131edb-debc-4415-95ad-94e781aa00cd', 'latest', 1, '1'), -('__$GROUPID$__', 'fc01cf2b-000f-454a-a428-e456de015c34', 'latest', 1, '1'), -('__$GROUPID$__', '2c160926-5265-4bf5-a1cc-0c87e6953b97', 'latest', 1, '1'), -('__$GROUPID$__', '02f72213-36d5-40e1-9ce6-03ac4df92087', 'latest', 1, '1'), -('__$GROUPID$__', 'e285c686-5a40-4ff4-9178-ab332512120a', 'latest', 1, '1'), -('__$GROUPID$__', 'd5598f2e-228d-440f-ae93-fc683a5ae7ef', 'latest', 1, '1'), -('__$GROUPID$__', 'ec81316a-6522-47bd-879b-52fbc2425a58', 'latest', 1, '1'), -('__$GROUPID$__', '8d1857de-b458-4476-9f20-a26ac8343b62', 'latest', 1, '1'), -('__$GROUPID$__', 'a28731d2-ae4a-4044-9299-e6a51fd37b8d', 'latest', 1, '1'), -('__$GROUPID$__', '0124d710-92c8-4058-9dd9-49b36690fa5f', 'latest', 1, '1'), -('__$GROUPID$__', '214ca507-695e-47a4-b32e-2f307f05050a', 'latest', 1, '1'); -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', '32be4fca-566c-4ca1-ad6a-3bb408f44abc', 'latest', 1, '1'), -('__$GROUPID$__', '55556b17-156d-46ba-b800-259e5a12c0a8', 'latest', 1, '1'), -('__$GROUPID$__', 'd1e5c01d-94a2-4c24-a9f1-187d30c4393e', 'latest', 1, '1'), -('__$GROUPID$__', '6b556835-d792-42ac-9471-6b33e7864bde', 'latest', 1, '1'), -('__$GROUPID$__', '56852352-e7f2-4b51-b909-ddf0e222c60e', 'latest', 1, '1'), -('__$GROUPID$__', 'a08e294c-867e-4dbe-87e6-f54da187cdac', 'latest', 1, '1'), -('__$GROUPID$__', 'cece0559-1bec-4d4c-ad4f-42bb2726ffd3', 'latest', 1, '1'), -('__$GROUPID$__', '00ab9a7f-ffbc-4964-9425-af4b96d26aff', 'latest', 1, '1'), -('__$GROUPID$__', '79bbfbec-e2ea-4a35-b3f1-ca4739fd3962', 'latest', 1, '1'), -('__$GROUPID$__', '199c6822-ea36-487c-986c-d5f413e19169', 'latest', 1, '1'), -('__$GROUPID$__', '839d0a48-a0d3-4de9-a843-6866041d7020', 'latest', 1, '1'), -('__$GROUPID$__', 'de24e91e-2f4f-4b0d-9eb8-c0d73b3dd7ce', 'latest', 1, '1'), -('__$GROUPID$__', '5639b90a-ea6f-4915-be3b-f37b7333e897', 'latest', 1, '1'), -('__$GROUPID$__', '449f37e8-3aa2-4341-b159-2d7ee7e29f92', 'latest', 1, '1'), -('__$GROUPID$__', 'e9543445-d707-4c42-a6a9-d70da13c8c4f', 'latest', 1, '1'), -('__$GROUPID$__', '537a3424-8448-43df-aee1-fdf94a405fd7', 'latest', 1, '1'), -('__$GROUPID$__', '6f303807-c47d-4c62-b81e-e97745a04413', 'latest', 1, '1'), -('__$GROUPID$__', 'e530388d-0135-4c7f-938b-7f44b9680768', 'latest', 1, '1'), -('__$GROUPID$__', '2c3b36ad-435c-41f1-a5f5-8432c60bca6d', 'latest', 1, '1'), -('__$GROUPID$__', 'e151bf47-022f-40de-9513-0ed57ce301c6', 'latest', 1, '1'), -('__$GROUPID$__', 'e90869f3-31fc-4404-92fb-d1e5b8af348c', 'latest', 1, '1'), -('__$GROUPID$__', '40be1886-3bfa-4a33-abad-201143d3b0bc', 'latest', 1, '1'), -('__$GROUPID$__', 'befce9a3-c954-4842-a474-1fce8f4b051d', 'latest', 1, '1'), -('__$GROUPID$__', '10170629-99a2-4f60-ba1d-88ce1d28b13d', 'latest', 1, '1'), -('__$GROUPID$__', 'e3ede857-18bb-46ba-81c0-50bdb0f26f57', 'latest', 1, '1'), -('__$GROUPID$__', '62cb03b5-2622-4d11-8113-241062bdc91b', 'latest', 1, '1'), -('__$GROUPID$__', 'ea526d21-9e7e-4855-b60f-7087e1b87a01', 'latest', 1, '1'), -('__$GROUPID$__', '8ffb371e-96b6-49d5-8e9f-ec7696f4157f', 'latest', 1, '1'), -('__$GROUPID$__', '62428daf-16a8-4a2a-bfd9-fbc17a93a141', 'latest', 1, '1'), -('__$GROUPID$__', 'fb7e54ed-34b1-489f-bbc5-60a31e4c1aa0', 'latest', 1, '1'), -('__$GROUPID$__', 'a5c6a8cc-6856-49d8-807c-c774f7d5d65d', 'latest', 1, '1'), -('__$GROUPID$__', '306d3824-a1ce-4596-8bc2-01443c7a43db', 'latest', 1, '1'), -('__$GROUPID$__', '4bf53e95-c27a-4009-8e71-87f2ed009d68', 'latest', 1, '1'), -('__$GROUPID$__', '23a2bb48-a268-4d36-a0bc-978c8c75aeb2', 'latest', 1, '1'), -('__$GROUPID$__', 'c9114a0d-07c1-4b39-9440-d03950d62c99', 'latest', 1, '1'), -('__$GROUPID$__', '91655f37-8c16-4f8c-8ece-e415820fdad1', 'latest', 1, '1'), -('__$GROUPID$__', 'd3a235b6-d619-4d97-9bf3-d0876bb3583e', 'latest', 1, '1'), -('__$GROUPID$__', '12b59891-7e14-4a1c-a655-3de16a22755b', 'latest', 1, '1'), -('__$GROUPID$__', 'a3dad4e9-38d7-4dac-b9c4-6da1b9926ced', 'latest', 1, '1'), -('__$GROUPID$__', '1aacb405-f68e-4fa4-a7ff-d373d41b9d80', 'latest', 1, '1'), -('__$GROUPID$__', '062ab44f-c239-4435-a0b5-ec8a132a2e1b', 'latest', 1, '1'), -('__$GROUPID$__', 'fabe72d3-1ff0-4bc4-968b-aedecdc2d1ce', 'latest', 1, '1'), -('__$GROUPID$__', '1e15ea38-2ab6-4281-b043-87bf8302449d', 'latest', 1, '1'), -('__$GROUPID$__', '33463eb9-26e3-4863-8783-259c90a4d63b', 'latest', 1, '1'), -('__$GROUPID$__', '1d37f479-48e0-46eb-ba88-483f4571510f', 'latest', 1, '1'), -('__$GROUPID$__', 'cdf08e3c-5dd0-4726-b674-a6567224b754', 'latest', 1, '1'), -('__$GROUPID$__', 'c18e19fe-709f-4d89-bfc9-122553f9dfca', 'latest', 1, '1'), -('__$GROUPID$__', '8532027d-4499-4c94-8638-088e88241f67', 'latest', 1, '1'); -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', '26addda1-eea3-4653-885f-7bc591420db5', 'latest', 1, '1'), -('__$GROUPID$__', '9abb3a60-fc6a-4b59-b90d-637ae175cc51', 'latest', 1, '1'), -('__$GROUPID$__', '3e6c74c9-4f38-4ea1-89c0-1075327d19a6', 'latest', 1, '1'), -('__$GROUPID$__', '9f23de25-402d-400c-847c-07df61e6d1fb', 'latest', 1, '1'), -('__$GROUPID$__', '9ddbd237-994a-4d41-9d6c-80e496c8d81a', 'latest', 1, '1'), -('__$GROUPID$__', 'ce2a35d0-ca15-4992-8db9-cb4e468bffc5', 'latest', 1, '1'), -('__$GROUPID$__', '94f1e799-1617-4e5b-a511-692be80d9523', 'latest', 1, '1'), -('__$GROUPID$__', '2cb80271-6478-4447-85da-dd0590201afe', 'latest', 1, '1'), -('__$GROUPID$__', '9808560c-e77c-425a-a268-f73566409aef', 'latest', 1, '1'), -('__$GROUPID$__', 'e7498139-69e5-41ab-8e00-ca7476dfe9f2', 'latest', 1, '1'), -('__$GROUPID$__', '8b2840d4-e0b0-4ec9-a063-f6b8a90e8ad9', 'latest', 1, '1'), -('__$GROUPID$__', '6d5d8ff6-2f0f-4786-a648-15ff251a1914', 'latest', 1, '1'), -('__$GROUPID$__', '527ce35e-1bbd-4108-919f-f14435255512', 'latest', 1, '1'), -('__$GROUPID$__', '24f0a809-8834-41d6-9df6-2220457ad47a', 'latest', 1, '1'), -('__$GROUPID$__', '45f8961d-a704-43b0-95c2-67b2e66b4ed7', 'latest', 1, '1'), -('__$GROUPID$__', 'a43d24ad-cfae-498d-8317-5276cc3ac738', 'latest', 1, '1'), -('__$GROUPID$__', '4916f24d-41fe-4b21-bdec-df2cdb8c731d', 'latest', 1, '1'), -('__$GROUPID$__', '03a6e71e-e03c-48cc-a247-9d23c4c0d9f6', 'latest', 1, '1'), -('__$GROUPID$__', '9256bb73-5dfd-4c0f-a465-b05837f4d742', 'latest', 1, '1'), -('__$GROUPID$__', 'ac466933-364a-43c1-ae7b-2ef8d861a31f', 'latest', 1, '1'), -('__$GROUPID$__', '474d1959-4a40-4c2e-b0a3-6c541462ae96', 'latest', 1, '1'), -('__$GROUPID$__', 'abdcd870-dd91-4ba9-8fff-fa34a815c8b9', 'latest', 1, '1'), -('__$GROUPID$__', 'dd457eab-0c2c-4f57-bac3-023d8f8fc502', 'latest', 1, '1'), -('__$GROUPID$__', 'ed5511e1-4a82-4d33-956d-6e5c1e3d0d63', 'latest', 1, '1'), -('__$GROUPID$__', '64001f5f-8ad0-46a1-9ecd-003929388f76', 'latest', 1, '1'), -('__$GROUPID$__', 'bb956a13-c28d-40a1-8f77-beebf7a0e8ff', 'latest', 1, '1'), -('__$GROUPID$__', 'c0bb2d05-99d8-4f6c-a7a8-cca60483aa4f', 'latest', 1, '1'), -('__$GROUPID$__', '6fa48c41-bf5f-4f1f-b618-38d780c32b0d', 'latest', 1, '1'), -('__$GROUPID$__', 'ebaa3136-8d5d-4331-a276-f192328a4a04', 'latest', 1, '1'), -('__$GROUPID$__', '8d58e655-0a62-4b98-8fe9-787f7c323afd', 'latest', 1, '1'), -('__$GROUPID$__', 'de272f93-b580-4de5-88d7-cb85c6669147', 'latest', 1, '1'), -('__$GROUPID$__', '5faf6fae-fed3-46dd-80c8-c884895367a3', 'latest', 1, '1'), -('__$GROUPID$__', '41db40e7-200a-4ee2-9d42-a79a5d818503', 'latest', 1, '1'), -('__$GROUPID$__', '036b4484-66f8-480f-8e0c-f4b4890ba5e2', 'latest', 1, '1'), -('__$GROUPID$__', '6e6407dc-eb9b-47b9-a739-b53257028740', 'latest', 1, '1'), -('__$GROUPID$__', 'bcc8dff9-f568-46cb-836f-e29d6fe9a302', 'latest', 1, '1'), -('__$GROUPID$__', '05a15e87-b5c0-430e-af1f-273a38bddfc0', 'latest', 1, '1'), -('__$GROUPID$__', 'b57e48bc-477b-44bc-8f67-8f1243e993ca', 'latest', 1, '1'), -('__$GROUPID$__', '01291422-dc34-4940-be49-03c0a4223a4f', 'latest', 1, '1'), -('__$GROUPID$__', 'c635dd5e-de14-4ace-89e6-a1b2414c343a', 'latest', 1, '1'), -('__$GROUPID$__', 'a412cbdf-bb7e-4037-92cc-696be8f509d0', 'latest', 1, '1'), -('__$GROUPID$__', 'bcf98aa8-6b65-4c91-9c0d-7965cc0cb88b', 'latest', 1, '1'), -('__$GROUPID$__', '4491d5c5-45a8-4254-9690-c9309f417253', 'latest', 1, '1'), -('__$GROUPID$__', '1a573ed3-8f92-4d35-bffd-be86d4833b68', 'latest', 1, '1'), -('__$GROUPID$__', 'a3a02771-4316-4857-8bc4-9624ed2d75d5', 'latest', 1, '1'), -('__$GROUPID$__', '132e31d6-0a04-44d3-92d4-a079d88a6f64', 'latest', 1, '1'), -('__$GROUPID$__', '559a6bd1-1eda-44a6-b8cf-525176ef0bc6', 'latest', 1, '1'), -('__$GROUPID$__', '69a848d7-0f88-4ef1-9bf0-990e5d325892', 'latest', 1, '1'); -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', '62fbb413-43c2-4571-b97a-06e0cc7f5b93', 'latest', 1, '1'), -('__$GROUPID$__', 'bcda25dd-73d1-4953-94da-a9042bab7144', 'latest', 1, '1'), -('__$GROUPID$__', '2d215e19-449b-467c-96df-6561684f1e94', 'latest', 1, '1'), -('__$GROUPID$__', 'a5eef6c7-49c2-46df-8b55-c56c116813ef', 'latest', 1, '1'), -('__$GROUPID$__', 'c28bf1e6-382b-4d10-bf99-94d1f965843a', 'latest', 1, '1'), -('__$GROUPID$__', '8fd8e932-dc34-4aa2-bcb8-84c2f6b060af', 'latest', 1, '1'), -('__$GROUPID$__', '7a27aad9-be70-4f9e-b246-9d62cde4156f', 'latest', 1, '1'), -('__$GROUPID$__', '5936e921-a6ff-46fc-acdf-a2c64d6e99ee', 'latest', 1, '1'), -('__$GROUPID$__', 'cf7dd8b7-9644-47e5-96d8-9345f2333b74', 'latest', 1, '1'), -('__$GROUPID$__', '96d2f5fb-2e2e-4255-9ac8-8f95f88214be', 'latest', 1, '1'), -('__$GROUPID$__', 'bbc4d5ad-5ae1-4da9-8133-d40e750b0a90', 'latest', 1, '1'), -('__$GROUPID$__', '4b37b37e-e9c3-46a8-b91e-a843e72e9250', 'latest', 1, '1'), -('__$GROUPID$__', '63d01b13-4fe8-4451-9ff6-365b5e6bafbe', 'latest', 1, '1'), -('__$GROUPID$__', 'd3da90e7-f26e-4422-ba4d-fa9074fd2c56', 'latest', 1, '1'), -('__$GROUPID$__', '9cca52b9-b487-46d6-91d1-1890e1d21291', 'latest', 1, '1'), -('__$GROUPID$__', 'dfdb1adb-2470-4796-a706-4dc487e470d2', 'latest', 1, '1'), -('__$GROUPID$__', '7cd43c4f-dff6-4a91-87b4-658cb0814ba0', 'latest', 1, '1'), -('__$GROUPID$__', '80d3c253-0d57-4bcb-afbc-884a9c2e4d58', 'latest', 1, '1'), -('__$GROUPID$__', '338d2cf6-f196-427e-82ac-2dd30026ffb2', 'latest', 1, '1'), -('__$GROUPID$__', '7a4bf758-ae85-49ba-8cba-56d46f456c91', 'latest', 1, '1'), -('__$GROUPID$__', '5113603d-0c64-4b83-ad12-c572e0bda3c5', 'latest', 1, '1'), -('__$GROUPID$__', '07697a9c-75f5-49f5-9a45-ab4ead7dafda', 'latest', 1, '1'), -('__$GROUPID$__', '7ec0d39a-04d4-4c45-8824-3fdb3d195126', 'latest', 1, '1'), -('__$GROUPID$__', '731607e1-7b29-48d1-bba9-538f3d810175', 'latest', 1, '1'), -('__$GROUPID$__', '8468011e-4f57-415a-9c7a-1450dfee5500', 'latest', 1, '1'), -('__$GROUPID$__', 'dbcab97c-067d-4940-bc3f-4797325f7aa6', 'latest', 1, '1'), -('__$GROUPID$__', '519bed55-0f1f-4ee8-929f-996ada2b12a3', 'latest', 1, '1'), -('__$GROUPID$__', '1ec8eef2-a8eb-4287-afcc-78a760e121c1', 'latest', 1, '1'), -('__$GROUPID$__', 'b91a0ed1-ec13-474c-b659-7a1824beebe6', 'latest', 1, '1'), -('__$GROUPID$__', '6c03bc86-4c2b-41fc-8ff0-717b1648da75', 'latest', 1, '1'), -('__$GROUPID$__', 'a45f46f0-c46b-4fbd-b4ad-85f0a88354b1', 'latest', 1, '1'), -('__$GROUPID$__', '3f5ed759-7579-4e34-83a0-9dd647197c32', 'latest', 1, '1'), -('__$GROUPID$__', 'c483ffa1-e483-4d16-b8b0-0f14c7da1310', 'latest', 1, '1'), -('__$GROUPID$__', '548a610b-a52d-4bc6-8e11-650c2c4c7f51', 'latest', 1, '1'), -('__$GROUPID$__', 'b689039e-759f-48d7-8c3a-9d7f9e6b6932', 'latest', 1, '1'), -('__$GROUPID$__', '05dacf6f-b6ac-4bb8-8407-0d061e74861e', 'latest', 1, '1'), -('__$GROUPID$__', '294fab42-55cb-4eed-b4d2-0986a456b892', 'latest', 1, '1'), -('__$GROUPID$__', '5f545b92-11d9-45cc-b6bc-2abc401848c2', 'latest', 1, '1'), -('__$GROUPID$__', '359ea1f6-142b-4966-bdd1-190a52e50d79', 'latest', 1, '1'), -('__$GROUPID$__', 'f891396e-0202-4554-aac4-78354c5f240c', 'latest', 1, '1'), -('__$GROUPID$__', '5d427abb-faf9-4228-868a-4b0b0e7d905a', 'latest', 1, '1'), -('__$GROUPID$__', '73cea19c-f850-4e67-b78b-aa6c66d2e88d', 'latest', 1, '1'), -('__$GROUPID$__', '65b5a5af-f9ff-4e6b-a5e6-10577ed91564', 'latest', 1, '1'), -('__$GROUPID$__', 'aa5898ac-c8a5-4f28-93ca-86a73c535fbb', 'latest', 1, '1'), -('__$GROUPID$__', '489bcfb9-0b47-4368-bb52-662032499579', 'latest', 1, '1'), -('__$GROUPID$__', '4bbb5e9e-3fdc-4b4d-b5eb-eb06101242ef', 'latest', 1, '1'), -('__$GROUPID$__', '610de345-8003-44f4-bebb-6f89e97c145a', 'latest', 1, '1'), -('__$GROUPID$__', '25aefffe-d30e-4868-a034-da651fa14858', 'latest', 1, '1'); -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', '9c374f2a-b2aa-4712-948a-117a6a78f854', 'latest', 1, '1'), -('__$GROUPID$__', '332d971e-087a-49c9-8197-568016ed6908', 'latest', 1, '1'), -('__$GROUPID$__', '889439eb-fd7a-4f7f-99d2-357f1fd34f05', 'latest', 1, '1'), -('__$GROUPID$__', '9a1d9653-fad0-4088-b716-a3fe39323417', 'latest', 1, '1'), -('__$GROUPID$__', 'e167ccb2-a52c-43f8-bd37-77c2967e04cf', 'latest', 1, '1'), -('__$GROUPID$__', 'e46d07e2-6063-42c3-b51f-9a9f83c3a496', 'latest', 1, '1'), -('__$GROUPID$__', '1a7feaa2-c721-44f2-919c-67697f8578cc', 'latest', 1, '1'), -('__$GROUPID$__', 'e9a1740b-0706-4218-ad1e-a9c687eb5ce9', 'latest', 1, '1'), -('__$GROUPID$__', 'ddacde96-08e3-4a0b-9018-db3e714fb83c', 'latest', 1, '1'), -('__$GROUPID$__', '5f9f437e-522d-4f1c-8896-60c40b44974f', 'latest', 1, '1'), -('__$GROUPID$__', '9227f499-24b6-4988-a6f0-f628069da7ba', 'latest', 1, '1'), -('__$GROUPID$__', 'fe698f21-9637-4da7-bd4c-a025168c6f3b', 'latest', 1, '1'), -('__$GROUPID$__', 'd2c1ea98-9318-4407-b521-4ef5e64c481d', 'latest', 1, '1'), -('__$GROUPID$__', '2801e628-546e-4c7a-bef5-0b70697ebb40', 'latest', 1, '1'), -('__$GROUPID$__', 'd44229d4-0d37-4d1c-8368-0d0af1e64dbf', 'latest', 1, '1'), -('__$GROUPID$__', '3c1702d7-07d5-41c8-b358-273679542392', 'latest', 1, '1'), -('__$GROUPID$__', '9d05ffe0-2996-4cf1-b098-0a66e092bc7c', 'latest', 1, '1'), -('__$GROUPID$__', 'd25b7c86-3b21-4b53-a39e-7a71bd26eb1b', 'latest', 1, '1'), -('__$GROUPID$__', 'f1a5afaf-69ba-44a4-97fd-2c8dd38353d7', 'latest', 1, '1'), -('__$GROUPID$__', '7ff418db-004b-4f2f-85dc-c3f0bd7925ea', 'latest', 1, '1'), -('__$GROUPID$__', '525c2752-c30f-4629-b641-8a7eb0353f16', 'latest', 1, '1'), -('__$GROUPID$__', '764fb2f8-34d9-41ed-b378-4b14676d37fc', 'latest', 1, '1'), -('__$GROUPID$__', '0f5cd5ee-0630-479b-b784-b55380ca1ac5', 'latest', 1, '1'), -('__$GROUPID$__', 'aaca65e2-3d60-424e-9575-6184c1f55d8b', 'latest', 1, '1'), -('__$GROUPID$__', 'f366f8bb-10cc-4767-84d4-52dd0f988475', 'latest', 1, '1'), -('__$GROUPID$__', '0bac1b2b-5304-486f-8b3d-271ef09816bc', 'latest', 1, '1'), -('__$GROUPID$__', '93b2ea63-94f2-4b7a-be5f-44dfbf767d7f', 'latest', 1, '1'), -('__$GROUPID$__', '71ccb6a7-2a53-4875-9453-ffa0a688f642', 'latest', 1, '1'), -('__$GROUPID$__', '663605fd-47ff-49cf-88ec-200047a2f7c4', 'latest', 1, '1'), -('__$GROUPID$__', '5742e9ce-5859-42a7-9035-a40a5a9a1798', 'latest', 1, '1'), -('__$GROUPID$__', 'e3d912d1-4845-4b6b-b2ef-550b1afaa66b', 'latest', 1, '1'), -('__$GROUPID$__', 'ab713c30-ae24-4112-bf39-56657c340d52', 'latest', 1, '1'), -('__$GROUPID$__', '8e0dd5e1-5a5a-4cda-aeb6-07e503955122', 'latest', 1, '1'), -('__$GROUPID$__', '4dc4c0cd-e06b-4557-a2e3-405a497137da', 'latest', 1, '1'), -('__$GROUPID$__', '97e47396-6b09-411f-a878-731cba939e55', 'latest', 1, '1'), -('__$GROUPID$__', '6be706d5-c056-4180-ad4a-7b9210055c58', 'latest', 1, '1'), -('__$GROUPID$__', 'ee1467a2-efc8-46ec-b4ce-6f3537986ce2', 'latest', 1, '1'), -('__$GROUPID$__', 'cf2f4780-1120-43f2-8747-90672c86b130', 'latest', 1, '1'), -('__$GROUPID$__', '6b517a95-c151-48ec-8ceb-e5fad8b622f4', 'latest', 1, '1'), -('__$GROUPID$__', '502ffefb-e9e7-482c-9fb6-ec8ca8db3b4b', 'latest', 1, '1'), -('__$GROUPID$__', '3b3f3798-170d-4154-bdea-1b427960d43e', 'latest', 1, '1'), -('__$GROUPID$__', 'caa5effb-0e1c-4807-a2b8-ac852257ab43', 'latest', 1, '1'), -('__$GROUPID$__', '79397f4c-6bc1-479f-ab63-0d0e6143f196', 'latest', 1, '1'), -('__$GROUPID$__', '3c635d3e-5cad-44b1-a1d2-fca3bc2cb94a', 'latest', 1, '1'), -('__$GROUPID$__', '0bdba378-0323-4f4b-ad67-4ef1c6106a5b', 'latest', 1, '1'), -('__$GROUPID$__', 'b45da4c3-dac5-4820-a7cc-70b547ba61b0', 'latest', 1, '1'), -('__$GROUPID$__', 'af2a7b1f-ca14-4bec-acb8-882bc2373878', 'latest', 1, '1'), -('__$GROUPID$__', '27d3785a-0d94-4e6b-b8d9-8e0d69c0a399', 'latest', 1, '1'); -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', '8125cd2f-8404-478b-8c8c-61c4499c938c', 'latest', 1, '1'), -('__$GROUPID$__', 'c93e47ca-2eb4-4277-8929-684d74f8d38b', 'latest', 1, '1'), -('__$GROUPID$__', 'e206be9f-bfcc-42bf-990e-070f4c6fd7a4', 'latest', 1, '1'), -('__$GROUPID$__', '570b175b-1392-422e-87a0-01d8f6c3864b', 'latest', 1, '1'), -('__$GROUPID$__', 'b63fd0b5-9a25-4274-a6d8-626f727e2b20', 'latest', 1, '1'), -('__$GROUPID$__', 'd7133c33-0433-497b-83f2-e9d3d49f526e', 'latest', 1, '1'), -('__$GROUPID$__', 'd88318e3-a3b4-4fe0-96a3-2b9e41210e42', 'latest', 1, '1'), -('__$GROUPID$__', '82bdde6b-895d-4447-b467-8ce18fa85605', 'latest', 1, '1'), -('__$GROUPID$__', '8104cabe-3b62-47cf-94b2-b48c4abdcfc8', 'latest', 1, '1'), -('__$GROUPID$__', 'c1fb9836-319d-4664-84fc-7b965507258a', 'latest', 1, '1'), -('__$GROUPID$__', '4d365d8a-ed84-44b5-b9b4-ee87e96907d3', 'latest', 1, '1'), -('__$GROUPID$__', '5b7b960a-d42d-4129-b4e5-10c2c05e8f6b', 'latest', 1, '1'), -('__$GROUPID$__', '78c4992d-b5e9-45e6-b1c6-b54281cacd77', 'latest', 1, '1'), -('__$GROUPID$__', '3050c4e1-9ad7-433e-a4a0-aeb93f2fb53f', 'latest', 1, '1'), -('__$GROUPID$__', 'c695c1eb-f1a1-4823-83cb-d9967cf1ac57', 'latest', 1, '1'), -('__$GROUPID$__', 'e623ce56-7586-4666-a704-0295fb14708d', 'latest', 1, '1'), -('__$GROUPID$__', 'aa01d77c-b64d-4fe3-9b1c-49a574401994', 'latest', 1, '1'), -('__$GROUPID$__', '3ef6f00f-179c-4810-a2a4-dd4531d8969b', 'latest', 1, '1'), -('__$GROUPID$__', '6f8d2c8f-45e1-40b2-af0b-9347a9405016', 'latest', 1, '1'), -('__$GROUPID$__', 'b695b9c3-da4d-4473-8502-e78f43567927', 'latest', 1, '1'), -('__$GROUPID$__', '552d6a2a-38e7-4fb4-a194-339d4a239c8a', 'latest', 1, '1'), -('__$GROUPID$__', '90ff9e31-420e-48ce-9ff5-9c4cfe7d08d3', 'latest', 1, '1'), -('__$GROUPID$__', '5ce3571c-f835-46a5-9b7b-ebd40025522b', 'latest', 1, '1'), -('__$GROUPID$__', 'a2e00e2d-62d2-4e30-855c-0c1c3cb77ed9', 'latest', 1, '1'), -('__$GROUPID$__', 'f757f498-bd0e-4872-b373-b1732816226b', 'latest', 1, '1'), -('__$GROUPID$__', '695caefa-4bc6-4080-bd1c-a9529705a451', 'latest', 1, '1'), -('__$GROUPID$__', '1d91fefa-ea70-4d28-ab4a-935d193a7fa7', 'latest', 1, '1'), -('__$GROUPID$__', 'e70d7cd2-573a-4e57-9c74-a02e0a319310', 'latest', 1, '1'), -('__$GROUPID$__', 'd5b524df-000b-4160-98ba-90d062358b43', 'latest', 1, '1'), -('__$GROUPID$__', 'ab439d09-9b62-4f38-8133-a57c066c966f', 'latest', 1, '1'), -('__$GROUPID$__', '148ca397-91b2-45b3-ac11-37ac4bb2460f', 'latest', 1, '1'), -('__$GROUPID$__', '1f7e3b14-cf66-4d62-b6b4-48901aacb02d', 'latest', 1, '1'), -('__$GROUPID$__', '61f28d70-b2bb-42e2-b789-213c09612570', 'latest', 1, '1'), -('__$GROUPID$__', '27ebcd5e-9767-4543-a992-f16cac35d0d7', 'latest', 1, '1'), -('__$GROUPID$__', 'cf33c6e4-3d5c-456d-9850-4258320a63ea', 'latest', 1, '1'), -('__$GROUPID$__', '2d9714be-f767-49c1-8319-f08ad2e99b1d', 'latest', 1, '1'), -('__$GROUPID$__', '96a413db-6bb4-4270-b4ce-68c0858c8c56', 'latest', 1, '1'), -('__$GROUPID$__', '03387c4e-44c2-4524-a7c7-02288baa37ba', 'latest', 1, '1'), -('__$GROUPID$__', 'aae0f42d-643a-4033-8a4c-7f67705f41fc', 'latest', 1, '1'), -('__$GROUPID$__', 'f6c425d2-a547-41ae-900a-ec1b35b5cd20', 'latest', 1, '1'), -('__$GROUPID$__', 'fe5d971a-1fc5-4513-936d-48f490cd72b4', 'latest', 1, '1'), -('__$GROUPID$__', 'c6de1654-e123-42c9-9bcc-32124102ecde', 'latest', 1, '1'), -('__$GROUPID$__', 'acfe32f4-a0ef-4fee-b15c-9e0898aaae3c', 'latest', 1, '1'), -('__$GROUPID$__', 'c73a1821-f6c3-4276-bc41-97173635e39c', 'latest', 1, '1'), -('__$GROUPID$__', '25e6d3fd-bf2e-472c-999a-a4247b312b56', 'latest', 1, '1'), -('__$GROUPID$__', '1aa9f4b3-ad55-4625-87f7-e1976a225546', 'latest', 1, '1'), -('__$GROUPID$__', 'f60f1a8f-6ee1-4ca8-9426-dc12907ace59', 'latest', 1, '1'), -('__$GROUPID$__', 'a5b6af38-e49a-4f9d-8b25-1e40312559ef', 'latest', 1, '1'); -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', 'f227ba0c-6deb-4f4d-95ba-1e604746bc94', 'latest', 1, '1'), -('__$GROUPID$__', 'e1401728-0d2f-431b-8874-adac21bda40e', 'latest', 1, '1'), -('__$GROUPID$__', 'c8d984f7-b7e9-4203-924a-699ea40d519a', 'latest', 1, '1'), -('__$GROUPID$__', 'f77bf8f1-59db-43e3-a63c-d318d8a9090d', 'latest', 1, '1'), -('__$GROUPID$__', '5962bf45-bf0f-4a18-8f40-351bfe4d1d06', 'latest', 1, '1'), -('__$GROUPID$__', '52d6ac3f-b704-463c-824f-ea83bbf16b6d', 'latest', 1, '1'), -('__$GROUPID$__', '30cee9a3-42b5-4605-b3c1-b27b2a0b60e5', 'latest', 1, '1'), -('__$GROUPID$__', '26ecf497-0a28-4f80-81e5-46b58b42b223', 'latest', 1, '1'), -('__$GROUPID$__', '473bcca3-a842-4cfe-bb9b-94478d6ee247', 'latest', 1, '1'), -('__$GROUPID$__', 'f95759bb-72a6-4118-9109-b49fb1115946', 'latest', 1, '1'), -('__$GROUPID$__', '28830e75-757f-4e4c-a2a3-17cb296c2868', 'latest', 1, '1'), -('__$GROUPID$__', 'd1b6cd48-c42c-4dd0-935f-75101af2d594', 'latest', 1, '1'), -('__$GROUPID$__', '948a5de2-d3a2-41d2-8e73-4c2458030410', 'latest', 1, '1'), -('__$GROUPID$__', 'f189ccae-aacc-440b-b71f-a5a7fdb41d60', 'latest', 1, '1'), -('__$GROUPID$__', '653982fb-f8e2-4934-962b-63645fbc40b7', 'latest', 1, '1'), -('__$GROUPID$__', '190ef94f-1508-408b-b2b7-cc7735a34a49', 'latest', 1, '1'), -('__$GROUPID$__', '5389df82-00f5-4f7a-bbbb-37ab986d1caf', 'latest', 1, '1'), -('__$GROUPID$__', '84c9a3b5-8271-443c-9cd3-1be79a090041', 'latest', 1, '1'), -('__$GROUPID$__', '41a1a9e6-60eb-4a5e-82c1-27af4a292d69', 'latest', 1, '1'), -('__$GROUPID$__', '9244befe-19ca-447b-8b40-cf14db608610', 'latest', 1, '1'), -('__$GROUPID$__', 'a01e4af8-9b3d-4a77-a1d8-32569324d34c', 'latest', 1, '1'), -('__$GROUPID$__', '79a28909-18c5-4a03-8758-53f467e8de3b', 'latest', 1, '1'), -('__$GROUPID$__', 'bb765ecb-1f24-4200-8c68-aae619c72fb9', 'latest', 1, '1'), -('__$GROUPID$__', '3bba986f-43b9-445e-b68a-e9a0a2e20b5e', 'latest', 1, '1'), -('__$GROUPID$__', '03c4f12c-d631-4d24-a73b-b07ad1e1f9ac', 'latest', 1, '1'), -('__$GROUPID$__', '893e3045-b2fe-43c3-a798-a3caf393a9a0', 'latest', 1, '1'), -('__$GROUPID$__', '3e94a0af-87ba-4f71-923d-4ceaa1821338', 'latest', 1, '1'), -('__$GROUPID$__', '879fa889-007b-418f-8e96-214105e42cb6', 'latest', 1, '1'), -('__$GROUPID$__', '7724031b-3ad7-42b2-9819-1ef9a289cd8e', 'latest', 1, '1'), -('__$GROUPID$__', 'b098f9cc-3733-4a5c-ac82-85ad179514cd', 'latest', 1, '1'), -('__$GROUPID$__', 'd4ef4016-7839-49dd-908d-e4e3f0833e8e', 'latest', 1, '1'), -('__$GROUPID$__', '9dfe5f86-33ba-40fd-977a-28147e99909c', 'latest', 1, '1'), -('__$GROUPID$__', '3b8ba2ea-49ba-43a7-aac1-22c9e7ae17b4', 'latest', 1, '1'), -('__$GROUPID$__', '6522a989-60ee-4cf6-9cc0-5dddc5730aae', 'latest', 1, '1'), -('__$GROUPID$__', '500ff6ef-4fc0-4007-b658-fa9448d1a936', 'latest', 1, '1'), -('__$GROUPID$__', 'f56b717a-bcb8-4f7b-8f21-c777f1b6d935', 'latest', 1, '1'), -('__$GROUPID$__', 'd04c5ed4-70c1-4845-a2ef-5483383b08de', 'latest', 1, '1'), -('__$GROUPID$__', '0ce46809-60b0-4ca3-ba5e-6a0d08f59e2a', 'latest', 1, '1'), -('__$GROUPID$__', 'e90f30cb-4675-4e7c-a12b-d35aca03a9a4', 'latest', 1, '1'), -('__$GROUPID$__', '3f89232e-d8d1-417a-96ef-aff9cca5610b', 'latest', 1, '1'), -('__$GROUPID$__', '0bfc2797-83a4-434d-b09c-68301c20ee79', 'latest', 1, '1'), -('__$GROUPID$__', '2954cfcc-9169-4bce-8bbf-72bf68a6c5ed', 'latest', 1, '1'), -('__$GROUPID$__', 'f6359190-823d-4c8c-b6be-1fc3ce14cc6e', 'latest', 1, '1'), -('__$GROUPID$__', '65e1d9b0-2a42-4c11-8829-7bbbf7277ceb', 'latest', 1, '1'), -('__$GROUPID$__', 'e7ce3bd2-3187-4d64-8615-ea253629f975', 'latest', 1, '1'), -('__$GROUPID$__', '2211c7ab-9afd-47f7-92c1-2cb9d5a62b57', 'latest', 1, '1'), -('__$GROUPID$__', '9320329c-d175-4783-9ebf-d4a89f8a6167', 'latest', 1, '1'), -('__$GROUPID$__', 'c6579939-b8a1-4269-a7de-f02202e26422', 'latest', 1, '1'); -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', '4ca32bb7-231c-4f85-a2f8-1563f138f2c0', 'latest', 1, '1'), -('__$GROUPID$__', 'cd7de510-41ce-4d0a-9ee4-e2ae2e48949c', 'latest', 1, '1'), -('__$GROUPID$__', '445dd5f8-b43f-4468-a619-32ff570b314b', 'latest', 1, '1'), -('__$GROUPID$__', 'e7aa108b-7122-4a3e-83af-15956ac568a9', 'latest', 1, '1'), -('__$GROUPID$__', '5698a602-a371-4eff-a8e0-2fda0aa762a4', 'latest', 1, '1'), -('__$GROUPID$__', '0b628c3b-3b68-4721-af61-9bc41ba75e06', 'latest', 1, '1'), -('__$GROUPID$__', 'bf1deeb5-3108-4c3e-ba57-819280b2fae2', 'latest', 1, '1'), -('__$GROUPID$__', '30846b8e-d6f4-4e7a-a61d-8e91446b9a3c', 'latest', 1, '1'), -('__$GROUPID$__', '8e2451e2-c529-429d-a119-d8dbde2e570b', 'latest', 1, '1'), -('__$GROUPID$__', '36fc5be8-dca3-4ca5-9dd1-e2a19cd4710b', 'latest', 1, '1'), -('__$GROUPID$__', 'd52aad4e-6e1b-4f12-a6b7-9625dbdd546e', 'latest', 1, '1'), -('__$GROUPID$__', '2ba5b0ba-55b1-4424-b644-28990f5f7f7c', 'latest', 1, '1'), -('__$GROUPID$__', 'bbe6ca38-f91c-4b7f-8f3b-9fd290c8ada2', 'latest', 1, '1'), -('__$GROUPID$__', 'e01051b2-3ed4-4877-a3bf-89d4c25a26b4', 'latest', 1, '1'), -('__$GROUPID$__', '6b485480-81ae-4180-b537-98b25bbe7510', 'latest', 1, '1'), -('__$GROUPID$__', '14067fb7-e7e9-45d0-b5e1-36f683d151e4', 'latest', 1, '1'), -('__$GROUPID$__', 'd6e5e418-198c-4def-8d51-fb5405912cce', 'latest', 1, '1'), -('__$GROUPID$__', '5d6ea64d-394a-45c1-b73d-939ea1c761ce', 'latest', 1, '1'), -('__$GROUPID$__', '09be6206-95b0-42a8-8f31-c7f818111413', 'latest', 1, '1'), -('__$GROUPID$__', '122ee6bf-4e6c-4e2e-aded-18ef18ee4c80', 'latest', 1, '1'), -('__$GROUPID$__', '09d5cf40-0384-4133-b2e0-75a80b5074c6', 'latest', 1, '1'), -('__$GROUPID$__', 'e7ce2467-0b51-4b15-b8e3-e223188a1b9b', 'latest', 1, '1'), -('__$GROUPID$__', '040bc186-770d-40fd-ac0c-9240afc4ce67', 'latest', 1, '1'), -('__$GROUPID$__', 'dff18467-c412-4cc1-bb2c-6fcb1a160fa7', 'latest', 1, '1'), -('__$GROUPID$__', '9837e10d-ae18-4199-880a-76ba766dd9d6', 'latest', 1, '1'), -('__$GROUPID$__', '51777c6d-1193-4e97-8c49-cb99c8674e67', 'latest', 1, '1'), -('__$GROUPID$__', '6bf49be1-af44-4464-a9fe-7c66f2cb57ea', 'latest', 1, '1'), -('__$GROUPID$__', '76085212-21db-4051-a786-4533a4ce1264', 'latest', 1, '1'), -('__$GROUPID$__', '79824ece-a172-4c37-8062-969fb61eec50', 'latest', 1, '1'), -('__$GROUPID$__', '98f91c0b-56d8-4f20-be8b-c46f0f2f3c27', 'latest', 1, '1'), -('__$GROUPID$__', '981d1def-f3e0-467e-8af0-2e1e84c94b41', 'latest', 1, '1'), -('__$GROUPID$__', 'e5204905-e11f-402d-940e-b7e129b34b65', 'latest', 1, '1'), -('__$GROUPID$__', '31a3e69c-7d3d-4771-aa8e-dea60e47904e', 'latest', 1, '1'), -('__$GROUPID$__', 'c9c99ab5-cb17-414f-82e6-aa045cfe036f', 'latest', 1, '1'), -('__$GROUPID$__', '61f08417-f07b-4b88-aa48-e9e272fd9f5d', 'latest', 1, '1'), -('__$GROUPID$__', 'cf08f2dd-4705-4096-baa4-4603731dffe2', 'latest', 1, '1'), -('__$GROUPID$__', 'e96c2031-0bc9-44b4-a2a5-789166d95525', 'latest', 1, '1'), -('__$GROUPID$__', '3cb5ce3f-9f29-4534-86c1-2851a3a0e0b2', 'latest', 1, '1'), -('__$GROUPID$__', 'faa699c8-815b-4f65-b13c-36006d80211f', 'latest', 1, '1'), -('__$GROUPID$__', '5104af84-3741-42b2-8528-b4626fedfd2c', 'latest', 1, '1'), -('__$GROUPID$__', 'b41e5f0a-0e40-4194-902a-bcc8622999be', 'latest', 1, '1'), -('__$GROUPID$__', '4dfbd027-038f-4142-99eb-3265ccf770f0', 'latest', 1, '1'), -('__$GROUPID$__', '26f4f339-442e-46f8-9832-86e2ddb23fe4', 'latest', 1, '1'), -('__$GROUPID$__', '5fc0c20a-61e9-48d8-905a-d24f84c4d094', 'latest', 1, '1'), -('__$GROUPID$__', 'd71b6118-2bd7-4900-b71e-56983619697f', 'latest', 1, '1'), -('__$GROUPID$__', '7d2b867e-5701-481e-b163-39e9c571d845', 'latest', 1, '1'), -('__$GROUPID$__', 'a15d38e6-473e-4ad1-9e51-0504c2c25410', 'latest', 1, '1'), -('__$GROUPID$__', '4f9acf8f-18f4-49af-8fcb-c4736aea4970', 'latest', 1, '1'); -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', '56663a71-2bd1-4ad0-8761-d88031bdfc01', 'latest', 1, '1'), -('__$GROUPID$__', '50e15489-c86e-4df8-8e4b-d4e2cb30bc6b', 'latest', 1, '1'), -('__$GROUPID$__', 'a0b1fe7c-48dc-4c9e-a8ac-4d969c9f77fc', 'latest', 1, '1'), -('__$GROUPID$__', '1c17e99a-2fbc-44de-937b-1bb6de989502', 'latest', 1, '1'), -('__$GROUPID$__', '18385311-230f-402e-858b-0c7709fd1a53', 'latest', 1, '1'), -('__$GROUPID$__', '558a7480-cb3b-4a1e-aaf1-508ea55faca1', 'latest', 1, '1'), -('__$GROUPID$__', '06fe3486-f568-4ef1-b71b-1312cce3cbb3', 'latest', 1, '1'), -('__$GROUPID$__', '6c849044-941a-45c6-9561-6965f0787941', 'latest', 1, '1'), -('__$GROUPID$__', '9d243499-abba-44dc-9c35-065571d6b64c', 'latest', 1, '1'), -('__$GROUPID$__', 'b65ba228-dbc3-4bd5-86a8-e8e9864e1491', 'latest', 1, '1'), -('__$GROUPID$__', 'a32b41a8-a42f-4396-a5a9-4bca335f24f0', 'latest', 1, '1'), -('__$GROUPID$__', '86c26ea8-5b63-4ca1-92b3-f4e16bf7f3d0', 'latest', 1, '1'), -('__$GROUPID$__', '6dc39edb-1538-40a0-85f2-b1c7bf427192', 'latest', 1, '1'), -('__$GROUPID$__', 'bbe2d4ed-6333-4eff-9756-b1c6b018e4fa', 'latest', 1, '1'), -('__$GROUPID$__', '5ac58a7a-3b5a-4408-b65e-1f154b3ffefc', 'latest', 1, '1'), -('__$GROUPID$__', 'da24911e-a399-40c7-ae7e-0ced5e648d14', 'latest', 1, '1'), -('__$GROUPID$__', '81bb9ade-f416-4231-8d19-5e10d5f8fda5', 'latest', 1, '1'), -('__$GROUPID$__', 'bd5e11fb-f041-403f-a1bf-343a0ce536a0', 'latest', 1, '1'), -('__$GROUPID$__', 'e1d0354f-949b-466e-8456-e977a38dfce9', 'latest', 1, '1'), -('__$GROUPID$__', 'b9746e93-29e5-4d66-b851-71580c9dfa87', 'latest', 1, '1'), -('__$GROUPID$__', 'dd11def3-3779-4871-9f82-6b5506fac1d4', 'latest', 1, '1'), -('__$GROUPID$__', 'a19a8e50-dd3a-43df-9b9e-e9efde46e260', 'latest', 1, '1'), -('__$GROUPID$__', 'a22eec3a-da52-49ed-8308-f956534c2a47', 'latest', 1, '1'), -('__$GROUPID$__', 'e8bae7fa-cfa6-4b10-a590-948807ab6624', 'latest', 1, '1'), -('__$GROUPID$__', '854937f9-dbe2-4264-a9ee-68a0df7d144d', 'latest', 1, '1'), -('__$GROUPID$__', '49ecf64a-d962-43cd-b791-ae3cd9599844', 'latest', 1, '1'), -('__$GROUPID$__', 'a86c0f17-e587-4fba-8172-e2a2ddbbbee4', 'latest', 1, '1'), -('__$GROUPID$__', 'dbbaf042-a463-4bad-a2ab-d9f054badcb6', 'latest', 1, '1'), -('__$GROUPID$__', '405c69ae-030e-4d1e-bf24-1ee2c5c0c0b9', 'latest', 1, '1'), -('__$GROUPID$__', 'aca01c1b-7753-4123-bf2c-f4c27aa0d0a0', 'latest', 1, '1'), -('__$GROUPID$__', 'd80c87f1-83f9-41ad-9084-1dfd85f7b202', 'latest', 1, '1'), -('__$GROUPID$__', '20351cf7-4245-473d-995c-027ad6858a3c', 'latest', 1, '1'), -('__$GROUPID$__', '4e735895-6b2d-4db4-915d-c866906daa07', 'latest', 1, '1'), -('__$GROUPID$__', '17fe9808-8cf9-4407-8dd2-9030ef1662a8', 'latest', 1, '1'), -('__$GROUPID$__', 'f8059033-1744-45bf-83fa-b55f9da0a591', 'latest', 1, '1'), -('__$GROUPID$__', '8d53a935-554f-408d-a6bf-8e22a3487b42', 'latest', 1, '1'), -('__$GROUPID$__', 'eec1832c-ce25-4053-b11a-d1fd60227085', 'latest', 1, '1'), -('__$GROUPID$__', '1b29dcca-77ea-451d-a549-f2ac20603668', 'latest', 1, '1'), -('__$GROUPID$__', '83ba8e55-235d-4f90-aad2-73ae39b96ec2', 'latest', 1, '1'), -('__$GROUPID$__', 'ffb8a030-fb77-4a61-b232-a9a1712adc8a', 'latest', 1, '1'), -('__$GROUPID$__', 'a107b6e3-bf86-4144-a7c4-2969a0af9643', 'latest', 1, '1'), -('__$GROUPID$__', '41beea52-ab56-4837-95ef-2b5bb73ab4be', 'latest', 1, '1'), -('__$GROUPID$__', '8c7f7f86-eb43-44d2-a650-2e97e5216372', 'latest', 1, '1'), -('__$GROUPID$__', 'ccf37b2b-d36c-4281-8b6a-990d635f779e', 'latest', 1, '1'), -('__$GROUPID$__', 'e3d7e46b-aa62-4c5b-9538-a5e0f963473c', 'latest', 1, '1'), -('__$GROUPID$__', 'eeabebab-1f55-4781-91dd-f289ce8b6a3d', 'latest', 1, '1'), -('__$GROUPID$__', '7866b672-ce6f-4297-bf54-2cc935d07807', 'latest', 1, '1'), -('__$GROUPID$__', '4d9014ad-ab2b-4faa-8db7-4c38a0db4ade', 'latest', 1, '1'); -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', 'be4b73a1-bb1d-4667-9b3e-724a1b70c843', 'latest', 1, '1'), -('__$GROUPID$__', '7812c7e7-f8e2-4644-91b5-b49cafd01932', 'latest', 1, '1'), -('__$GROUPID$__', '01ef4852-b521-4d4f-9c44-d35d11041497', 'latest', 1, '1'), -('__$GROUPID$__', '17572646-81c0-4424-bc42-296f027b9621', 'latest', 1, '1'), -('__$GROUPID$__', '864c953e-5b57-4b53-a6f0-f34409e93028', 'latest', 1, '1'), -('__$GROUPID$__', 'f93440e8-55e4-4d72-b9cf-f2c37759336d', 'latest', 1, '1'), -('__$GROUPID$__', 'f05fd06b-717b-44df-ae05-0a29483aa9f7', 'latest', 1, '1'), -('__$GROUPID$__', '8ea7a6a1-878f-499f-b182-cb0110a5bcaf', 'latest', 1, '1'), -('__$GROUPID$__', 'b461d5f7-c4fc-4e73-8f8f-299116cc000a', 'latest', 1, '1'), -('__$GROUPID$__', '53bba55d-111e-4d97-89ed-f0c268011353', 'latest', 1, '1'), -('__$GROUPID$__', '75247f5e-9792-4ada-aaf5-9807f2b40c63', 'latest', 1, '1'), -('__$GROUPID$__', '201fa10a-da09-4ee8-8356-fdf15f586d86', 'latest', 1, '1'), -('__$GROUPID$__', '80799adc-9353-4445-9d3e-2933a3bd9ac3', 'latest', 1, '1'), -('__$GROUPID$__', '7795cbd3-6261-47d4-b10c-c8e12e9f6f03', 'latest', 1, '1'), -('__$GROUPID$__', '6b45f06e-0204-4cec-ba26-899fb725cd08', 'latest', 1, '1'), -('__$GROUPID$__', '7e97decd-f8e5-49d6-b46a-eaee9b07e5f4', 'latest', 1, '1'), -('__$GROUPID$__', 'dd41b8a8-6e0a-4ec0-8648-b8759ef0bda3', 'latest', 1, '1'), -('__$GROUPID$__', '2359cfb3-7706-42b2-8bcd-3127c7e69aed', 'latest', 1, '1'), -('__$GROUPID$__', '4e95664d-6bd9-45f2-8e00-3af921a4a100', 'latest', 1, '1'), -('__$GROUPID$__', 'ac5f6103-b8a9-4e21-b4de-d5543c26d82f', 'latest', 1, '1'), -('__$GROUPID$__', '3a3b071c-4570-4946-b09c-bf065353ad9d', 'latest', 1, '1'), -('__$GROUPID$__', 'd4df8684-d9e8-4ad7-872e-683091e92d5f', 'latest', 1, '1'), -('__$GROUPID$__', '24970ead-a848-49c2-a949-9acf53f33ff1', 'latest', 1, '1'), -('__$GROUPID$__', '9a7a047c-35a5-4734-86a8-2e0b921d6e38', 'latest', 1, '1'), -('__$GROUPID$__', 'd6934b04-4f5a-4b3d-8ec9-4902b99d044d', 'latest', 1, '1'), -('__$GROUPID$__', '488e8a2b-3121-497e-bb79-6d219dd184f6', 'latest', 1, '1'), -('__$GROUPID$__', 'de168a6c-7f97-4c13-b939-fdf081212ad2', 'latest', 1, '1'), -('__$GROUPID$__', '678021cb-3cc3-4b37-a34a-7ca790055f31', 'latest', 1, '1'), -('__$GROUPID$__', 'a32b510d-ef3e-47e0-8fd2-aeba498ddedc', 'latest', 1, '1'), -('__$GROUPID$__', '0b8fbdeb-acc3-4a0c-b049-520f29661d1f', 'latest', 1, '1'), -('__$GROUPID$__', '3bdc6ede-399f-40d9-b2c2-cdbff3f3d480', 'latest', 1, '1'), -('__$GROUPID$__', '001a78ae-593f-4c4e-a62d-de39956017de', 'latest', 1, '1'), -('__$GROUPID$__', '336051fb-f58c-4ce2-a32f-926ba9a6bbbe', 'latest', 1, '1'), -('__$GROUPID$__', '7eedd438-5358-497c-a527-d459b7bbe3e3', 'latest', 1, '1'), -('__$GROUPID$__', '99ba9065-ca6a-45e2-9396-5f0a7ef856d8', 'latest', 1, '1'), -('__$GROUPID$__', 'a2602e09-e64f-4f6a-9ffe-96d7e79cc703', 'latest', 1, '1'), -('__$GROUPID$__', '04652ece-9cad-44d4-99e0-555881f74953', 'latest', 1, '1'), -('__$GROUPID$__', '66bc29b8-75fe-49c7-8942-556b834abbf8', 'latest', 1, '1'), -('__$GROUPID$__', '8a78e843-a13b-46fa-aae9-f27dc49d1d6a', 'latest', 1, '1'), -('__$GROUPID$__', '0d187b8d-d3f7-4d06-bc1e-b04e68e33d8a', 'latest', 1, '1'), -('__$GROUPID$__', '4b9fb9bc-6c56-419a-abfc-5d2d32867e49', 'latest', 1, '1'), -('__$GROUPID$__', 'c5635733-b14c-40b8-8ae8-005128509377', 'latest', 1, '1'), -('__$GROUPID$__', 'e7ef484e-d5cd-4d3b-8ed9-d0a0144c1400', 'latest', 1, '1'), -('__$GROUPID$__', '7ec8097c-5174-4b1a-8a81-d9af7de764ce', 'latest', 1, '1'), -('__$GROUPID$__', 'db9942e5-56fa-48c4-95c8-c95025f084eb', 'latest', 1, '1'), -('__$GROUPID$__', '16fdea16-6152-4ac3-8488-4222fcb70cbb', 'latest', 1, '1'), -('__$GROUPID$__', 'e41c84e6-b407-41e9-838e-89f6665baace', 'latest', 1, '1'), -('__$GROUPID$__', 'a0d322c2-1187-4fe5-8940-26cc3a586b70', 'latest', 1, '1'); -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', 'ccac78f1-1440-4e9b-a9ee-dca8ba4986f9', 'latest', 1, '1'), -('__$GROUPID$__', '5274d26c-90e1-4135-83cb-9f4f4d77f09a', 'latest', 1, '1'), -('__$GROUPID$__', 'd965fffd-c494-425f-834d-b29e8e3506ff', 'latest', 1, '1'), -('__$GROUPID$__', '910f33c9-1aeb-474e-834c-ac9a204d29ee', 'latest', 1, '1'), -('__$GROUPID$__', '6e8c7795-bc12-40e4-9aac-5cd0224bb076', 'latest', 1, '1'), -('__$GROUPID$__', '418e85bd-1bc1-405f-8e8b-fef6ec016cd2', 'latest', 1, '1'), -('__$GROUPID$__', '81dd9da8-31b8-4cc0-a1bb-cd00b6d06078', 'latest', 1, '1'), -('__$GROUPID$__', '04628057-2c59-40f4-a3cc-a7ce8592fb1b', 'latest', 1, '1'), -('__$GROUPID$__', 'c829d2b0-3fb7-4eab-ab28-2899fdf73258', 'latest', 1, '1'), -('__$GROUPID$__', '77bbd279-7dd7-4736-92f5-82f90fac2ee8', 'latest', 1, '1'), -('__$GROUPID$__', '3b84dd2b-df6d-408d-a4f7-9762a89c42bb', 'latest', 1, '1'), -('__$GROUPID$__', 'a85416c7-4029-45c8-92ce-d88a166916d0', 'latest', 1, '1'), -('__$GROUPID$__', '75df1740-4ca0-4df8-b1a9-0fd04f2254ad', 'latest', 1, '1'), -('__$GROUPID$__', '88afa6ab-4b9c-4d24-9a86-699b77ffe73d', 'latest', 1, '1'), -('__$GROUPID$__', 'b13548f6-07b3-4b07-8820-b5447ed5091b', 'latest', 1, '1'), -('__$GROUPID$__', '8422958b-a5cf-470f-98de-ac91fae6fdd9', 'latest', 1, '1'), -('__$GROUPID$__', '113e792e-04b2-42a4-87fe-b16b1ff9bb53', 'latest', 1, '1'), -('__$GROUPID$__', '2588c235-ef02-49a2-8e54-51202fe06fc3', 'latest', 1, '1'), -('__$GROUPID$__', 'd709b79e-f9b8-4be4-8ba3-f7c0c4694739', 'latest', 1, '1'), -('__$GROUPID$__', '04b9ffea-c56f-4a1c-a5e5-c23de43180cd', 'latest', 1, '1'), -('__$GROUPID$__', '2fd6c130-5dea-44a1-896d-13d38fa1566c', 'latest', 1, '1'), -('__$GROUPID$__', 'f43da9d8-fa9d-438f-828f-eef30013a535', 'latest', 1, '1'), -('__$GROUPID$__', '9e27b29d-8915-4ce1-ab42-9da31e0178a2', 'latest', 1, '1'), -('__$GROUPID$__', '9d6e5808-2d29-48a7-b66c-6bfc258dcb42', 'latest', 1, '1'), -('__$GROUPID$__', '86b581dc-461c-4f9b-8d5d-709b663945a0', 'latest', 1, '1'), -('__$GROUPID$__', 'f4e5dbbb-f66f-4fe1-8701-6a610c9be0e2', 'latest', 1, '1'), -('__$GROUPID$__', 'c8e41763-7ca6-4494-997e-3c21864242f1', 'latest', 1, '1'), -('__$GROUPID$__', 'a0b22394-92f1-48a8-8a3a-1ded50b56970', 'latest', 1, '1'), -('__$GROUPID$__', 'ee18638d-0f21-45c9-93b5-5514f6980f4a', 'latest', 1, '1'), -('__$GROUPID$__', '18068888-539d-4a1f-a0e9-c7deebf56dd6', 'latest', 1, '1'), -('__$GROUPID$__', '24ab448c-d6ad-4ff9-bf46-fb5bbcb9798d', 'latest', 1, '1'), -('__$GROUPID$__', '5ad09d3b-85af-4e79-a4a7-d28ed0cb0d29', 'latest', 1, '1'), -('__$GROUPID$__', '05ee1758-f3e7-4f7d-aece-3b10ca5e0ffe', 'latest', 1, '1'), -('__$GROUPID$__', '7b5294b8-bf8a-4150-a921-24646fee4f34', 'latest', 1, '1'), -('__$GROUPID$__', 'a811ae24-a83c-4631-a8dd-941fdea60d01', 'latest', 1, '1'), -('__$GROUPID$__', 'e526e3cd-cca2-4947-9841-6968d2ed3300', 'latest', 1, '1'), -('__$GROUPID$__', 'c70b3c46-dc79-4821-bfb4-983eb28685bb', 'latest', 1, '1'), -('__$GROUPID$__', '598586ff-15f1-4189-9996-4161e222e374', 'latest', 1, '1'), -('__$GROUPID$__', 'd794379f-dce4-4b0a-b062-a5f8e25ba042', 'latest', 1, '1'), -('__$GROUPID$__', '83ec179f-d4e3-4349-b66f-996d0cb65e06', 'latest', 1, '1'), -('__$GROUPID$__', '2184e968-6a6c-4cef-a6b9-570eb6eb8185', 'latest', 1, '1'), -('__$GROUPID$__', '19d95d3b-bf73-4f29-ac68-4a17f3df4b21', 'latest', 1, '1'), -('__$GROUPID$__', 'ab102a84-ef30-4911-9a3d-205ee56fa49a', 'latest', 1, '1'), -('__$GROUPID$__', '22425650-4cb3-4cf5-b03f-306d59dfc8c1', 'latest', 1, '1'), -('__$GROUPID$__', 'c99dca40-5b82-4587-9bbf-1b4fedcbfcf6', 'latest', 1, '1'), -('__$GROUPID$__', '71105d8e-de22-4a70-bf2d-93832ded65a0', 'latest', 1, '1'), -('__$GROUPID$__', '447cf3d3-7ec1-4995-b7d2-d8848a379679', 'latest', 1, '1'), -('__$GROUPID$__', '4f3d3e80-b3c4-4510-b5ba-707b3882bad5', 'latest', 1, '1'); -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', '16322efd-dc01-4623-83c3-3b0e788f5fbe', 'latest', 1, '1'), -('__$GROUPID$__', 'f8330776-6f78-46c8-85b4-8bde8b194028', 'latest', 1, '1'), -('__$GROUPID$__', '80131f7c-13cd-4cfe-8328-11c2dd1a78a3', 'latest', 1, '1'), -('__$GROUPID$__', '9e223165-c60e-455a-93df-573a06c07da3', 'latest', 1, '1'), -('__$GROUPID$__', '077fa7c0-e945-449a-a5cf-b92a313f72d0', 'latest', 1, '1'), -('__$GROUPID$__', '27026ab9-9bf2-42d3-80cf-497c4c96c2f6', 'latest', 1, '1'), -('__$GROUPID$__', '3340f891-68f6-4dd9-b8e1-1b096aaa4afa', 'latest', 1, '1'), -('__$GROUPID$__', '24de0cf5-3ff5-4597-8940-39f5e13bbcf8', 'latest', 1, '1'), -('__$GROUPID$__', '941ca3c5-e2ea-49dd-8b5d-8444d8b4568a', 'latest', 1, '1'), -('__$GROUPID$__', '77c2bc59-808e-4bc5-a0ac-f180c6fc90fd', 'latest', 1, '1'), -('__$GROUPID$__', 'db92cfbb-7e8a-419a-b14c-2b60067fef7a', 'latest', 1, '1'), -('__$GROUPID$__', '2d45f83e-d4f8-4fa9-b354-a01b81c102a8', 'latest', 1, '1'), -('__$GROUPID$__', 'ef61e535-ccf8-471d-b3ce-ab932ca3665d', 'latest', 1, '1'), -('__$GROUPID$__', '77d2a999-e99e-4999-9acc-8c62625dcca3', 'latest', 1, '1'), -('__$GROUPID$__', '719c99e4-aaa3-426a-bdc7-d1c59f8666fe', 'latest', 1, '1'), -('__$GROUPID$__', '204aab35-2026-4b9d-9a7e-26cb7497e8f3', 'latest', 1, '1'), -('__$GROUPID$__', '586a7f50-e9e8-4cf6-98c3-581a944a4afc', 'latest', 1, '1'), -('__$GROUPID$__', '4aad4d18-053d-4029-ad53-0340534084e4', 'latest', 1, '1'), -('__$GROUPID$__', '5b0fc7ca-c310-478f-a9d9-0a46aa3891af', 'latest', 1, '1'), -('__$GROUPID$__', 'd45033f9-388f-4494-9d76-ba5a15f55edf', 'latest', 1, '1'), -('__$GROUPID$__', '72fd1590-c3ca-4d65-9f4d-f9f49d01d87c', 'latest', 1, '1'), -('__$GROUPID$__', 'd7853a99-cf25-4e70-a712-8851a80fbcd5', 'latest', 1, '1'), -('__$GROUPID$__', 'c634960c-a54b-4b87-b526-ae50af8557da', 'latest', 1, '1'), -('__$GROUPID$__', 'b447ecee-c344-4459-a4da-0762f1f30821', 'latest', 1, '1'), -('__$GROUPID$__', '90ed63b3-99e1-467a-a837-645d36b50046', 'latest', 1, '1'), -('__$GROUPID$__', '24eed08c-8dd9-4d85-bc05-54563389691a', 'latest', 1, '1'), -('__$GROUPID$__', '7da4582e-0bdc-4bd4-8781-b39dec270230', 'latest', 1, '1'), -('__$GROUPID$__', 'e439ed22-0431-40c7-91e7-8e090ef4bb98', 'latest', 1, '1'), -('__$GROUPID$__', '6cd0c235-9f63-4bf7-9a77-8028fca4c25a', 'latest', 1, '1'), -('__$GROUPID$__', '8616f09d-74e7-40c2-8b81-354150da10b9', 'latest', 1, '1'), -('__$GROUPID$__', '1e8a5915-1cb5-47ec-9103-2dbff5de1532', 'latest', 1, '1'), -('__$GROUPID$__', 'ff9119a5-e3be-4dc6-9c4f-ce687a4b140b', 'latest', 1, '1'), -('__$GROUPID$__', '6075ae11-e3c3-4d80-9b54-ff1675db24e8', 'latest', 1, '1'), -('__$GROUPID$__', 'e07819af-8c4b-4a54-8057-e3dda614701f', 'latest', 1, '1'), -('__$GROUPID$__', 'a961d14b-312c-4dcb-8ba8-77bc2a223842', 'latest', 1, '1'), -('__$GROUPID$__', 'a01311e5-da64-43ea-8411-e204960ee733', 'latest', 1, '1'), -('__$GROUPID$__', 'd1d6a3a8-fb5d-4319-a9cb-0d71e7f8892a', 'latest', 1, '1'), -('__$GROUPID$__', '9cc3a6e5-9370-4974-9569-1e00fa0a244b', 'latest', 1, '1'), -('__$GROUPID$__', 'c4d10a58-a9bc-42d8-b47c-762544f0fe35', 'latest', 1, '1'), -('__$GROUPID$__', '9d0705ff-07bb-41ad-bf13-d4e5d48d1207', 'latest', 1, '1'), -('__$GROUPID$__', 'd0d1da04-c04d-47d6-9b7e-d1624b06cb7b', 'latest', 1, '1'), -('__$GROUPID$__', '5be20615-fd38-4052-a94a-70dd784a4379', 'latest', 1, '1'), -('__$GROUPID$__', '0f6be926-82db-4610-a0b7-30c6f2a77bb0', 'latest', 1, '1'), -('__$GROUPID$__', '8e673fb0-f997-4c6d-94dc-b3f82e073c51', 'latest', 1, '1'), -('__$GROUPID$__', '2fdf5cf7-4de0-4d5a-82d6-97de9b1b760a', 'latest', 1, '1'), -('__$GROUPID$__', 'c34c72e8-01bd-49c2-8a6e-91d8c20ee2b6', 'latest', 1, '1'), -('__$GROUPID$__', '547949ac-d500-45aa-8925-95cb52168586', 'latest', 1, '1'), -('__$GROUPID$__', '9967b1a3-1f2c-45bd-bdaf-1db688ff7339', 'latest', 1, '1'); -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', '4ae7a2a4-871f-4376-a01c-b01fe1a0d0cf', 'latest', 1, '1'), -('__$GROUPID$__', '9b57629d-82e7-42cb-93a3-dda886906659', 'latest', 1, '1'), -('__$GROUPID$__', '0cbd3a7f-6bd7-466e-b9ec-1ac834199bbd', 'latest', 1, '1'), -('__$GROUPID$__', 'e90e1871-0714-4f6d-bf74-d509ad035d1f', 'latest', 1, '1'), -('__$GROUPID$__', '83da34d4-edbd-43e7-9517-e43e42ddac8b', 'latest', 1, '1'), -('__$GROUPID$__', '23827d08-064a-4d69-b2da-12d49510117e', 'latest', 1, '1'), -('__$GROUPID$__', 'f6af2e80-1a6d-4909-b45d-5f5909119238', 'latest', 1, '1'), -('__$GROUPID$__', '02e786e5-35b6-4338-b48d-ac11fae37955', 'latest', 1, '1'), -('__$GROUPID$__', '56b4328f-ac9e-499d-9859-1dee456afbbf', 'latest', 1, '1'), -('__$GROUPID$__', 'fe9fcd6c-7314-46a7-9148-72058ee6b82d', 'latest', 1, '1'), -('__$GROUPID$__', 'f134965c-ecdb-49a4-a212-6f29c264c45f', 'latest', 1, '1'), -('__$GROUPID$__', '49a66ac3-c7fd-4166-8410-b2566dc95d18', 'latest', 1, '1'), -('__$GROUPID$__', 'c634f49e-e79b-4b3b-b773-cb87518d76d8', 'latest', 1, '1'), -('__$GROUPID$__', 'a738fa66-aaf8-4f8c-b7d7-9a23b5ab4587', 'latest', 1, '1'), -('__$GROUPID$__', '958df3ee-2473-48da-aa70-9a3cbb5ca6e0', 'latest', 1, '1'), -('__$GROUPID$__', '5bcc53b8-9cea-4180-8548-a90996e68c4d', 'latest', 1, '1'), -('__$GROUPID$__', '2af91908-e8bb-40e2-90c1-e3a0bc7fac5d', 'latest', 1, '1'), -('__$GROUPID$__', '823fb554-6653-4174-9318-88507e7d08ad', 'latest', 1, '1'), -('__$GROUPID$__', 'd2b39feb-4896-4ed6-bdc5-0432dde0386b', 'latest', 1, '1'), -('__$GROUPID$__', 'f1dfb32d-69e0-4910-8780-e8740ad25a5f', 'latest', 1, '1'), -('__$GROUPID$__', '56122bb1-908d-43dd-af7c-bd5f7706f8bc', 'latest', 1, '1'), -('__$GROUPID$__', '99f38e82-d6ae-4705-897c-aa34ba56ba63', 'latest', 1, '1'), -('__$GROUPID$__', 'e02a2327-e8b2-4aa1-9d2c-44f27209fe53', 'latest', 1, '1'), -('__$GROUPID$__', '66d233ef-8eca-45e3-9af4-a51bdfc0a3c8', 'latest', 1, '1'), -('__$GROUPID$__', 'e59225ed-e028-4c06-a24e-bf588a1179ea', 'latest', 1, '1'), -('__$GROUPID$__', 'a8925cb5-6ce8-4482-a811-9b788ca84e2f', 'latest', 1, '1'), -('__$GROUPID$__', 'e5e052d7-66c8-431f-9fd2-d739465a316c', 'latest', 1, '1'), -('__$GROUPID$__', 'af4b2c8f-3bd3-4e8f-9da5-bc82c5b050ad', 'latest', 1, '1'), -('__$GROUPID$__', 'e5bb5eff-e749-4b1a-9c0a-1f15cee0749b', 'latest', 1, '1'), -('__$GROUPID$__', 'c4a5b9da-e4eb-4e74-98ed-8b6db63cbe4f', 'latest', 1, '1'), -('__$GROUPID$__', '43c7fd6c-7883-4eae-a664-52a23acd5c5d', 'latest', 1, '1'), -('__$GROUPID$__', '968f91ee-eaf5-427f-a5b1-ae9004df7cbf', 'latest', 1, '1'), -('__$GROUPID$__', '02fc72a9-8e32-4b23-b164-7262e054f6cf', 'latest', 1, '1'), -('__$GROUPID$__', '95c0a40b-e84c-4020-b70f-9ae681666e42', 'latest', 1, '1'), -('__$GROUPID$__', '7de98b38-9500-4ab0-b27b-27a75e936a3f', 'latest', 1, '1'), -('__$GROUPID$__', 'd0c88133-ac6f-4b2a-8ee5-d2dab8baccc8', 'latest', 1, '1'), -('__$GROUPID$__', 'b6588a0d-1b30-4758-96f7-c338d5446c7c', 'latest', 1, '1'), -('__$GROUPID$__', '55cc0204-38c2-4da8-99a2-5aa51a36bceb', 'latest', 1, '1'), -('__$GROUPID$__', 'bce90e91-57be-4bc6-8faa-15255fe0da4d', 'latest', 1, '1'), -('__$GROUPID$__', '5c765eb0-b17c-49a9-8b92-fbaca7e48669', 'latest', 1, '1'), -('__$GROUPID$__', 'ef9a81f7-0f69-4201-a4cd-05c8bddbc3d1', 'latest', 1, '1'), -('__$GROUPID$__', '00ac4c41-2bd9-49a5-bdbf-271d4c5d4e34', 'latest', 1, '1'), -('__$GROUPID$__', '3dc15ced-182d-42a7-9e1f-b81c3d33c918', 'latest', 1, '1'), -('__$GROUPID$__', '8de01028-3692-488a-9794-d0bdfe5ada27', 'latest', 1, '1'), -('__$GROUPID$__', '4c5d587c-9f31-47a4-ad24-dd63e30c4563', 'latest', 1, '1'), -('__$GROUPID$__', '36c778cb-bee0-44ac-b672-f9c492cfd942', 'latest', 1, '1'), -('__$GROUPID$__', 'bb8923ac-e5e1-4a2b-b168-1c7f47181563', 'latest', 1, '1'), -('__$GROUPID$__', 'fd3a568c-3c9d-400c-8e29-7774f7909a14', 'latest', 1, '1'); -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', '2be332a0-6265-401f-a83a-c79ab27a99d2', 'latest', 1, '1'), -('__$GROUPID$__', '2a8c6e71-a2f0-47e6-b3c7-fdab3a227287', 'latest', 1, '1'), -('__$GROUPID$__', 'd753630c-8b75-44b2-ad7c-99feb67db715', 'latest', 1, '1'), -('__$GROUPID$__', 'f30a27da-d6dd-45f2-b4dd-538567d3b85e', 'latest', 1, '1'), -('__$GROUPID$__', '11346a7f-ada7-408e-8fd6-3093d6de5d2c', 'latest', 1, '1'), -('__$GROUPID$__', '57accdb2-1313-404b-9f44-8ce877279239', 'latest', 1, '1'), -('__$GROUPID$__', 'cec5de79-34f7-4106-887a-87aa16af77b4', 'latest', 1, '1'), -('__$GROUPID$__', 'e3a33739-6820-4d5c-86e3-4252740377f8', 'latest', 1, '1'), -('__$GROUPID$__', '370c0319-c2b2-44a2-93a5-3e6aac080b0f', 'latest', 1, '1'), -('__$GROUPID$__', 'b6c2116e-3089-44fa-ac33-39e499cc1a12', 'latest', 1, '1'), -('__$GROUPID$__', '9e753e6f-f51c-4bc5-9f6b-cc23a6628122', 'latest', 1, '1'), -('__$GROUPID$__', '0a7e511b-0270-47d5-9241-b0f4ec6a144a', 'latest', 1, '1'), -('__$GROUPID$__', '29c0c3be-daa1-4ca4-86aa-940d260c7b5f', 'latest', 1, '1'), -('__$GROUPID$__', 'eb1a7349-2a33-4376-9a23-d39ca42cfdef', 'latest', 1, '1'), -('__$GROUPID$__', '12b84858-55b1-4920-8965-1f4965bfd38e', 'latest', 1, '1'), -('__$GROUPID$__', '37cf6598-a78e-40f5-817a-96d36b1680a1', 'latest', 1, '1'), -('__$GROUPID$__', '87d3a3da-62a0-45be-a554-c03118a2adbb', 'latest', 1, '1'), -('__$GROUPID$__', 'd67c7bd1-19ed-40f5-8894-38fbce718963', 'latest', 1, '1'), -('__$GROUPID$__', '33b1caaa-568b-4d41-828e-bda67ba0469b', 'latest', 1, '1'), -('__$GROUPID$__', '8b466e5e-cb0a-458d-8271-a7c231aa826f', 'latest', 1, '1'), -('__$GROUPID$__', '577700b8-522d-4d4a-bb94-ca864be022c0', 'latest', 1, '1'), -('__$GROUPID$__', '88ab211f-a195-41af-81ae-3ee08e54e929', 'latest', 1, '1'), -('__$GROUPID$__', 'da8ce3c4-59c7-4b75-aa4b-71aa08dc9ff8', 'latest', 1, '1'), -('__$GROUPID$__', '2e5cef8a-ca19-41b9-8c85-e89785784f88', 'latest', 1, '1'), -('__$GROUPID$__', '7138819c-9288-453d-914d-d8a1e89c9c70', 'latest', 1, '1'), -('__$GROUPID$__', 'e5065859-6775-4fd8-bb3e-c7fa780b9809', 'latest', 1, '1'), -('__$GROUPID$__', '0c7245e3-0d44-41a8-a0f0-8683a5f125fb', 'latest', 1, '1'), -('__$GROUPID$__', '9879f5dd-4831-4fa0-acd0-1e9fb522b24d', 'latest', 1, '1'), -('__$GROUPID$__', '67c360a3-fe99-4987-9108-e05018d2411f', 'latest', 1, '1'), -('__$GROUPID$__', '05d919b2-f8bb-4bfb-b59a-869600298646', 'latest', 1, '1'), -('__$GROUPID$__', '552cbd11-5eec-4b28-968e-9f881ab59b7e', 'latest', 1, '1'), -('__$GROUPID$__', '6ad37e09-adc8-468a-ae8b-cb6548879fbf', 'latest', 1, '1'), -('__$GROUPID$__', 'a4ce5fd4-1f80-446f-baa0-488ac77491d3', 'latest', 1, '1'), -('__$GROUPID$__', 'b79c6f2a-f3c3-4f9c-a14a-b81f3ac7ecb3', 'latest', 1, '1'), -('__$GROUPID$__', '21b2c953-c97c-45d4-a286-c9eb0f614527', 'latest', 1, '1'), -('__$GROUPID$__', '736c5a83-68dd-4ada-a86a-9dfea24e9335', 'latest', 1, '1'), -('__$GROUPID$__', 'b6b1da2b-07b8-41cb-84a8-7f5e448e00b3', 'latest', 1, '1'), -('__$GROUPID$__', '06b9370c-ffb5-4b34-8df0-b405e5887873', 'latest', 1, '1'), -('__$GROUPID$__', '40cb1ac5-a996-4622-aba4-5a99f72b8737', 'latest', 1, '1'), -('__$GROUPID$__', '4f898405-5192-4998-b7ab-c2704db77313', 'latest', 1, '1'), -('__$GROUPID$__', '7ba27aa5-a219-4db9-b884-b0b75ce33f62', 'latest', 1, '1'), -('__$GROUPID$__', '6c7babaf-7ad1-47a4-8fc2-1c6315285540', 'latest', 1, '1'), -('__$GROUPID$__', '0da00893-eaee-4176-a757-adc33356699e', 'latest', 1, '1'), -('__$GROUPID$__', '9c75be78-fc8b-40a7-8379-8ab9c50d3337', 'latest', 1, '1'), -('__$GROUPID$__', 'cca559e6-6f2f-465a-9019-4308f92242c9', 'latest', 1, '1'), -('__$GROUPID$__', '71162691-728b-4b6b-a26f-64a6b2186477', 'latest', 1, '1'), -('__$GROUPID$__', 'dc9dd4f7-676a-4b2a-b787-7edfcd7255d3', 'latest', 1, '1'), -('__$GROUPID$__', '512c44df-8476-496f-9ff7-2b5d0861df02', 'latest', 1, '1'); -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', '3deb1668-e037-49d9-b9d7-172c26027dd3', 'latest', 1, '1'), -('__$GROUPID$__', '8b1e1e8f-fa75-4d45-a9bb-3248472f8d08', 'latest', 1, '1'), -('__$GROUPID$__', '842789bf-bb27-4768-95a4-86a7d91f71ac', 'latest', 1, '1'), -('__$GROUPID$__', '920ec291-c50c-41d1-8149-bd79ce367df3', 'latest', 1, '1'), -('__$GROUPID$__', '2efc652a-8b0d-4730-8863-b3a93a56e464', 'latest', 1, '1'), -('__$GROUPID$__', 'ff18f86c-e877-4af7-800b-d67fdecfd38c', 'latest', 1, '1'), -('__$GROUPID$__', '9a215999-e7ff-4ccb-9c20-110fc5764cf0', 'latest', 1, '1'), -('__$GROUPID$__', 'cc8af7ec-2f85-4680-9bc9-f46f8874cd6a', 'latest', 1, '1'), -('__$GROUPID$__', 'd0ca9e66-941c-446e-8e4d-d65a6f888a60', 'latest', 1, '1'), -('__$GROUPID$__', '7f17c414-ba3d-4fa4-8414-49c875ec5c9a', 'latest', 1, '1'), -('__$GROUPID$__', '1dfc4f42-7bc6-498c-b82c-5bc184dd11bb', 'latest', 1, '1'), -('__$GROUPID$__', '289dd686-62af-4155-802f-5a3800a33200', 'latest', 1, '1'), -('__$GROUPID$__', '6807ed3c-e0dc-4bc4-9b43-b4a3618bfef6', 'latest', 1, '1'), -('__$GROUPID$__', '22fee339-c79b-48f5-b551-e52ea296231f', 'latest', 1, '1'), -('__$GROUPID$__', '078a2e7a-c36c-4535-8ec9-3a587551453f', 'latest', 1, '1'), -('__$GROUPID$__', 'd68394a2-4b59-4019-874a-a5cb5d31e49a', 'latest', 1, '1'), -('__$GROUPID$__', '042363ea-a60a-4858-8a18-867e062519cd', 'latest', 1, '1'), -('__$GROUPID$__', 'c7a55d61-355f-45e6-a3ee-200f4822f0ff', 'latest', 1, '1'), -('__$GROUPID$__', '87c1561d-a983-4d1f-836f-30b72a8f328b', 'latest', 1, '1'), -('__$GROUPID$__', 'b85e6a29-cff3-4c3f-b2c0-c054902fc897', 'latest', 1, '1'), -('__$GROUPID$__', 'a9986925-e8ad-44a1-a0cb-c856ecebccf8', 'latest', 1, '1'), -('__$GROUPID$__', '39ac9578-e15b-4f4e-aef3-e179626ec255', 'latest', 1, '1'), -('__$GROUPID$__', 'ccaf2415-48b6-4518-9583-83d8bf5882c0', 'latest', 1, '1'), -('__$GROUPID$__', '7916ae8c-b03b-4f0a-a293-f5881ada58cd', 'latest', 1, '1'), -('__$GROUPID$__', 'ab4c08b6-bac1-4ea3-a024-7793c737f010', 'latest', 1, '1'), -('__$GROUPID$__', '5f7e9f59-9597-4b8a-94ec-fa4a1093c95e', 'latest', 1, '1'), -('__$GROUPID$__', '7c4ce466-ab6e-4bd3-b962-6351685c14ed', 'latest', 1, '1'), -('__$GROUPID$__', '3fcdc136-8bed-4fd7-9c0f-7508dd6ce6fc', 'latest', 1, '1'), -('__$GROUPID$__', '360b4cc6-e1fa-40ba-82d1-766c2ac5942d', 'latest', 1, '1'), -('__$GROUPID$__', 'ab4cf38b-5338-420a-834c-f9249e017ad9', 'latest', 1, '1'), -('__$GROUPID$__', '427f6997-c3f2-479e-877a-6e7af0c944c6', 'latest', 1, '1'), -('__$GROUPID$__', '8b7fd5cc-f596-498b-b518-0ecbe6133384', 'latest', 1, '1'), -('__$GROUPID$__', 'caef2174-b0f3-4cd0-afd4-970239ccdb73', 'latest', 1, '1'), -('__$GROUPID$__', '2f02c1ee-bf0d-46e4-a662-9679af1d3125', 'latest', 1, '1'), -('__$GROUPID$__', '55517188-d547-4107-91f6-c7c72e1d4bcd', 'latest', 1, '1'), -('__$GROUPID$__', 'af9b3b9a-7976-444a-9756-ace544ed0db7', 'latest', 1, '1'), -('__$GROUPID$__', 'bfb05c1a-0872-4e46-981b-a7453f3706dd', 'latest', 1, '1'), -('__$GROUPID$__', 'bd8184c9-b38c-4d61-b447-b9d59798370b', 'latest', 1, '1'), -('__$GROUPID$__', '1a7ff5a0-5002-4da9-adab-173f67836fcf', 'latest', 1, '1'), -('__$GROUPID$__', '63b28a80-4101-46be-a07f-7040f382548e', 'latest', 1, '1'), -('__$GROUPID$__', '57f40ab5-11a0-47b3-afae-70bcb59f7cc8', 'latest', 1, '1'), -('__$GROUPID$__', '069d9973-745c-4f22-8bed-ebd0ccc1a60c', 'latest', 1, '1'), -('__$GROUPID$__', 'cf5b7572-4ee2-4dd6-bf33-d361ec839e74', 'latest', 1, '1'), -('__$GROUPID$__', 'd7960706-52c2-4b40-9dc3-19b26b22b286', 'latest', 1, '1'), -('__$GROUPID$__', '43e8233a-c6ab-4117-9622-e223ebe12b88', 'latest', 1, '1'), -('__$GROUPID$__', '7ef854ce-ef87-4eee-a9f5-352dfed0d6ce', 'latest', 1, '1'), -('__$GROUPID$__', 'd1f82907-b385-4cd3-acb6-fec38008a65b', 'latest', 1, '1'), -('__$GROUPID$__', '5bcdf0f0-ef16-4f02-bd57-a15476e24daf', 'latest', 1, '1'); -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', '909db1d2-0255-4410-a2c2-869a5f5f9657', 'latest', 1, '1'), -('__$GROUPID$__', 'e4c835b8-9943-4f76-848c-0825708ca4fd', 'latest', 1, '1'), -('__$GROUPID$__', '95cf2813-a181-42fa-9a80-772e95d15098', 'latest', 1, '1'), -('__$GROUPID$__', 'bb45eac7-3fa6-4ad4-9fc7-6089b3bc3a4b', 'latest', 1, '1'), -('__$GROUPID$__', 'e9c910ef-f4f3-402c-9b25-e643f3e2a8fa', 'latest', 1, '1'), -('__$GROUPID$__', '30414be3-b22a-4e02-a412-39fc2f13efe9', 'latest', 1, '1'), -('__$GROUPID$__', '7d7afb48-c145-4468-b8c1-12f7cc92519d', 'latest', 1, '1'), -('__$GROUPID$__', 'fd46c9b1-bfed-4ea2-aea4-7c480de3d173', 'latest', 1, '1'), -('__$GROUPID$__', '037e4974-1990-4b2a-80e8-bdfbe9e3df43', 'latest', 1, '1'), -('__$GROUPID$__', '988bcf85-2200-4b00-bada-e28eb3bda734', 'latest', 1, '1'), -('__$GROUPID$__', '53411b99-e883-429f-b88c-4bfd0dc914fe', 'latest', 1, '1'), -('__$GROUPID$__', '597eb976-bc6a-4c48-a18c-38ff526b35b7', 'latest', 1, '1'), -('__$GROUPID$__', '7c46197f-8645-476d-95dd-0843079435ac', 'latest', 1, '1'), -('__$GROUPID$__', '65346231-4eff-4ae0-9cfd-a8b4c17a0569', 'latest', 1, '1'), -('__$GROUPID$__', 'c55ff4bd-db20-4e69-a938-e9d0c5ff1600', 'latest', 1, '1'), -('__$GROUPID$__', '910f9b63-e0e6-436a-b6b2-7243162c4757', 'latest', 1, '1'), -('__$GROUPID$__', '3117552f-faca-4507-8e4d-c2a9549df81b', 'latest', 1, '1'), -('__$GROUPID$__', 'aef64371-3e18-401b-a7f9-40b59abefa23', 'latest', 1, '1'), -('__$GROUPID$__', '300f24b2-a3ae-481f-b203-520c0b4f6ac9', 'latest', 1, '1'), -('__$GROUPID$__', 'e8ee49b4-dfd0-4fbf-b85b-ae553691ad6c', 'latest', 1, '1'), -('__$GROUPID$__', '9a0122e7-83f1-42ca-88ac-08cb437af10c', 'latest', 1, '1'), -('__$GROUPID$__', '9882d2b1-9bb6-4f70-ad7c-167b83f4d6dd', 'latest', 1, '1'), -('__$GROUPID$__', 'eaa78f81-543a-4240-bab2-bd7a63c7a15c', 'latest', 1, '1'), -('__$GROUPID$__', '82d624a9-ae0f-42d6-ab5e-f7421e1ff767', 'latest', 1, '1'), -('__$GROUPID$__', 'f8f4c604-fcc2-4cd2-adb8-6bc55c4056d6', 'latest', 1, '1'), -('__$GROUPID$__', '6bc79db0-c7fd-4255-ac49-77d7eb18d44f', 'latest', 1, '1'), -('__$GROUPID$__', '36b2abdf-202b-4ae9-8202-a624f35606f6', 'latest', 1, '1'), -('__$GROUPID$__', '95e7b84b-c0f5-4ac6-ab3a-798ac22fc3fa', 'latest', 1, '1'), -('__$GROUPID$__', '23cb1da9-647a-45e5-8d58-12f4a05c5c64', 'latest', 1, '1'), -('__$GROUPID$__', 'fab1e201-b99b-486f-b5ba-3ddfd85a0a2f', 'latest', 1, '1'), -('__$GROUPID$__', '8a3e2e94-5daa-47de-8e3d-aa5a54d61010', 'latest', 1, '1'), -('__$GROUPID$__', 'f453ff17-e75e-4fa8-95fa-b38b1cc8d34b', 'latest', 1, '1'), -('__$GROUPID$__', '79c97043-811f-4add-9d43-cf06d36cf25b', 'latest', 1, '1'), -('__$GROUPID$__', '3b734219-262b-4343-b14a-4d4ce28239c3', 'latest', 1, '1'), -('__$GROUPID$__', 'ed77f101-ba41-4cf4-a3d0-93ea8049c1ca', 'latest', 1, '1'), -('__$GROUPID$__', '3feea024-8c3f-4e77-9275-4f060a1cd7e6', 'latest', 1, '1'), -('__$GROUPID$__', '45abf0eb-d175-4e68-900d-62420b9dc66a', 'latest', 1, '1'), -('__$GROUPID$__', '65a4454f-8b50-458f-a631-33d79110bc5c', 'latest', 1, '1'), -('__$GROUPID$__', '1584ac6a-cab1-45f9-8fe7-cafacdd20d77', 'latest', 1, '1'), -('__$GROUPID$__', '34119afc-6402-4f65-963b-e22aa5619c64', 'latest', 1, '1'), -('__$GROUPID$__', 'bd4274e1-e1d2-46a1-9326-8191f7dbfaeb', 'latest', 1, '1'), -('__$GROUPID$__', '84017e0c-c0c6-4321-8e6a-ac81a979a092', 'latest', 1, '1'), -('__$GROUPID$__', 'e114fe7c-c529-4ef4-acbc-e3e839400df7', 'latest', 1, '1'), -('__$GROUPID$__', 'd81aa84b-c2ab-41f0-8ad3-0cd7310fcc6d', 'latest', 1, '1'), -('__$GROUPID$__', 'a2a11a7e-3bea-4545-a3ba-8d2d01defaf0', 'latest', 1, '1'), -('__$GROUPID$__', 'fa5addbe-56db-4605-86f0-bd455f2f82c9', 'latest', 1, '1'), -('__$GROUPID$__', '48b79be9-094f-4361-b646-99ecd6b431b5', 'latest', 1, '1'), -('__$GROUPID$__', 'e42b2e1d-6aaa-4345-8286-b387c0959cf6', 'latest', 1, '1'); -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', '46ae31ab-45e8-4110-afef-eb8e0cb3a4dd', 'latest', 1, '1'), -('__$GROUPID$__', '67d7cb7a-e81b-467f-b145-8919cd0adc2b', 'latest', 1, '1'), -('__$GROUPID$__', 'cb1ba872-39c2-4f99-8749-4c4b19cf9140', 'latest', 1, '1'), -('__$GROUPID$__', 'b52544b0-fc49-4d30-a6a2-90c927678927', 'latest', 1, '1'), -('__$GROUPID$__', 'e6fc7cf5-aca0-42f2-bced-2c9b90a677dc', 'latest', 1, '1'), -('__$GROUPID$__', '8d6de020-36e4-4be3-bd8d-752822a6d30a', 'latest', 1, '1'), -('__$GROUPID$__', 'da5a33d8-0c17-4016-a566-4a56a64c5515', 'latest', 1, '1'), -('__$GROUPID$__', 'b8e82dfa-d59f-4a62-862e-2ab74252698c', 'latest', 1, '1'), -('__$GROUPID$__', '6ad4ad04-0f41-4ef9-a87d-73c85b3c7f0e', 'latest', 1, '1'), -('__$GROUPID$__', 'd1dc8d43-32a9-4d4c-92b2-c1af5da7a673', 'latest', 1, '1'), -('__$GROUPID$__', '8f01cc2d-9c5f-4fde-84dd-eb6edcc372a8', 'latest', 1, '1'), -('__$GROUPID$__', '165fea88-cfd4-47cb-a142-4bd4d271e4e0', 'latest', 1, '1'), -('__$GROUPID$__', '78cd74c8-f3ab-4b79-8deb-777e0d46348b', 'latest', 1, '1'), -('__$GROUPID$__', '06e3086d-e2a0-4f37-aa5a-956236e7563f', 'latest', 1, '1'), -('__$GROUPID$__', '1f87caef-caba-4e93-8916-90c3ecb3cfb8', 'latest', 1, '1'), -('__$GROUPID$__', 'f569427a-3e7a-4861-ab8a-994d61d091bb', 'latest', 1, '1'), -('__$GROUPID$__', '009c89fa-931d-4579-b44d-a677c53af318', 'latest', 1, '1'), -('__$GROUPID$__', '3f27c093-14ff-414b-baff-a40446ee3602', 'latest', 1, '1'), -('__$GROUPID$__', 'c904eb58-4947-41eb-bb8d-37392972af32', 'latest', 1, '1'), -('__$GROUPID$__', '624a90e0-3b3c-4719-98d6-dec1a8688486', 'latest', 1, '1'), -('__$GROUPID$__', '0be4c27a-5c0c-43c8-a88f-9413cd30ad0a', 'latest', 1, '1'), -('__$GROUPID$__', '8e4134f0-03fe-46ba-ba0d-eb39b9057971', 'latest', 1, '1'), -('__$GROUPID$__', 'a8ab1caa-2f66-4834-a272-3369916d04a8', 'latest', 1, '1'), -('__$GROUPID$__', 'e0bf3ec2-aab0-44a4-a7ef-e872561bd5d2', 'latest', 1, '1'), -('__$GROUPID$__', '3b1bf2b1-795a-4960-bb51-5bcc4d436791', 'latest', 1, '1'), -('__$GROUPID$__', 'ac5e7426-3502-4abe-a764-1319fedd6f36', 'latest', 1, '1'), -('__$GROUPID$__', '5390fd3e-18a4-4230-b463-e5b218cb4bb0', 'latest', 1, '1'), -('__$GROUPID$__', '84c24328-93c7-4617-954b-5cecff70b124', 'latest', 1, '1'), -('__$GROUPID$__', '18e652f1-4655-49df-a804-d1cfd0ba220d', 'latest', 1, '1'), -('__$GROUPID$__', '600ade99-cb41-410a-8b13-3cfbbb05c1ce', 'latest', 1, '1'), -('__$GROUPID$__', 'ed184d52-95df-4792-b1bf-0b43ba6977fb', 'latest', 1, '1'), -('__$GROUPID$__', 'ee5e2b8b-73f3-487f-85cc-9c4ac7835279', 'latest', 1, '1'), -('__$GROUPID$__', '9de6ff4a-ab7e-4fef-906d-40b78fb04c93', 'latest', 1, '1'), -('__$GROUPID$__', 'f6e8152b-336e-41d5-b6d7-7c2240568c14', 'latest', 1, '1'), -('__$GROUPID$__', 'b25be83a-1c5d-4c60-b3a2-ac5b91095476', 'latest', 1, '1'), -('__$GROUPID$__', 'e31fd8ab-4751-4e0c-9490-6ab116d11b6f', 'latest', 1, '1'), -('__$GROUPID$__', 'dc9e71f1-5a74-4afd-815e-6bdd7ac16c70', 'latest', 1, '1'), -('__$GROUPID$__', 'cc213bcc-bac9-41cd-957e-5d0fb316414f', 'latest', 1, '1'), -('__$GROUPID$__', '1675023a-4a00-4ed6-881e-e4f7a2610c87', 'latest', 1, '1'), -('__$GROUPID$__', 'fa06f738-5837-455a-a97a-8ce66c37790c', 'latest', 1, '1'), -('__$GROUPID$__', '204fc181-ebfb-4852-9fc0-247145e4d9ae', 'latest', 1, '1'), -('__$GROUPID$__', '4800565b-5a70-4807-b5b0-2a58376d5367', 'latest', 1, '1'), -('__$GROUPID$__', 'c7afa961-326b-4eac-9080-1c998676a039', 'latest', 1, '1'), -('__$GROUPID$__', '36b7ba34-3541-42f6-9151-fc4ca28513a1', 'latest', 1, '1'), -('__$GROUPID$__', '0024efc3-c6ed-4075-bfad-3d80c8d5d9f7', 'latest', 1, '1'), -('__$GROUPID$__', '3bd5a40e-aab9-46bf-96c4-87a0a67cd1c3', 'latest', 1, '1'), -('__$GROUPID$__', 'c9f53613-2a8f-4add-bc6a-6223b3450fa5', 'latest', 1, '1'), -('__$GROUPID$__', '68f72a07-7cd4-4ac7-a159-bfccecb23044', 'latest', 1, '1'); -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', '49cba218-00b5-4680-8f6a-dee1fe99201a', 'latest', 1, '1'), -('__$GROUPID$__', 'e0ca8ef6-cfd3-46ca-8976-09343c76c9ea', 'latest', 1, '1'), -('__$GROUPID$__', '65cb2d46-7ea4-4b0d-9bd0-ca26f4dcfa4c', 'latest', 1, '1'), -('__$GROUPID$__', 'fcdcdb71-fb3b-466e-96a1-f6e85d070183', 'latest', 1, '1'), -('__$GROUPID$__', 'acad2b63-a8e0-45d6-8689-b1848b08b096', 'latest', 1, '1'), -('__$GROUPID$__', 'd960f6fb-cd0c-49b3-a17a-278552418e1f', 'latest', 1, '1'), -('__$GROUPID$__', 'a810eccf-6814-46c7-be48-b23dbd17a1c8', 'latest', 1, '1'), -('__$GROUPID$__', '053897e2-6ec3-4ad1-8677-5dc07a691f05', 'latest', 1, '1'), -('__$GROUPID$__', '464b33c4-1b3d-401f-852d-79bd32f20ed9', 'latest', 1, '1'), -('__$GROUPID$__', '761a8b68-0817-4bd9-ae72-0dcf6aac4460', 'latest', 1, '1'), -('__$GROUPID$__', '57c6f958-1df4-4ff3-9505-1f80a58cdd8b', 'latest', 1, '1'), -('__$GROUPID$__', 'f26a2eae-9f1f-4895-a4f2-7f83bb3529ab', 'latest', 1, '1'), -('__$GROUPID$__', '8b7da745-0398-42a6-9c1e-4a484bd98fab', 'latest', 1, '1'), -('__$GROUPID$__', 'e9a4f647-356b-4db5-b570-abe9b098a63a', 'latest', 1, '1'), -('__$GROUPID$__', 'eb30a8f5-506b-4611-ba43-0be606e83b61', 'latest', 1, '1'), -('__$GROUPID$__', '6e35027d-36e9-437e-b585-27ced94c5dbf', 'latest', 1, '1'), -('__$GROUPID$__', 'eff5ce7c-c4a0-4140-8d69-4ab03c026518', 'latest', 1, '1'), -('__$GROUPID$__', 'f94d0264-61fc-41df-9e12-d158a5e48e3e', 'latest', 1, '1'), -('__$GROUPID$__', '20451ebe-04f8-4d16-b6c9-f9b41fd8441c', 'latest', 1, '1'), -('__$GROUPID$__', 'ea2ae8be-aea4-4384-adaf-82800af6d3b6', 'latest', 1, '1'), -('__$GROUPID$__', 'ab24bf8a-c6e1-43e4-b12e-b52d6d0c1c79', 'latest', 1, '1'), -('__$GROUPID$__', 'd4306af5-ee0f-47db-844d-9df361280b9b', 'latest', 1, '1'), -('__$GROUPID$__', 'ef5e1f49-c669-48cb-881b-67caec328c2d', 'latest', 1, '1'), -('__$GROUPID$__', '8866a22d-ab2c-44d6-9bce-e1816de96b7a', 'latest', 1, '1'), -('__$GROUPID$__', '25503ea1-d78f-4f18-b704-d12b82f5690f', 'latest', 1, '1'), -('__$GROUPID$__', '416df12a-c14b-426b-9d7d-a17809165e8d', 'latest', 1, '1'), -('__$GROUPID$__', 'e5df1f32-325d-4f80-8be6-9b8a07b2adfe', 'latest', 1, '1'), -('__$GROUPID$__', 'c9f3fae9-7e08-409e-a2f8-775183336aae', 'latest', 1, '1'), -('__$GROUPID$__', 'ed8df70a-70ad-492c-b086-e1e79fab404a', 'latest', 1, '1'), -('__$GROUPID$__', '36c8cfbc-131d-40f5-8587-6a830508eded', 'latest', 1, '1'), -('__$GROUPID$__', '71f94636-aeaf-4acf-8a97-eb4641eb264c', 'latest', 1, '1'), -('__$GROUPID$__', 'd76d0cf5-b0c5-4ca2-a041-bd5eaefd6903', 'latest', 1, '1'), -('__$GROUPID$__', 'a5a6e1e6-bb70-4191-8eeb-b5f8d0021018', 'latest', 1, '1'), -('__$GROUPID$__', '8cde49ee-8297-47da-a7a2-f66c8cd794aa', 'latest', 1, '1'), -('__$GROUPID$__', '21dad5d1-4b86-4299-acb5-e5173248967d', 'latest', 1, '1'), -('__$GROUPID$__', '3f03126c-63e4-402a-97fc-bf3418bf30da', 'latest', 1, '1'), -('__$GROUPID$__', '3659f9fb-962e-4f12-9a13-7f33ba60de8c', 'latest', 1, '1'), -('__$GROUPID$__', '020bf940-7f99-49d3-8e50-3917cc3975c9', 'latest', 1, '1'), -('__$GROUPID$__', '6ce69a0c-2bef-4aec-8831-86acef1385cc', 'latest', 1, '1'), -('__$GROUPID$__', 'b3dd03f1-c0e0-4383-aeb3-49d93cae318e', 'latest', 1, '1'), -('__$GROUPID$__', '6bafc6d3-94c1-4968-9ce7-0ef24ae8e7e8', 'latest', 1, '1'), -('__$GROUPID$__', '31eebb37-cd87-47b8-b908-83da79243c76', 'latest', 1, '1'), -('__$GROUPID$__', 'c6afa0e3-9b57-43b2-8394-3743bc05eb2e', 'latest', 1, '1'), -('__$GROUPID$__', '42810b4e-db5f-44e6-aac4-0a98054ba081', 'latest', 1, '1'), -('__$GROUPID$__', '6e3cb0a4-3863-4c3a-8d4c-cf1a9b3b8d9a', 'latest', 1, '1'), -('__$GROUPID$__', '2cfe6888-b96b-40b4-ab0e-d2595119abd4', 'latest', 1, '1'), -('__$GROUPID$__', '1a30f891-5ca8-4163-be99-b559c31eb003', 'latest', 1, '1'), -('__$GROUPID$__', '05dd43f3-f565-4027-b62a-cd012209682b', 'latest', 1, '1'); -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', '674e40ab-f478-416d-8016-922b6e086d60', 'latest', 1, '1'), -('__$GROUPID$__', '0d65f0f3-eee4-4e4c-b058-ec219516e4a7', 'latest', 1, '1'), -('__$GROUPID$__', 'cd138cf5-9235-46b9-bd5d-025d876cf55f', 'latest', 1, '1'), -('__$GROUPID$__', '131ceb87-3410-4f59-a4ef-fe4dfaf0d23c', 'latest', 1, '1'), -('__$GROUPID$__', '9f57d6c7-1858-4fed-bec4-95d5484ec54f', 'latest', 1, '1'), -('__$GROUPID$__', '19dbe340-a4d9-44d8-a0d9-6d4eaabbebd5', 'latest', 1, '1'), -('__$GROUPID$__', 'eea9b872-a1a3-4fd3-abb5-da94b0370e9c', 'latest', 1, '1'), -('__$GROUPID$__', '4b74587b-bc1b-4167-bb06-276d78f63990', 'latest', 1, '1'), -('__$GROUPID$__', 'b43396fe-4541-418a-ad80-5f6416354f1e', 'latest', 1, '1'), -('__$GROUPID$__', '5316ac3d-7c9d-413e-a5a2-b94ad1e2ff24', 'latest', 1, '1'), -('__$GROUPID$__', '10bb3578-1edc-43eb-bbc4-e3752f198a3d', 'latest', 1, '1'), -('__$GROUPID$__', '9503a007-34aa-4810-88ab-f9aa033d8c29', 'latest', 1, '1'), -('__$GROUPID$__', '181ea62c-b693-40cd-be3c-a94d2673aff1', 'latest', 1, '1'), -('__$GROUPID$__', 'cdc454ab-182c-46cc-8505-45d6eb89627e', 'latest', 1, '1'), -('__$GROUPID$__', '5ee5b4b4-9d39-41d1-bc08-71840135d87b', 'latest', 1, '1'), -('__$GROUPID$__', 'bd85708c-4317-4362-8bd0-b6170725b641', 'latest', 1, '1'), -('__$GROUPID$__', 'f1c62aa0-c6e8-46a1-9fcc-57371d101e42', 'latest', 1, '1'), -('__$GROUPID$__', 'c2b19f83-3189-4ae8-9d62-b0765837582d', 'latest', 1, '1'), -('__$GROUPID$__', '258a5673-9225-4ac7-9377-1fd903c13553', 'latest', 1, '1'), -('__$GROUPID$__', '90dc979b-f49d-41f1-8983-be16fbd2cd3a', 'latest', 1, '1'), -('__$GROUPID$__', 'ce6960fc-bd26-4483-8a85-79741f098dbb', 'latest', 1, '1'), -('__$GROUPID$__', '08ebd932-cc3f-4c24-bcc0-646461f62909', 'latest', 1, '1'), -('__$GROUPID$__', 'f46a3028-1269-4851-9efe-962dba1b78db', 'latest', 1, '1'), -('__$GROUPID$__', '330606c6-1550-42ec-ab29-9eeab5be83cc', 'latest', 1, '1'), -('__$GROUPID$__', 'bc10c5ee-58a1-41f3-96ec-e2d2317b2522', 'latest', 1, '1'), -('__$GROUPID$__', '9406e0ab-998a-4b22-86cc-8a4ce0a6f9bf', 'latest', 1, '1'), -('__$GROUPID$__', '57d42504-33c7-45cc-81c0-5f5831394e09', 'latest', 1, '1'), -('__$GROUPID$__', 'e3098ebd-f63f-42d7-b675-99f25b1a8ffc', 'latest', 1, '1'), -('__$GROUPID$__', '141c89b7-4934-44f7-b530-bf9cd8138f71', 'latest', 1, '1'), -('__$GROUPID$__', '059d12eb-288d-4ad0-acee-379777fcbfd7', 'latest', 1, '1'), -('__$GROUPID$__', '74ccb58e-1b7f-4595-a532-38bef3ddb867', 'latest', 1, '1'), -('__$GROUPID$__', 'e0e5cbb9-2c1d-4b8a-9308-1fd3dd5e6f8f', 'latest', 1, '1'), -('__$GROUPID$__', 'daca695b-2ddc-4298-8c32-9ce8aae52a98', 'latest', 1, '1'), -('__$GROUPID$__', 'aa0f8662-2f56-4b86-a10d-b075869955f1', 'latest', 1, '1'), -('__$GROUPID$__', '4cd52eb0-eeef-498e-b94c-c8d368178641', 'latest', 1, '1'), -('__$GROUPID$__', '60c71f25-51cc-4f92-9327-2c18be460dc5', 'latest', 1, '1'), -('__$GROUPID$__', '2c16a726-56f7-48b6-b140-e98301b78bc5', 'latest', 1, '1'), -('__$GROUPID$__', '510c0e7a-33ed-4dbc-8a68-7874c58865c0', 'latest', 1, '1'), -('__$GROUPID$__', '5de4f624-99a9-427d-ad26-b8d09cc6ee61', 'latest', 1, '1'), -('__$GROUPID$__', '6c778d41-215b-423c-b7de-40b7ef5392af', 'latest', 1, '1'), -('__$GROUPID$__', '6488b172-25b4-49f9-ac4d-bef62b9a8015', 'latest', 1, '1'), -('__$GROUPID$__', 'd895dda7-a1ad-4afc-b7a7-a1cd1d391591', 'latest', 1, '1'), -('__$GROUPID$__', 'e7957daf-d967-4ca8-bc01-e7e090d53a6f', 'latest', 1, '1'), -('__$GROUPID$__', '2286ca7d-ca2e-4bdc-9d4b-43fc22ee4d76', 'latest', 1, '1'), -('__$GROUPID$__', '71785cb0-cc66-4edb-bb01-48f032d518bc', 'latest', 1, '1'), -('__$GROUPID$__', '43003170-bbe2-4da5-8b91-1495e63ede12', 'latest', 1, '1'), -('__$GROUPID$__', 'c51be266-3e15-4656-b8f6-6f05d855fbf8', 'latest', 1, '1'), -('__$GROUPID$__', 'c63f386a-1e07-4ea4-ae2e-d5b71974d39b', 'latest', 1, '1'); -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', '67db8a70-5ca0-4dca-8a86-21f736a56eab', 'latest', 1, '1'), -('__$GROUPID$__', '2a87f168-443f-4d1a-8728-bfcc4ef5280f', 'latest', 1, '1'), -('__$GROUPID$__', '1fc88195-aeaa-4d68-9a2a-36263e2c9f1e', 'latest', 1, '1'), -('__$GROUPID$__', '20726747-9e30-4162-8018-afad6fc01114', 'latest', 1, '1'), -('__$GROUPID$__', '40abc281-e3ab-4fab-a18e-b146fcde5fc0', 'latest', 1, '1'), -('__$GROUPID$__', '7e46c934-ae1d-43f0-a755-585eb5938558', 'latest', 1, '1'), -('__$GROUPID$__', '4944d506-281b-42d3-83c4-96f1bd30d4cd', 'latest', 1, '1'), -('__$GROUPID$__', '2974714a-88e5-458a-ae69-71343dd8034b', 'latest', 1, '1'), -('__$GROUPID$__', '5800f662-bf2d-49bd-9d17-60452af5ec1f', 'latest', 1, '1'), -('__$GROUPID$__', '22b17e20-d73a-4ba0-8c6d-7a01652f162a', 'latest', 1, '1'), -('__$GROUPID$__', 'ae8d84b2-30b2-4e27-84d8-cf734d13ec22', 'latest', 1, '1'), -('__$GROUPID$__', '362f0d2e-dce8-4351-a090-1d7996d0d17a', 'latest', 1, '1'), -('__$GROUPID$__', '14889d67-2fd4-47e0-b981-b84d154b4926', 'latest', 1, '1'), -('__$GROUPID$__', '1d9965c2-87f0-44a3-bf4a-6bcb639bae24', 'latest', 1, '1'), -('__$GROUPID$__', '795f8f32-7ef7-4f74-b826-a7a50341d0f9', 'latest', 1, '1'), -('__$GROUPID$__', 'a97945a9-6de2-434f-b044-9577add56562', 'latest', 1, '1'), -('__$GROUPID$__', '38d43ab1-e72e-4146-bc4a-614ac0942daf', 'latest', 1, '1'), -('__$GROUPID$__', '4d0fcf9a-c6fb-4b11-a7ea-1d82e9f8d6aa', 'latest', 1, '1'), -('__$GROUPID$__', 'e2634ea3-7445-485c-8b9e-feaa97f632c6', 'latest', 1, '1'), -('__$GROUPID$__', '63b61543-b108-4b4b-bf97-adda3a89d4c4', 'latest', 1, '1'), -('__$GROUPID$__', 'e9b98fb0-3982-4fbf-aafd-1274f73fd664', 'latest', 1, '1'), -('__$GROUPID$__', 'ec476a82-b171-47cd-873f-179f2dffd529', 'latest', 1, '1'), -('__$GROUPID$__', '8e6d0da0-54d3-402b-ace7-2d6b63106d43', 'latest', 1, '1'), -('__$GROUPID$__', '6d241e60-0173-4f0f-b67a-360500d2618d', 'latest', 1, '1'), -('__$GROUPID$__', 'f402a8e5-8fd0-4bed-af70-fe582c73e667', 'latest', 1, '1'), -('__$GROUPID$__', '7d8f4f16-9cdb-4006-afd3-c57b1c71100a', 'latest', 1, '1'), -('__$GROUPID$__', 'cf309260-17ee-441c-83a2-7128d97eaab1', 'latest', 1, '1'), -('__$GROUPID$__', '3c4a1821-c906-4d34-961f-30ba5cc4c47c', 'latest', 1, '1'), -('__$GROUPID$__', '3ac8981d-0338-4289-94b9-3cc2f2c9833f', 'latest', 1, '1'), -('__$GROUPID$__', '0a80ccfa-4f3d-42d4-862f-b7de6c64af33', 'latest', 1, '1'), -('__$GROUPID$__', '76f49bf6-e023-4a2d-b14c-665f5de38d9e', 'latest', 1, '1'), -('__$GROUPID$__', 'f5106e18-8146-4ee7-b216-56ea3b917e36', 'latest', 1, '1'), -('__$GROUPID$__', '3e190e41-4421-4e55-9a10-6767aace72cb', 'latest', 1, '1'), -('__$GROUPID$__', 'eb8ef27e-07a1-4fdf-845c-d8a2bacb755d', 'latest', 1, '1'), -('__$GROUPID$__', 'd0637196-f8bc-4793-a9ed-d659026e032b', 'latest', 1, '1'), -('__$GROUPID$__', '75efbcc6-1923-4ef2-b066-1c588a32d7a2', 'latest', 1, '1'), -('__$GROUPID$__', '6ee0dff9-539c-4762-83ef-a041481c96ab', 'latest', 1, '1'), -('__$GROUPID$__', '6167e5f2-40fb-4d6f-8c43-180105416271', 'latest', 1, '1'), -('__$GROUPID$__', '4a3d295c-bbdb-49d2-b916-df4c23ad4a2e', 'latest', 1, '1'), -('__$GROUPID$__', '654a94c7-e7e1-4285-b65f-161ba77dc7cf', 'latest', 1, '1'), -('__$GROUPID$__', 'abf4b578-39f2-436d-8d26-16d575c66ad6', 'latest', 1, '1'), -('__$GROUPID$__', '9dc008c4-ff39-4212-9187-c564d33a1cb2', 'latest', 1, '1'), -('__$GROUPID$__', '86afdeea-e7ef-44fe-9e32-b88664722a79', 'latest', 1, '1'), -('__$GROUPID$__', 'ac9c6b5f-c3ef-496b-82be-fe0e7431d625', 'latest', 1, '1'), -('__$GROUPID$__', '6e51c733-ce72-4c79-88b2-4ead7b290fef', 'latest', 1, '1'), -('__$GROUPID$__', 'ae0b18d6-f5bd-49c7-9b29-a76a4f2f3802', 'latest', 1, '1'), -('__$GROUPID$__', '5d16fdb3-cf68-4d2a-b00f-7b8bb590e6be', 'latest', 1, '1'), -('__$GROUPID$__', 'e995ffbd-db5c-49f5-b52b-93d00b4a1b20', 'latest', 1, '1'); -INSERT INTO "PUBLIC"."ARTIFACT_BRANCHES" VALUES -('__$GROUPID$__', 'd9bee1fd-7d51-4e95-8204-56d71d963528', 'latest', 1, '1'), -('__$GROUPID$__', 'a4b9cf73-53ec-4410-8cc0-1280aedcf789', 'latest', 1, '1'), -('__$GROUPID$__', '65c2839e-1103-47a7-8609-6f2030e0d9e7', 'latest', 1, '1'), -('__$GROUPID$__', '6c73507e-3ee1-41e8-883a-973f77c529d1', 'latest', 1, '1'), -('__$GROUPID$__', 'c16cdc68-9f9f-4433-a530-c00ab057ce15', 'latest', 1, '1'), -('__$GROUPID$__', '3e100d11-018e-407c-9ac6-26e64b2e19d5', 'latest', 1, '1'), -('__$GROUPID$__', '9dceebc5-dc24-4c38-a398-688521281230', 'latest', 1, '1'), -('__$GROUPID$__', 'b326c0ac-5c51-433c-aad7-b4dd66c3cb3e', 'latest', 1, '1'), -('__$GROUPID$__', 'c7bbf82a-60bf-44d7-a7bc-c2554b83e518', 'latest', 1, '1'), -('__$GROUPID$__', '383f622a-cacc-4fa5-844a-65653d34f489', 'latest', 1, '1'), -('__$GROUPID$__', '5731695d-593c-4476-9ab1-703a603862e0', 'latest', 1, '1'), -('__$GROUPID$__', '12e79754-c7ff-4829-9872-a61ff4c62f79', 'latest', 1, '1'), -('__$GROUPID$__', '306429d7-edec-4564-baf4-5bc00e5eb067', 'latest', 1, '1'), -('__$GROUPID$__', 'f97a9f08-b2e9-4eb0-9ee4-55597f8999de', 'latest', 1, '1'), -('__$GROUPID$__', 'cb01db18-1a4e-4709-9ed3-3ab6c2587ab4', 'latest', 1, '1'), -('__$GROUPID$__', '0c5aa124-28e8-48e7-9e87-b7b5524ddc1d', 'latest', 1, '1'), -('__$GROUPID$__', '96060a38-7b68-4c1d-aed8-0c6a478a2d26', 'latest', 1, '1'), -('__$GROUPID$__', '088a6dc6-d343-498d-bb62-77fc16e61c88', 'latest', 1, '1'), -('__$GROUPID$__', 'd1426fc6-8b95-4662-b73e-0629b5300dd7', 'latest', 1, '1'), -('__$GROUPID$__', 'b8c44c06-57a1-4d86-b0a6-3b118f89046f', 'latest', 1, '1'), -('__$GROUPID$__', '44800472-e6da-4435-a2d6-258bffce5388', 'latest', 1, '1'), -('__$GROUPID$__', 'b8968a2e-6d34-40c8-bd45-6261f8257f88', 'latest', 1, '1'), -('__$GROUPID$__', '8965d553-8850-4fb1-8d43-0aec203f0541', 'latest', 1, '1'), -('__$GROUPID$__', '5576d673-c40d-4fc7-be0c-369159c4918b', 'latest', 1, '1'), -('__$GROUPID$__', 'c6a91d37-9a00-4603-937b-c25f0d0a70dd', 'latest', 1, '1'), -('__$GROUPID$__', '4de3f9b9-55aa-42ba-b12e-33e941a232bf', 'latest', 1, '1'), -('__$GROUPID$__', 'dcb7cb9f-4433-4f05-abe7-168bd5a25ecc', 'latest', 1, '1'), -('__$GROUPID$__', 'a6a0cefe-d75c-4806-b9c7-58421af27f6f', 'latest', 1, '1'), -('__$GROUPID$__', 'e469c877-5f8a-48f2-85ce-6ab0fd46cf77', 'latest', 1, '1'), -('__$GROUPID$__', 'e77ee1e0-2de2-46c5-acc9-24ef5b0bbe78', 'latest', 1, '1'), -('__$GROUPID$__', 'c7e1c922-b056-4ad6-aeca-8583652662f0', 'latest', 1, '1'), -('__$GROUPID$__', 'f151fd72-97c0-46bb-84bd-5aae4e2542aa', 'latest', 1, '1'), -('__$GROUPID$__', 'd65b422e-d7cb-4fe2-8303-e2077ea626b9', 'latest', 1, '1'), -('__$GROUPID$__', 'f4984726-2a40-4937-84c7-dfecab2410ce', 'latest', 1, '1'), -('__$GROUPID$__', '6c9a82bd-dd5b-46e7-98aa-07a8c60f1e21', 'latest', 1, '1'), -('__$GROUPID$__', '5ac98efb-3358-49e4-a67f-4111ebb829ec', 'latest', 1, '1'), -('__$GROUPID$__', 'ce8d14bd-16e1-43aa-95b2-256580472ff4', 'latest', 1, '1'), -('__$GROUPID$__', '70b4bf2b-3505-4d97-afc9-bddc1d99cd38', 'latest', 1, '1'), -('__$GROUPID$__', '3ba1ac4a-8973-43a9-89fc-7927793cd3c3', 'latest', 1, '1'), -('__$GROUPID$__', '87d1c0e6-60b0-44fd-bece-ea163a468bf2', 'latest', 1, '1'); -CREATE INDEX "PUBLIC"."IDX_ARTIFACT_BRANCHES_1" ON "PUBLIC"."ARTIFACT_BRANCHES"("GROUPID" NULLS FIRST, "ARTIFACTID" NULLS FIRST, "BRANCHID" NULLS FIRST, "BRANCHORDER" NULLS FIRST); -ALTER TABLE "PUBLIC"."CONTENT" ADD CONSTRAINT "PUBLIC"."UQ_CONTENT_1" UNIQUE("CONTENTHASH"); -ALTER TABLE "PUBLIC"."VERSIONS" ADD CONSTRAINT "PUBLIC"."UQ_VERSIONS_1" UNIQUE("GROUPID", "ARTIFACTID", "VERSION"); -ALTER TABLE "PUBLIC"."VERSIONS" ADD CONSTRAINT "PUBLIC"."UQ_VERSIONS_2" UNIQUE("GLOBALID", "VERSIONORDER"); -ALTER TABLE "PUBLIC"."CONTENT_REFERENCES" ADD CONSTRAINT "PUBLIC"."FK_CONTENT_REFERENCES_1" FOREIGN KEY("CONTENTID") REFERENCES "PUBLIC"."CONTENT"("CONTENTID") ON DELETE CASCADE NOCHECK; -ALTER TABLE "PUBLIC"."ARTIFACT_BRANCHES" ADD CONSTRAINT "PUBLIC"."FK_ARTIFACT_BRANCHES_1" FOREIGN KEY("GROUPID", "ARTIFACTID") REFERENCES "PUBLIC"."ARTIFACTS"("GROUPID", "ARTIFACTID") ON DELETE CASCADE NOCHECK; -ALTER TABLE "PUBLIC"."VERSION_COMMENTS" ADD CONSTRAINT "PUBLIC"."FK_VERSION_COMMENTS_1" FOREIGN KEY("GLOBALID") REFERENCES "PUBLIC"."VERSIONS"("GLOBALID") ON DELETE CASCADE NOCHECK; -ALTER TABLE "PUBLIC"."ARTIFACT_BRANCHES" ADD CONSTRAINT "PUBLIC"."FK_ARTIFACT_BRANCHES_2" FOREIGN KEY("GROUPID", "ARTIFACTID", "VERSION") REFERENCES "PUBLIC"."VERSIONS"("GROUPID", "ARTIFACTID", "VERSION") ON DELETE CASCADE NOCHECK; -ALTER TABLE "PUBLIC"."GROUP_LABELS" ADD CONSTRAINT "PUBLIC"."FK_GLABELS_1" FOREIGN KEY("GROUPID") REFERENCES "PUBLIC"."GROUPS"("GROUPID") ON DELETE CASCADE NOCHECK; -ALTER TABLE "PUBLIC"."GROUP_RULES" ADD CONSTRAINT "PUBLIC"."FK_GRULES_1" FOREIGN KEY("GROUPID") REFERENCES "PUBLIC"."GROUPS"("GROUPID") ON DELETE CASCADE NOCHECK; -ALTER TABLE "PUBLIC"."ARTIFACT_LABELS" ADD CONSTRAINT "PUBLIC"."FK_ALABELS_1" FOREIGN KEY("GROUPID", "ARTIFACTID") REFERENCES "PUBLIC"."ARTIFACTS"("GROUPID", "ARTIFACTID") ON DELETE CASCADE NOCHECK; -ALTER TABLE "PUBLIC"."VERSIONS" ADD CONSTRAINT "PUBLIC"."FK_VERSIONS_1" FOREIGN KEY("GROUPID", "ARTIFACTID") REFERENCES "PUBLIC"."ARTIFACTS"("GROUPID", "ARTIFACTID") ON DELETE CASCADE NOCHECK; -ALTER TABLE "PUBLIC"."VERSIONS" ADD CONSTRAINT "PUBLIC"."FK_VERSIONS_2" FOREIGN KEY("CONTENTID") REFERENCES "PUBLIC"."CONTENT"("CONTENTID") NOCHECK; -ALTER TABLE "PUBLIC"."VERSION_LABELS" ADD CONSTRAINT "PUBLIC"."FK_VLABELS_1" FOREIGN KEY("GLOBALID") REFERENCES "PUBLIC"."VERSIONS"("GLOBALID") ON DELETE CASCADE NOCHECK; diff --git a/common/src/main/resources/META-INF/openapi.json b/common/src/main/resources/META-INF/openapi.json index 8164518e04..c85f46daa0 100644 --- a/common/src/main/resources/META-INF/openapi.json +++ b/common/src/main/resources/META-INF/openapi.json @@ -1784,15 +1784,32 @@ "tags": [ "Branches" ], + "parameters": [ + { + "name": "offset", + "description": "The number of branches to skip before starting to collect the result set. Defaults to 0.", + "schema": { + "type": "integer" + }, + "in": "query", + "required": false + }, + { + "name": "limit", + "description": "The number of branches to return. Defaults to 20.", + "schema": { + "type": "integer" + }, + "in": "query", + "required": false + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ArtifactBranch" - } + "$ref": "#/components/schemas/BranchSearchResults" } } }, @@ -1805,9 +1822,48 @@ "$ref": "#/components/responses/ServerError" } }, - "operationId": "listArtifactBranches", - "summary": "List artifact branches", - "description": "Returns a list of all branches in the artifact. Each branch is a list of version identifiers,\nordered from the latest (tip of the branch) to the oldest.\n\nThis operation can fail for the following reasons:\n\n* No artifact with this `artifactId` exists (HTTP error `404`)\n* A server error occurred (HTTP error `500`)\n" + "operationId": "listBranches", + "summary": "List branches", + "description": "Returns a list of all branches in the artifact. Each branch is a list of version identifiers,\nordered from the latest (tip of the branch) to the oldest.\n\nThis operation can fail for the following reasons:\n\n* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)\n* A server error occurred (HTTP error `500`)\n" + }, + "post": { + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateBranch" + } + } + }, + "required": true + }, + "tags": [ + "Branches" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BranchMetaData" + } + } + }, + "description": "Branch successfully created." + }, + "404": { + "$ref": "#/components/responses/NotFound" + }, + "409": { + "$ref": "#/components/responses/Conflict" + }, + "500": { + "$ref": "#/components/responses/ServerError" + } + }, + "operationId": "createBranch", + "summary": "Create a new branch", + "description": "Creates a new branch for the artifact. A new branch consists of metadata and a\nlist of versions.\n\nThis operation can fail for the following reasons:\n\n* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)\n* A branch with the given `branchId` already exists (HTTP error `409`)\n* A server error occurred (HTTP error `500`)\n" }, "parameters": [ { @@ -1976,7 +2032,7 @@ ] }, "/groups/{groupId}/artifacts/{artifactId}/branches/{branchId}": { - "summary": "Manage a single artifact branch.", + "summary": "Manage a single branch.", "get": { "tags": [ "Branches" @@ -1986,7 +2042,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ArtifactBranch" + "$ref": "#/components/schemas/BranchMetaData" } } }, @@ -1999,58 +2055,16 @@ "$ref": "#/components/responses/ServerError" } }, - "operationId": "getArtifactBranch", - "summary": "List versions in an artifact branch", - "description": "Returns a list of version identifiers in the artifact branch, ordered from the latest (tip of the branch) to the oldest.\n\nThis operation can fail for the following reasons:\n\n* No group with this `groupId` exists (HTTP error `404`)\n* No artifact with this `artifactId` exists (HTTP error `404`)\n* No branch with this `branchId` exists (HTTP error `404`)\n* A server error occurred (HTTP error `500`)\n" + "operationId": "getBranchMetaData", + "summary": "Get branch metaData", + "description": "Returns the metaData of a branch.\n\nThis operation can fail for the following reasons:\n\n* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)\n* No branch with this `branchId` exists (HTTP error `404`)\n* A server error occurred (HTTP error `500`)\n" }, "put": { "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ArtifactBranch" - } - } - }, - "required": true - }, - "tags": [ - "Branches" - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ArtifactBranch" - } - } - }, - "description": "List of versions in an artifact branch." - }, - "400": { - "$ref": "#/components/responses/BadRequest" - }, - "404": { - "$ref": "#/components/responses/NotFound" - }, - "409": { - "$ref": "#/components/responses/Conflict" - }, - "500": { - "$ref": "#/components/responses/ServerError" - } - }, - "operationId": "createOrReplaceArtifactBranch", - "summary": "Replace the sequence of versions contained in an artifact branch. Branch is created if it does not exist.", - "description": "Replace the sequence of versions contained in an artifact branch. Branch is created if it does not exist. This operation is equivalent to deleting the artifact branch and adding each version in order to a new branch with the same name. This operation can be used to remove one or more versions from the branch. Returns a list of version identifiers in the artifact branch, ordered from the latest (tip of the branch) to the oldest.\nThis operation can fail for the following reasons:\n* No group with this `groupId` exists (HTTP error `404`)\n* No artifact with this `artifactId` exists (HTTP error `404`)\n* Version does not exist (HTTP error `409`)\n* Request contains duplicate versions. Artifact branches are append-only, cycles and history rewrites, except by this operation, are not supported. (HTTP error `409`)\n* A server error occurred (HTTP error `500`)\n" - }, - "post": { - "requestBody": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/Version" + "$ref": "#/components/schemas/EditableBranchMetaData" } } }, @@ -2060,29 +2074,19 @@ "Branches" ], "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ArtifactBranch" - } - } - }, + "204": { "description": "List of versions in an artifact branch." }, "404": { "$ref": "#/components/responses/NotFound" }, - "409": { - "$ref": "#/components/responses/Conflict" - }, "500": { "$ref": "#/components/responses/ServerError" } }, - "operationId": "createOrUpdateArtifactBranch", - "summary": "Add a new version to an artifact branch. Branch is created if it does not exist.", - "description": "Add a new version to an artifact branch. Branch is created if it does not exist. Returns a list of version identifiers in the artifact branch, ordered from the latest (tip of the branch) to the oldest.\nThis operation can fail for the following reasons:\n* No group with this `groupId` exists (HTTP error `404`)\n* No artifact with this `artifactId` exists (HTTP error `404`)\n* No branch with this `branchId` exists (HTTP error `404`)\n* Version does not exist (HTTP error `409`)\n* Branch already contains given version. Artifact branches are append-only, cycles and history rewrites, except by replacing the entire branch using createOrReplaceArtifactBranch operation, are not supported. (HTTP error `409`)\n* A server error occurred \n" + "operationId": "updateBranchMetaData", + "summary": "Update branch metaData", + "description": "Updates the metadata of a branch.\n\nThis operation can fail for the following reasons:\n* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)\n* No branch with this `branchId` exists (HTTP error `404`)\n* A server error occurred (HTTP error `500`)\n" }, "delete": { "tags": [ @@ -2102,9 +2106,9 @@ "$ref": "#/components/responses/ServerError" } }, - "operationId": "deleteArtifactBranch", - "summary": "Delete artifact branch.", - "description": "Deletes a single branch in the artifact. Any artifact versions that are not referenced by a branch are deleted as well, however, this does not happen until deletion of the \"latest\" branch is supported.\nThis operation can fail for the following reasons:\n* No group with this `groupId` exists (HTTP error `404`)\n* No artifact with this `artifactId` exists (HTTP error `404`)\n* No branch with this `branchId` exists (HTTP error `404`)\n* Deletion of the \"latest\" branch is not supported (HTTP error `409`)\n* A server error occurred (HTTP error `500`)\n" + "operationId": "deleteBranch", + "summary": "Delete branch.", + "description": "Deletes a single branch in the artifact.\n\nThis operation can fail for the following reasons:\n* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)\n* No branch with this `branchId` exists (HTTP error `404`)\n* A server error occurred (HTTP error `500`)\n" }, "parameters": [ { @@ -2980,6 +2984,160 @@ "description": "Returns a paginated list of all versions that match the posted content.\n\nThis operation can fail for the following reasons:\n\n* Provided content (request body) was empty (HTTP error `400`)\n* A server error occurred (HTTP error `500`)\n" } }, + "/groups/{groupId}/artifacts/{artifactId}/branches/{branchId}/versions": { + "summary": "Manage the versions in a branch.", + "get": { + "tags": [ + "Branches" + ], + "parameters": [ + { + "name": "offset", + "description": "The number of versions to skip before starting to collect the result set. Defaults to 0.", + "schema": { + "type": "integer" + }, + "in": "query", + "required": false + }, + { + "name": "limit", + "description": "The number of versions to return. Defaults to 20.", + "schema": { + "type": "integer" + }, + "in": "query", + "required": false + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VersionSearchResults" + } + } + }, + "description": "The list of versions in the branch." + }, + "404": { + "$ref": "#/components/responses/NotFound" + }, + "500": { + "$ref": "#/components/responses/ServerError" + } + }, + "operationId": "listBranchVersions", + "summary": "Get versions in branch", + "description": "Get a list of all versions in the branch. Returns a list of version identifiers in the branch, \nordered from the latest (tip of the branch) to the oldest.\n\nThis operation can fail for the following reasons:\n* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)\n* No branch with this `branchId` exists (HTTP error `404`)\n* A server error occurred (HTTP error `500`)\n" + }, + "put": { + "requestBody": { + "description": "A new list of versions that should be on the branch.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Version" + } + } + } + }, + "required": true + }, + "tags": [ + "Branches" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Version" + } + } + } + }, + "description": "The list of versions was replaced successfully." + }, + "404": { + "$ref": "#/components/responses/NotFound" + }, + "500": { + "$ref": "#/components/responses/ServerError" + } + }, + "operationId": "replaceBranchVersions", + "summary": "Replace list of versions in branch", + "description": "Add a new version to an artifact branch. Branch is created if it does not exist. Returns a list of version identifiers in the artifact branch, ordered from the latest (tip of the branch) to the oldest.\nThis operation can fail for the following reasons:\n* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)\n* No branch with this `branchId` exists (HTTP error `404`)\n* A server error occurred (HTTP error `500`)\n" + }, + "post": { + "requestBody": { + "description": "The version to add to the branch.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AddVersionToBranch" + } + } + }, + "required": true + }, + "tags": [ + "Branches" + ], + "responses": { + "204": { + "description": "The version was successfully added to the branch." + }, + "404": { + "$ref": "#/components/responses/NotFound" + }, + "409": { + "$ref": "#/components/responses/Conflict" + }, + "500": { + "$ref": "#/components/responses/ServerError" + } + }, + "operationId": "addVersionToBranch", + "summary": "Add a new version to a branch.", + "description": "Add a new version to an artifact branch. Returns a list of version identifiers in the branch, ordered from the latest (tip of the branch) to the oldest.\n\nThis operation can fail for the following reasons:\n* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)\n* No branch with this `branchId` exists (HTTP error `404`)\n* Branch already contains the given version. Artifact branches are append-only, cycles and history rewrites, except by replacing the entire branch using the replaceBranchVersions operation, are not supported. (HTTP error `409`)\n* A server error occurred (HTTP error `500`)\n" + }, + "parameters": [ + { + "name": "groupId", + "description": "The artifact group ID. Must be a string provided by the client, representing the name of the grouping of artifacts. Must follow the \".{1,512}\" pattern.", + "schema": { + "$ref": "#/components/schemas/GroupId" + }, + "in": "path", + "required": true + }, + { + "name": "artifactId", + "description": "The artifact ID. Can be a string (client-provided) or UUID (server-generated), representing the unique artifact identifier. Must follow the \".{1,512}\" pattern.", + "schema": { + "$ref": "#/components/schemas/ArtifactId" + }, + "in": "path", + "required": true + }, + { + "name": "branchId", + "description": "Artifact branch ID. Must follow the \"[a-zA-Z0-9._\\\\-+]{1,256}\" pattern.", + "schema": { + "$ref": "#/components/schemas/BranchId" + }, + "in": "path", + "required": true + } + ] + }, "x-codegen-contextRoot": "/apis/registry/v3" }, "components": { @@ -4033,14 +4191,18 @@ "type": "string", "example": "\"latest\"" }, - "ArtifactBranch": { - "title": "Root Type for ArtifactBranches", + "BranchMetaData": { + "title": "Root Type for BranchMetaData", "description": "", "required": [ "groupId", "artifactId", "branchId", - "versions" + "createdOn", + "modifiedOn", + "modifiedBy", + "owner", + "userDefined" ], "type": "object", "properties": { @@ -4056,61 +4218,40 @@ "$ref": "#/components/schemas/BranchId", "description": "" }, - "versions": { + "createdOn": { + "format": "date-time", + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "modifiedOn": { + "format": "date-time", + "type": "string" + }, + "owner": { "description": "", - "type": "array", - "items": { - "$ref": "#/components/schemas/Version" - } + "type": "string" + }, + "description": { + "description": "", + "type": "string" + }, + "userDefined": { + "description": "", + "type": "boolean" } }, "example": { - "latest": [ - { - "groupId": "default", - "artifactId": "user", - "version": "4" - }, - { - "groupId": "default", - "artifactId": "user", - "version": "3" - }, - { - "groupId": "default", - "artifactId": "user", - "version": "2" - }, - { - "groupId": "default", - "artifactId": "user", - "version": "1" - } - ], - "1.1.x": [ - { - "groupId": "default", - "artifactId": "user", - "version": "3" - }, - { - "groupId": "default", - "artifactId": "user", - "version": "1" - } - ], - "1.2.x": [ - { - "groupId": "default", - "artifactId": "user", - "version": "4" - }, - { - "groupId": "default", - "artifactId": "user", - "version": "2" - } - ] + "groupId": "ExampleGroup", + "artifactId": "ExampleArtifact", + "branchId": "1.0.x", + "description": "Just an example branch.", + "userDefined": true, + "createdOn": "2018-02-10T09:30Z", + "modifiedBy": "user1", + "modifiedOn": "2020-02-10T09:30Z", + "owner": "user2" } }, "UserInterfaceConfig": { @@ -4583,6 +4724,147 @@ "ruleType": "VALIDITY", "config": "FULL" } + }, + "BranchSearchResults": { + "description": "Describes the response received when searching for branches.", + "required": [ + "count", + "branches" + ], + "type": "object", + "properties": { + "branches": { + "description": "The branches returned in the result set.", + "type": "array", + "items": { + "$ref": "#/components/schemas/SearchedBranch" + } + }, + "count": { + "description": "The total number of branches that matched the query that produced the result set (may be \nmore than the number of branches in the result set).", + "type": "integer" + } + } + }, + "SearchedBranch": { + "title": "Root Type for SearchedBranch", + "description": "", + "required": [ + "groupId", + "artifactId", + "branchId", + "createdOn", + "owner", + "modifiedBy", + "modifiedOn", + "userDefined" + ], + "type": "object", + "properties": { + "groupId": { + "$ref": "#/components/schemas/GroupId", + "description": "" + }, + "artifactId": { + "$ref": "#/components/schemas/ArtifactId", + "description": "" + }, + "branchId": { + "$ref": "#/components/schemas/BranchId", + "description": "" + }, + "createdOn": { + "format": "date-time", + "description": "", + "type": "string" + }, + "owner": { + "description": "", + "type": "string" + }, + "modifiedOn": { + "format": "date-time", + "description": "", + "type": "string" + }, + "modifiedBy": { + "description": "", + "type": "string" + }, + "description": { + "description": "", + "type": "string" + }, + "userDefined": { + "description": "", + "type": "boolean" + } + }, + "example": { + "groupId": "ExampleGroup", + "artifactId": "ExampleArtifact", + "branchId": "1.0.x", + "description": "A really nice branch.", + "userDefined": true, + "createdOn": "2018-02-10T09:30Z", + "owner": "user1", + "modifiedOn": "2019-03-11T09:30Z", + "modifiedBy": "user2" + } + }, + "EditableBranchMetaData": { + "title": "Root Type for EditableArtifactMetaData", + "description": "", + "type": "object", + "properties": { + "description": { + "type": "string" + } + }, + "example": { + "description": "The description of the group." + } + }, + "CreateBranch": { + "title": "Root Type for CreateBranch", + "description": "", + "required": [ + "branchId" + ], + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "branchId": { + "$ref": "#/components/schemas/BranchId", + "description": "" + }, + "versions": { + "description": "", + "type": "array", + "items": { + "$ref": "#/components/schemas/Version" + } + } + }, + "example": { + "branchId": "1.0.x", + "description": "The description of the branch." + } + }, + "AddVersionToBranch": { + "description": "", + "required": [ + "version" + ], + "type": "object", + "properties": { + "version": { + "description": "", + "type": "string" + } + } } }, "responses": { @@ -4760,6 +5042,10 @@ { "name": "Groups", "description": "Registry artifacts can be collected together using groups. This section includes all of the primary operations related to groups." + }, + { + "name": "Branches", + "description": "Artifacts can optionally have branches that are just an ordered list of version identifiers." } ], "x-codegen": { diff --git a/common/src/test/java/io/apicurio/registry/model/VersionExpressionParserTest.java b/common/src/test/java/io/apicurio/registry/model/VersionExpressionParserTest.java index 37b28424a5..9eb02b85db 100644 --- a/common/src/test/java/io/apicurio/registry/model/VersionExpressionParserTest.java +++ b/common/src/test/java/io/apicurio/registry/model/VersionExpressionParserTest.java @@ -14,20 +14,20 @@ public class VersionExpressionParserTest { void testVersionExpressionParser() { var ga1 = new GA(null, "artifact1"); - assertEquals(new GAV(ga1, new VersionId("version1")), VersionExpressionParser.parse(ga1, "branch=latest", this::getArtifactBranchTip)); - assertEquals(new GAV(ga1, new VersionId("version2")), VersionExpressionParser.parse(ga1, "branch=1.0.x", this::getArtifactBranchTip)); + assertEquals(new GAV(ga1, new VersionId("version1")), VersionExpressionParser.parse(ga1, "branch=latest", this::getBranchTip)); + assertEquals(new GAV(ga1, new VersionId("version2")), VersionExpressionParser.parse(ga1, "branch=1.0.x", this::getBranchTip)); - assertEquals(new GAV(ga1, new VersionId("version3")), VersionExpressionParser.parse(ga1, "version3", this::getArtifactBranchTip)); + assertEquals(new GAV(ga1, new VersionId("version3")), VersionExpressionParser.parse(ga1, "version3", this::getBranchTip)); - assertThrows(ValidationException.class, () -> VersionExpressionParser.parse(ga1, "branch =1.0.x", this::getArtifactBranchTip)); - assertThrows(ValidationException.class, () -> VersionExpressionParser.parse(ga1, "branch 1.0.x", this::getArtifactBranchTip)); - assertThrows(ValidationException.class, () -> VersionExpressionParser.parse(ga1, "ranch=1.0.x", this::getArtifactBranchTip)); - assertThrows(ValidationException.class, () -> VersionExpressionParser.parse(ga1, "branch=1.0.@", this::getArtifactBranchTip)); - assertThrows(ValidationException.class, () -> VersionExpressionParser.parse(ga1, "branch=", this::getArtifactBranchTip)); + assertThrows(ValidationException.class, () -> VersionExpressionParser.parse(ga1, "branch =1.0.x", this::getBranchTip)); + assertThrows(ValidationException.class, () -> VersionExpressionParser.parse(ga1, "branch 1.0.x", this::getBranchTip)); + assertThrows(ValidationException.class, () -> VersionExpressionParser.parse(ga1, "ranch=1.0.x", this::getBranchTip)); + assertThrows(ValidationException.class, () -> VersionExpressionParser.parse(ga1, "branch=1.0.@", this::getBranchTip)); + assertThrows(ValidationException.class, () -> VersionExpressionParser.parse(ga1, "branch=", this::getBranchTip)); } - private GAV getArtifactBranchTip(GA ga, BranchId branchId) { + private GAV getBranchTip(GA ga, BranchId branchId) { if (BranchId.LATEST.equals(branchId)) { return new GAV(ga, new VersionId("version1")); } diff --git a/go-sdk/pkg/registryclient-v3/groups/item_artifacts_item_branches_item_versions_request_builder.go b/go-sdk/pkg/registryclient-v3/groups/item_artifacts_item_branches_item_versions_request_builder.go new file mode 100644 index 0000000000..c0aab75a7e --- /dev/null +++ b/go-sdk/pkg/registryclient-v3/groups/item_artifacts_item_branches_item_versions_request_builder.go @@ -0,0 +1,168 @@ +package groups + +import ( + "context" + i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71 "github.com/apicurio/apicurio-registry/go-sdk/pkg/registryclient-v3/models" + i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f "github.com/microsoft/kiota-abstractions-go" +) + +// ItemArtifactsItemBranchesItemVersionsRequestBuilder manage the versions in a branch. +type ItemArtifactsItemBranchesItemVersionsRequestBuilder struct { + i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.BaseRequestBuilder +} + +// ItemArtifactsItemBranchesItemVersionsRequestBuilderGetQueryParameters get a list of all versions in the branch. Returns a list of version identifiers in the branch, ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) +type ItemArtifactsItemBranchesItemVersionsRequestBuilderGetQueryParameters struct { + // The number of versions to return. Defaults to 20. + Limit *int32 `uriparametername:"limit"` + // The number of versions to skip before starting to collect the result set. Defaults to 0. + Offset *int32 `uriparametername:"offset"` +} + +// ItemArtifactsItemBranchesItemVersionsRequestBuilderGetRequestConfiguration configuration for the request such as headers, query parameters, and middleware options. +type ItemArtifactsItemBranchesItemVersionsRequestBuilderGetRequestConfiguration struct { + // Request headers + Headers *i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestHeaders + // Request options + Options []i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestOption + // Request query parameters + QueryParameters *ItemArtifactsItemBranchesItemVersionsRequestBuilderGetQueryParameters +} + +// ItemArtifactsItemBranchesItemVersionsRequestBuilderPostRequestConfiguration configuration for the request such as headers, query parameters, and middleware options. +type ItemArtifactsItemBranchesItemVersionsRequestBuilderPostRequestConfiguration struct { + // Request headers + Headers *i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestHeaders + // Request options + Options []i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestOption +} + +// ItemArtifactsItemBranchesItemVersionsRequestBuilderPutRequestConfiguration configuration for the request such as headers, query parameters, and middleware options. +type ItemArtifactsItemBranchesItemVersionsRequestBuilderPutRequestConfiguration struct { + // Request headers + Headers *i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestHeaders + // Request options + Options []i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestOption +} + +// NewItemArtifactsItemBranchesItemVersionsRequestBuilderInternal instantiates a new VersionsRequestBuilder and sets the default values. +func NewItemArtifactsItemBranchesItemVersionsRequestBuilderInternal(pathParameters map[string]string, requestAdapter i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestAdapter) *ItemArtifactsItemBranchesItemVersionsRequestBuilder { + m := &ItemArtifactsItemBranchesItemVersionsRequestBuilder{ + BaseRequestBuilder: *i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.NewBaseRequestBuilder(requestAdapter, "{+baseurl}/groups/{groupId}/artifacts/{artifactId}/branches/{branchId}/versions{?offset*,limit*}", pathParameters), + } + return m +} + +// NewItemArtifactsItemBranchesItemVersionsRequestBuilder instantiates a new VersionsRequestBuilder and sets the default values. +func NewItemArtifactsItemBranchesItemVersionsRequestBuilder(rawUrl string, requestAdapter i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestAdapter) *ItemArtifactsItemBranchesItemVersionsRequestBuilder { + urlParams := make(map[string]string) + urlParams["request-raw-url"] = rawUrl + return NewItemArtifactsItemBranchesItemVersionsRequestBuilderInternal(urlParams, requestAdapter) +} + +// Get get a list of all versions in the branch. Returns a list of version identifiers in the branch, ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) +func (m *ItemArtifactsItemBranchesItemVersionsRequestBuilder) Get(ctx context.Context, requestConfiguration *ItemArtifactsItemBranchesItemVersionsRequestBuilderGetRequestConfiguration) (i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.VersionSearchResultsable, error) { + requestInfo, err := m.ToGetRequestInformation(ctx, requestConfiguration) + if err != nil { + return nil, err + } + errorMapping := i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.ErrorMappings{ + "404": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, + "500": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, + } + res, err := m.BaseRequestBuilder.RequestAdapter.Send(ctx, requestInfo, i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateVersionSearchResultsFromDiscriminatorValue, errorMapping) + if err != nil { + return nil, err + } + if res == nil { + return nil, nil + } + return res.(i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.VersionSearchResultsable), nil +} + +// Post add a new version to an artifact branch. Returns a list of version identifiers in the branch, ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* Branch already contains the given version. Artifact branches are append-only, cycles and history rewrites, except by replacing the entire branch using the replaceBranchVersions operation, are not supported. (HTTP error `409`)* A server error occurred (HTTP error `500`) +func (m *ItemArtifactsItemBranchesItemVersionsRequestBuilder) Post(ctx context.Context, body i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.AddVersionToBranchable, requestConfiguration *ItemArtifactsItemBranchesItemVersionsRequestBuilderPostRequestConfiguration) error { + requestInfo, err := m.ToPostRequestInformation(ctx, body, requestConfiguration) + if err != nil { + return err + } + errorMapping := i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.ErrorMappings{ + "404": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, + "409": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, + "500": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, + } + err = m.BaseRequestBuilder.RequestAdapter.SendNoContent(ctx, requestInfo, errorMapping) + if err != nil { + return err + } + return nil +} + +// Put add a new version to an artifact branch. Branch is created if it does not exist. Returns a list of version identifiers in the artifact branch, ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) +func (m *ItemArtifactsItemBranchesItemVersionsRequestBuilder) Put(ctx context.Context, body []string, requestConfiguration *ItemArtifactsItemBranchesItemVersionsRequestBuilderPutRequestConfiguration) ([]string, error) { + requestInfo, err := m.ToPutRequestInformation(ctx, body, requestConfiguration) + if err != nil { + return nil, err + } + errorMapping := i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.ErrorMappings{ + "404": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, + "500": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, + } + res, err := m.BaseRequestBuilder.RequestAdapter.SendPrimitiveCollection(ctx, requestInfo, "string", errorMapping) + if err != nil { + return nil, err + } + val := make([]string, len(res)) + for i, v := range res { + if v != nil { + val[i] = *(v.(*string)) + } + } + return val, nil +} + +// ToGetRequestInformation get a list of all versions in the branch. Returns a list of version identifiers in the branch, ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) +func (m *ItemArtifactsItemBranchesItemVersionsRequestBuilder) ToGetRequestInformation(ctx context.Context, requestConfiguration *ItemArtifactsItemBranchesItemVersionsRequestBuilderGetRequestConfiguration) (*i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestInformation, error) { + requestInfo := i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.NewRequestInformationWithMethodAndUrlTemplateAndPathParameters(i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.GET, m.BaseRequestBuilder.UrlTemplate, m.BaseRequestBuilder.PathParameters) + if requestConfiguration != nil { + if requestConfiguration.QueryParameters != nil { + requestInfo.AddQueryParameters(*(requestConfiguration.QueryParameters)) + } + requestInfo.Headers.AddAll(requestConfiguration.Headers) + requestInfo.AddRequestOptions(requestConfiguration.Options) + } + requestInfo.Headers.TryAdd("Accept", "application/json") + return requestInfo, nil +} + +// ToPostRequestInformation add a new version to an artifact branch. Returns a list of version identifiers in the branch, ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* Branch already contains the given version. Artifact branches are append-only, cycles and history rewrites, except by replacing the entire branch using the replaceBranchVersions operation, are not supported. (HTTP error `409`)* A server error occurred (HTTP error `500`) +func (m *ItemArtifactsItemBranchesItemVersionsRequestBuilder) ToPostRequestInformation(ctx context.Context, body i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.AddVersionToBranchable, requestConfiguration *ItemArtifactsItemBranchesItemVersionsRequestBuilderPostRequestConfiguration) (*i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestInformation, error) { + requestInfo := i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.NewRequestInformationWithMethodAndUrlTemplateAndPathParameters(i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.POST, m.BaseRequestBuilder.UrlTemplate, m.BaseRequestBuilder.PathParameters) + if requestConfiguration != nil { + requestInfo.Headers.AddAll(requestConfiguration.Headers) + requestInfo.AddRequestOptions(requestConfiguration.Options) + } + requestInfo.Headers.TryAdd("Accept", "application/json") + err := requestInfo.SetContentFromParsable(ctx, m.BaseRequestBuilder.RequestAdapter, "application/json", body) + if err != nil { + return nil, err + } + return requestInfo, nil +} + +// ToPutRequestInformation add a new version to an artifact branch. Branch is created if it does not exist. Returns a list of version identifiers in the artifact branch, ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) +func (m *ItemArtifactsItemBranchesItemVersionsRequestBuilder) ToPutRequestInformation(ctx context.Context, body []string, requestConfiguration *ItemArtifactsItemBranchesItemVersionsRequestBuilderPutRequestConfiguration) (*i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestInformation, error) { + requestInfo := i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.NewRequestInformationWithMethodAndUrlTemplateAndPathParameters(i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.PUT, m.BaseRequestBuilder.UrlTemplate, m.BaseRequestBuilder.PathParameters) + if requestConfiguration != nil { + requestInfo.Headers.AddAll(requestConfiguration.Headers) + requestInfo.AddRequestOptions(requestConfiguration.Options) + } + requestInfo.Headers.TryAdd("Accept", "application/json") + requestInfo.SetContentFromScalarCollection(ctx, m.BaseRequestBuilder.RequestAdapter, "application/json", body) + return requestInfo, nil +} + +// WithUrl returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored. +func (m *ItemArtifactsItemBranchesItemVersionsRequestBuilder) WithUrl(rawUrl string) *ItemArtifactsItemBranchesItemVersionsRequestBuilder { + return NewItemArtifactsItemBranchesItemVersionsRequestBuilder(rawUrl, m.BaseRequestBuilder.RequestAdapter) +} diff --git a/go-sdk/pkg/registryclient-v3/groups/item_artifacts_item_branches_request_builder.go b/go-sdk/pkg/registryclient-v3/groups/item_artifacts_item_branches_request_builder.go index 504eb70863..3a595747e7 100644 --- a/go-sdk/pkg/registryclient-v3/groups/item_artifacts_item_branches_request_builder.go +++ b/go-sdk/pkg/registryclient-v3/groups/item_artifacts_item_branches_request_builder.go @@ -11,15 +11,33 @@ type ItemArtifactsItemBranchesRequestBuilder struct { i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.BaseRequestBuilder } +// ItemArtifactsItemBranchesRequestBuilderGetQueryParameters returns a list of all branches in the artifact. Each branch is a list of version identifiers,ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) +type ItemArtifactsItemBranchesRequestBuilderGetQueryParameters struct { + // The number of branches to return. Defaults to 20. + Limit *int32 `uriparametername:"limit"` + // The number of branches to skip before starting to collect the result set. Defaults to 0. + Offset *int32 `uriparametername:"offset"` +} + // ItemArtifactsItemBranchesRequestBuilderGetRequestConfiguration configuration for the request such as headers, query parameters, and middleware options. type ItemArtifactsItemBranchesRequestBuilderGetRequestConfiguration struct { // Request headers Headers *i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestHeaders // Request options Options []i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestOption + // Request query parameters + QueryParameters *ItemArtifactsItemBranchesRequestBuilderGetQueryParameters } -// ByBranchId manage a single artifact branch. +// ItemArtifactsItemBranchesRequestBuilderPostRequestConfiguration configuration for the request such as headers, query parameters, and middleware options. +type ItemArtifactsItemBranchesRequestBuilderPostRequestConfiguration struct { + // Request headers + Headers *i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestHeaders + // Request options + Options []i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestOption +} + +// ByBranchId manage a single branch. func (m *ItemArtifactsItemBranchesRequestBuilder) ByBranchId(branchId string) *ItemArtifactsItemBranchesWithBranchItemRequestBuilder { urlTplParams := make(map[string]string) for idx, item := range m.BaseRequestBuilder.PathParameters { @@ -34,7 +52,7 @@ func (m *ItemArtifactsItemBranchesRequestBuilder) ByBranchId(branchId string) *I // NewItemArtifactsItemBranchesRequestBuilderInternal instantiates a new BranchesRequestBuilder and sets the default values. func NewItemArtifactsItemBranchesRequestBuilderInternal(pathParameters map[string]string, requestAdapter i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestAdapter) *ItemArtifactsItemBranchesRequestBuilder { m := &ItemArtifactsItemBranchesRequestBuilder{ - BaseRequestBuilder: *i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.NewBaseRequestBuilder(requestAdapter, "{+baseurl}/groups/{groupId}/artifacts/{artifactId}/branches", pathParameters), + BaseRequestBuilder: *i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.NewBaseRequestBuilder(requestAdapter, "{+baseurl}/groups/{groupId}/artifacts/{artifactId}/branches{?offset*,limit*}", pathParameters), } return m } @@ -46,8 +64,8 @@ func NewItemArtifactsItemBranchesRequestBuilder(rawUrl string, requestAdapter i2 return NewItemArtifactsItemBranchesRequestBuilderInternal(urlParams, requestAdapter) } -// Get returns a list of all branches in the artifact. Each branch is a list of version identifiers,ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No artifact with this `artifactId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) -func (m *ItemArtifactsItemBranchesRequestBuilder) Get(ctx context.Context, requestConfiguration *ItemArtifactsItemBranchesRequestBuilderGetRequestConfiguration) ([]i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.ArtifactBranchable, error) { +// Get returns a list of all branches in the artifact. Each branch is a list of version identifiers,ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) +func (m *ItemArtifactsItemBranchesRequestBuilder) Get(ctx context.Context, requestConfiguration *ItemArtifactsItemBranchesRequestBuilderGetRequestConfiguration) (i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.BranchSearchResultsable, error) { requestInfo, err := m.ToGetRequestInformation(ctx, requestConfiguration) if err != nil { return nil, err @@ -56,23 +74,44 @@ func (m *ItemArtifactsItemBranchesRequestBuilder) Get(ctx context.Context, reque "404": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, "500": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, } - res, err := m.BaseRequestBuilder.RequestAdapter.SendCollection(ctx, requestInfo, i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateArtifactBranchFromDiscriminatorValue, errorMapping) + res, err := m.BaseRequestBuilder.RequestAdapter.Send(ctx, requestInfo, i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateBranchSearchResultsFromDiscriminatorValue, errorMapping) if err != nil { return nil, err } - val := make([]i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.ArtifactBranchable, len(res)) - for i, v := range res { - if v != nil { - val[i] = v.(i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.ArtifactBranchable) - } + if res == nil { + return nil, nil + } + return res.(i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.BranchSearchResultsable), nil +} + +// Post creates a new branch for the artifact. A new branch consists of metadata and alist of versions.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* A branch with the given `branchId` already exists (HTTP error `409`)* A server error occurred (HTTP error `500`) +func (m *ItemArtifactsItemBranchesRequestBuilder) Post(ctx context.Context, body i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateBranchable, requestConfiguration *ItemArtifactsItemBranchesRequestBuilderPostRequestConfiguration) (i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.BranchMetaDataable, error) { + requestInfo, err := m.ToPostRequestInformation(ctx, body, requestConfiguration) + if err != nil { + return nil, err + } + errorMapping := i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.ErrorMappings{ + "404": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, + "409": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, + "500": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, + } + res, err := m.BaseRequestBuilder.RequestAdapter.Send(ctx, requestInfo, i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateBranchMetaDataFromDiscriminatorValue, errorMapping) + if err != nil { + return nil, err + } + if res == nil { + return nil, nil } - return val, nil + return res.(i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.BranchMetaDataable), nil } -// ToGetRequestInformation returns a list of all branches in the artifact. Each branch is a list of version identifiers,ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No artifact with this `artifactId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) +// ToGetRequestInformation returns a list of all branches in the artifact. Each branch is a list of version identifiers,ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) func (m *ItemArtifactsItemBranchesRequestBuilder) ToGetRequestInformation(ctx context.Context, requestConfiguration *ItemArtifactsItemBranchesRequestBuilderGetRequestConfiguration) (*i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestInformation, error) { requestInfo := i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.NewRequestInformationWithMethodAndUrlTemplateAndPathParameters(i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.GET, m.BaseRequestBuilder.UrlTemplate, m.BaseRequestBuilder.PathParameters) if requestConfiguration != nil { + if requestConfiguration.QueryParameters != nil { + requestInfo.AddQueryParameters(*(requestConfiguration.QueryParameters)) + } requestInfo.Headers.AddAll(requestConfiguration.Headers) requestInfo.AddRequestOptions(requestConfiguration.Options) } @@ -80,6 +119,21 @@ func (m *ItemArtifactsItemBranchesRequestBuilder) ToGetRequestInformation(ctx co return requestInfo, nil } +// ToPostRequestInformation creates a new branch for the artifact. A new branch consists of metadata and alist of versions.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* A branch with the given `branchId` already exists (HTTP error `409`)* A server error occurred (HTTP error `500`) +func (m *ItemArtifactsItemBranchesRequestBuilder) ToPostRequestInformation(ctx context.Context, body i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateBranchable, requestConfiguration *ItemArtifactsItemBranchesRequestBuilderPostRequestConfiguration) (*i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestInformation, error) { + requestInfo := i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.NewRequestInformationWithMethodAndUrlTemplateAndPathParameters(i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.POST, m.BaseRequestBuilder.UrlTemplate, m.BaseRequestBuilder.PathParameters) + if requestConfiguration != nil { + requestInfo.Headers.AddAll(requestConfiguration.Headers) + requestInfo.AddRequestOptions(requestConfiguration.Options) + } + requestInfo.Headers.TryAdd("Accept", "application/json") + err := requestInfo.SetContentFromParsable(ctx, m.BaseRequestBuilder.RequestAdapter, "application/json", body) + if err != nil { + return nil, err + } + return requestInfo, nil +} + // WithUrl returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored. func (m *ItemArtifactsItemBranchesRequestBuilder) WithUrl(rawUrl string) *ItemArtifactsItemBranchesRequestBuilder { return NewItemArtifactsItemBranchesRequestBuilder(rawUrl, m.BaseRequestBuilder.RequestAdapter) diff --git a/go-sdk/pkg/registryclient-v3/groups/item_artifacts_item_branches_with_branch_item_request_builder.go b/go-sdk/pkg/registryclient-v3/groups/item_artifacts_item_branches_with_branch_item_request_builder.go index ccce9e0baf..7b3d57146f 100644 --- a/go-sdk/pkg/registryclient-v3/groups/item_artifacts_item_branches_with_branch_item_request_builder.go +++ b/go-sdk/pkg/registryclient-v3/groups/item_artifacts_item_branches_with_branch_item_request_builder.go @@ -6,7 +6,7 @@ import ( i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f "github.com/microsoft/kiota-abstractions-go" ) -// ItemArtifactsItemBranchesWithBranchItemRequestBuilder manage a single artifact branch. +// ItemArtifactsItemBranchesWithBranchItemRequestBuilder manage a single branch. type ItemArtifactsItemBranchesWithBranchItemRequestBuilder struct { i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.BaseRequestBuilder } @@ -27,14 +27,6 @@ type ItemArtifactsItemBranchesWithBranchItemRequestBuilderGetRequestConfiguratio Options []i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestOption } -// ItemArtifactsItemBranchesWithBranchItemRequestBuilderPostRequestConfiguration configuration for the request such as headers, query parameters, and middleware options. -type ItemArtifactsItemBranchesWithBranchItemRequestBuilderPostRequestConfiguration struct { - // Request headers - Headers *i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestHeaders - // Request options - Options []i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestOption -} - // ItemArtifactsItemBranchesWithBranchItemRequestBuilderPutRequestConfiguration configuration for the request such as headers, query parameters, and middleware options. type ItemArtifactsItemBranchesWithBranchItemRequestBuilderPutRequestConfiguration struct { // Request headers @@ -58,7 +50,7 @@ func NewItemArtifactsItemBranchesWithBranchItemRequestBuilder(rawUrl string, req return NewItemArtifactsItemBranchesWithBranchItemRequestBuilderInternal(urlParams, requestAdapter) } -// Delete deletes a single branch in the artifact. Any artifact versions that are not referenced by a branch are deleted as well, however, this does not happen until deletion of the "latest" branch is supported.This operation can fail for the following reasons:* No group with this `groupId` exists (HTTP error `404`)* No artifact with this `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* Deletion of the "latest" branch is not supported (HTTP error `409`)* A server error occurred (HTTP error `500`) +// Delete deletes a single branch in the artifact.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) func (m *ItemArtifactsItemBranchesWithBranchItemRequestBuilder) Delete(ctx context.Context, requestConfiguration *ItemArtifactsItemBranchesWithBranchItemRequestBuilderDeleteRequestConfiguration) error { requestInfo, err := m.ToDeleteRequestInformation(ctx, requestConfiguration) if err != nil { @@ -76,8 +68,8 @@ func (m *ItemArtifactsItemBranchesWithBranchItemRequestBuilder) Delete(ctx conte return nil } -// Get returns a list of version identifiers in the artifact branch, ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No group with this `groupId` exists (HTTP error `404`)* No artifact with this `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) -func (m *ItemArtifactsItemBranchesWithBranchItemRequestBuilder) Get(ctx context.Context, requestConfiguration *ItemArtifactsItemBranchesWithBranchItemRequestBuilderGetRequestConfiguration) (i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.ArtifactBranchable, error) { +// Get returns the metaData of a branch.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) +func (m *ItemArtifactsItemBranchesWithBranchItemRequestBuilder) Get(ctx context.Context, requestConfiguration *ItemArtifactsItemBranchesWithBranchItemRequestBuilderGetRequestConfiguration) (i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.BranchMetaDataable, error) { requestInfo, err := m.ToGetRequestInformation(ctx, requestConfiguration) if err != nil { return nil, err @@ -86,60 +78,34 @@ func (m *ItemArtifactsItemBranchesWithBranchItemRequestBuilder) Get(ctx context. "404": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, "500": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, } - res, err := m.BaseRequestBuilder.RequestAdapter.Send(ctx, requestInfo, i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateArtifactBranchFromDiscriminatorValue, errorMapping) - if err != nil { - return nil, err - } - if res == nil { - return nil, nil - } - return res.(i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.ArtifactBranchable), nil -} - -// Post add a new version to an artifact branch. Branch is created if it does not exist. Returns a list of version identifiers in the artifact branch, ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No group with this `groupId` exists (HTTP error `404`)* No artifact with this `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* Version does not exist (HTTP error `409`)* Branch already contains given version. Artifact branches are append-only, cycles and history rewrites, except by replacing the entire branch using createOrReplaceArtifactBranch operation, are not supported. (HTTP error `409`)* A server error occurred -func (m *ItemArtifactsItemBranchesWithBranchItemRequestBuilder) Post(ctx context.Context, body *string, requestConfiguration *ItemArtifactsItemBranchesWithBranchItemRequestBuilderPostRequestConfiguration) (i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.ArtifactBranchable, error) { - requestInfo, err := m.ToPostRequestInformation(ctx, body, requestConfiguration) - if err != nil { - return nil, err - } - errorMapping := i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.ErrorMappings{ - "404": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, - "409": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, - "500": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, - } - res, err := m.BaseRequestBuilder.RequestAdapter.Send(ctx, requestInfo, i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateArtifactBranchFromDiscriminatorValue, errorMapping) + res, err := m.BaseRequestBuilder.RequestAdapter.Send(ctx, requestInfo, i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateBranchMetaDataFromDiscriminatorValue, errorMapping) if err != nil { return nil, err } if res == nil { return nil, nil } - return res.(i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.ArtifactBranchable), nil + return res.(i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.BranchMetaDataable), nil } -// Put replace the sequence of versions contained in an artifact branch. Branch is created if it does not exist. This operation is equivalent to deleting the artifact branch and adding each version in order to a new branch with the same name. This operation can be used to remove one or more versions from the branch. Returns a list of version identifiers in the artifact branch, ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No group with this `groupId` exists (HTTP error `404`)* No artifact with this `artifactId` exists (HTTP error `404`)* Version does not exist (HTTP error `409`)* Request contains duplicate versions. Artifact branches are append-only, cycles and history rewrites, except by this operation, are not supported. (HTTP error `409`)* A server error occurred (HTTP error `500`) -func (m *ItemArtifactsItemBranchesWithBranchItemRequestBuilder) Put(ctx context.Context, body i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.ArtifactBranchable, requestConfiguration *ItemArtifactsItemBranchesWithBranchItemRequestBuilderPutRequestConfiguration) (i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.ArtifactBranchable, error) { +// Put updates the metadata of a branch.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) +func (m *ItemArtifactsItemBranchesWithBranchItemRequestBuilder) Put(ctx context.Context, body i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.EditableBranchMetaDataable, requestConfiguration *ItemArtifactsItemBranchesWithBranchItemRequestBuilderPutRequestConfiguration) error { requestInfo, err := m.ToPutRequestInformation(ctx, body, requestConfiguration) if err != nil { - return nil, err + return err } errorMapping := i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.ErrorMappings{ - "400": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, "404": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, - "409": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, "500": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, } - res, err := m.BaseRequestBuilder.RequestAdapter.Send(ctx, requestInfo, i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateArtifactBranchFromDiscriminatorValue, errorMapping) + err = m.BaseRequestBuilder.RequestAdapter.SendNoContent(ctx, requestInfo, errorMapping) if err != nil { - return nil, err - } - if res == nil { - return nil, nil + return err } - return res.(i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.ArtifactBranchable), nil + return nil } -// ToDeleteRequestInformation deletes a single branch in the artifact. Any artifact versions that are not referenced by a branch are deleted as well, however, this does not happen until deletion of the "latest" branch is supported.This operation can fail for the following reasons:* No group with this `groupId` exists (HTTP error `404`)* No artifact with this `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* Deletion of the "latest" branch is not supported (HTTP error `409`)* A server error occurred (HTTP error `500`) +// ToDeleteRequestInformation deletes a single branch in the artifact.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) func (m *ItemArtifactsItemBranchesWithBranchItemRequestBuilder) ToDeleteRequestInformation(ctx context.Context, requestConfiguration *ItemArtifactsItemBranchesWithBranchItemRequestBuilderDeleteRequestConfiguration) (*i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestInformation, error) { requestInfo := i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.NewRequestInformationWithMethodAndUrlTemplateAndPathParameters(i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.DELETE, m.BaseRequestBuilder.UrlTemplate, m.BaseRequestBuilder.PathParameters) if requestConfiguration != nil { @@ -150,7 +116,7 @@ func (m *ItemArtifactsItemBranchesWithBranchItemRequestBuilder) ToDeleteRequestI return requestInfo, nil } -// ToGetRequestInformation returns a list of version identifiers in the artifact branch, ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No group with this `groupId` exists (HTTP error `404`)* No artifact with this `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) +// ToGetRequestInformation returns the metaData of a branch.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) func (m *ItemArtifactsItemBranchesWithBranchItemRequestBuilder) ToGetRequestInformation(ctx context.Context, requestConfiguration *ItemArtifactsItemBranchesWithBranchItemRequestBuilderGetRequestConfiguration) (*i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestInformation, error) { requestInfo := i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.NewRequestInformationWithMethodAndUrlTemplateAndPathParameters(i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.GET, m.BaseRequestBuilder.UrlTemplate, m.BaseRequestBuilder.PathParameters) if requestConfiguration != nil { @@ -161,20 +127,8 @@ func (m *ItemArtifactsItemBranchesWithBranchItemRequestBuilder) ToGetRequestInfo return requestInfo, nil } -// ToPostRequestInformation add a new version to an artifact branch. Branch is created if it does not exist. Returns a list of version identifiers in the artifact branch, ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No group with this `groupId` exists (HTTP error `404`)* No artifact with this `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* Version does not exist (HTTP error `409`)* Branch already contains given version. Artifact branches are append-only, cycles and history rewrites, except by replacing the entire branch using createOrReplaceArtifactBranch operation, are not supported. (HTTP error `409`)* A server error occurred -func (m *ItemArtifactsItemBranchesWithBranchItemRequestBuilder) ToPostRequestInformation(ctx context.Context, body *string, requestConfiguration *ItemArtifactsItemBranchesWithBranchItemRequestBuilderPostRequestConfiguration) (*i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestInformation, error) { - requestInfo := i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.NewRequestInformationWithMethodAndUrlTemplateAndPathParameters(i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.POST, m.BaseRequestBuilder.UrlTemplate, m.BaseRequestBuilder.PathParameters) - if requestConfiguration != nil { - requestInfo.Headers.AddAll(requestConfiguration.Headers) - requestInfo.AddRequestOptions(requestConfiguration.Options) - } - requestInfo.Headers.TryAdd("Accept", "application/json") - requestInfo.SetContentFromScalar(ctx, m.BaseRequestBuilder.RequestAdapter, "text/plain", body) - return requestInfo, nil -} - -// ToPutRequestInformation replace the sequence of versions contained in an artifact branch. Branch is created if it does not exist. This operation is equivalent to deleting the artifact branch and adding each version in order to a new branch with the same name. This operation can be used to remove one or more versions from the branch. Returns a list of version identifiers in the artifact branch, ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No group with this `groupId` exists (HTTP error `404`)* No artifact with this `artifactId` exists (HTTP error `404`)* Version does not exist (HTTP error `409`)* Request contains duplicate versions. Artifact branches are append-only, cycles and history rewrites, except by this operation, are not supported. (HTTP error `409`)* A server error occurred (HTTP error `500`) -func (m *ItemArtifactsItemBranchesWithBranchItemRequestBuilder) ToPutRequestInformation(ctx context.Context, body i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.ArtifactBranchable, requestConfiguration *ItemArtifactsItemBranchesWithBranchItemRequestBuilderPutRequestConfiguration) (*i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestInformation, error) { +// ToPutRequestInformation updates the metadata of a branch.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) +func (m *ItemArtifactsItemBranchesWithBranchItemRequestBuilder) ToPutRequestInformation(ctx context.Context, body i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.EditableBranchMetaDataable, requestConfiguration *ItemArtifactsItemBranchesWithBranchItemRequestBuilderPutRequestConfiguration) (*i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestInformation, error) { requestInfo := i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.NewRequestInformationWithMethodAndUrlTemplateAndPathParameters(i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.PUT, m.BaseRequestBuilder.UrlTemplate, m.BaseRequestBuilder.PathParameters) if requestConfiguration != nil { requestInfo.Headers.AddAll(requestConfiguration.Headers) @@ -188,6 +142,11 @@ func (m *ItemArtifactsItemBranchesWithBranchItemRequestBuilder) ToPutRequestInfo return requestInfo, nil } +// Versions manage the versions in a branch. +func (m *ItemArtifactsItemBranchesWithBranchItemRequestBuilder) Versions() *ItemArtifactsItemBranchesItemVersionsRequestBuilder { + return NewItemArtifactsItemBranchesItemVersionsRequestBuilderInternal(m.BaseRequestBuilder.PathParameters, m.BaseRequestBuilder.RequestAdapter) +} + // WithUrl returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored. func (m *ItemArtifactsItemBranchesWithBranchItemRequestBuilder) WithUrl(rawUrl string) *ItemArtifactsItemBranchesWithBranchItemRequestBuilder { return NewItemArtifactsItemBranchesWithBranchItemRequestBuilder(rawUrl, m.BaseRequestBuilder.RequestAdapter) diff --git a/go-sdk/pkg/registryclient-v3/kiota-lock.json b/go-sdk/pkg/registryclient-v3/kiota-lock.json index f16956629a..2c0117fc9f 100644 --- a/go-sdk/pkg/registryclient-v3/kiota-lock.json +++ b/go-sdk/pkg/registryclient-v3/kiota-lock.json @@ -1,5 +1,5 @@ { - "descriptionHash": "2F5569A402B1BCBBCDDD48A4593575AE573E7A2FB9428D0B57EBB9860B3B2D1E19ABDD56637B25EB05F9C214012CAA9A1861224200FB9FDEA3275BB16801E6FD", + "descriptionHash": "42439AFF83C21EDECF676DFDD248144EF5307FE92011DD89799DDA4BF2880592398FC34275D0990B3D9DEED38D6A6872549DED2FDBC42C1BF4A0F154D7C82AE3", "descriptionLocation": "../../v3.json", "lockFileVersion": "1.0.0", "kiotaVersion": "1.10.1", diff --git a/go-sdk/pkg/registryclient-v3/models/add_version_to_branch.go b/go-sdk/pkg/registryclient-v3/models/add_version_to_branch.go new file mode 100644 index 0000000000..a88a36d6eb --- /dev/null +++ b/go-sdk/pkg/registryclient-v3/models/add_version_to_branch.go @@ -0,0 +1,86 @@ +package models + +import ( + i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91 "github.com/microsoft/kiota-abstractions-go/serialization" +) + +// AddVersionToBranch +type AddVersionToBranch struct { + // Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. + additionalData map[string]any + // The version property + version *string +} + +// NewAddVersionToBranch instantiates a new AddVersionToBranch and sets the default values. +func NewAddVersionToBranch() *AddVersionToBranch { + m := &AddVersionToBranch{} + m.SetAdditionalData(make(map[string]any)) + return m +} + +// CreateAddVersionToBranchFromDiscriminatorValue creates a new instance of the appropriate class based on discriminator value +func CreateAddVersionToBranchFromDiscriminatorValue(parseNode i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) (i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.Parsable, error) { + return NewAddVersionToBranch(), nil +} + +// GetAdditionalData gets the AdditionalData property value. Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. +func (m *AddVersionToBranch) GetAdditionalData() map[string]any { + return m.additionalData +} + +// GetFieldDeserializers the deserialization information for the current model +func (m *AddVersionToBranch) GetFieldDeserializers() map[string]func(i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + res := make(map[string]func(i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error) + res["version"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetStringValue() + if err != nil { + return err + } + if val != nil { + m.SetVersion(val) + } + return nil + } + return res +} + +// GetVersion gets the version property value. The version property +func (m *AddVersionToBranch) GetVersion() *string { + return m.version +} + +// Serialize serializes information the current object +func (m *AddVersionToBranch) Serialize(writer i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.SerializationWriter) error { + { + err := writer.WriteStringValue("version", m.GetVersion()) + if err != nil { + return err + } + } + { + err := writer.WriteAdditionalData(m.GetAdditionalData()) + if err != nil { + return err + } + } + return nil +} + +// SetAdditionalData sets the AdditionalData property value. Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. +func (m *AddVersionToBranch) SetAdditionalData(value map[string]any) { + m.additionalData = value +} + +// SetVersion sets the version property value. The version property +func (m *AddVersionToBranch) SetVersion(value *string) { + m.version = value +} + +// AddVersionToBranchable +type AddVersionToBranchable interface { + i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.AdditionalDataHolder + i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.Parsable + GetVersion() *string + SetVersion(value *string) +} diff --git a/go-sdk/pkg/registryclient-v3/models/branch_meta_data.go b/go-sdk/pkg/registryclient-v3/models/branch_meta_data.go new file mode 100644 index 0000000000..3fcd206fc8 --- /dev/null +++ b/go-sdk/pkg/registryclient-v3/models/branch_meta_data.go @@ -0,0 +1,327 @@ +package models + +import ( + i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91 "github.com/microsoft/kiota-abstractions-go/serialization" + i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e "time" +) + +// BranchMetaData +type BranchMetaData struct { + // Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. + additionalData map[string]any + // The ID of a single artifact. + artifactId *string + // The ID of a single artifact branch. + branchId *string + // The createdOn property + createdOn *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time + // The description property + description *string + // An ID of a single artifact group. + groupId *string + // The modifiedBy property + modifiedBy *string + // The modifiedOn property + modifiedOn *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time + // The owner property + owner *string + // The userDefined property + userDefined *bool +} + +// NewBranchMetaData instantiates a new BranchMetaData and sets the default values. +func NewBranchMetaData() *BranchMetaData { + m := &BranchMetaData{} + m.SetAdditionalData(make(map[string]any)) + return m +} + +// CreateBranchMetaDataFromDiscriminatorValue creates a new instance of the appropriate class based on discriminator value +func CreateBranchMetaDataFromDiscriminatorValue(parseNode i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) (i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.Parsable, error) { + return NewBranchMetaData(), nil +} + +// GetAdditionalData gets the AdditionalData property value. Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. +func (m *BranchMetaData) GetAdditionalData() map[string]any { + return m.additionalData +} + +// GetArtifactId gets the artifactId property value. The ID of a single artifact. +func (m *BranchMetaData) GetArtifactId() *string { + return m.artifactId +} + +// GetBranchId gets the branchId property value. The ID of a single artifact branch. +func (m *BranchMetaData) GetBranchId() *string { + return m.branchId +} + +// GetCreatedOn gets the createdOn property value. The createdOn property +func (m *BranchMetaData) GetCreatedOn() *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time { + return m.createdOn +} + +// GetDescription gets the description property value. The description property +func (m *BranchMetaData) GetDescription() *string { + return m.description +} + +// GetFieldDeserializers the deserialization information for the current model +func (m *BranchMetaData) GetFieldDeserializers() map[string]func(i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + res := make(map[string]func(i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error) + res["artifactId"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetStringValue() + if err != nil { + return err + } + if val != nil { + m.SetArtifactId(val) + } + return nil + } + res["branchId"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetStringValue() + if err != nil { + return err + } + if val != nil { + m.SetBranchId(val) + } + return nil + } + res["createdOn"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetTimeValue() + if err != nil { + return err + } + if val != nil { + m.SetCreatedOn(val) + } + return nil + } + res["description"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetStringValue() + if err != nil { + return err + } + if val != nil { + m.SetDescription(val) + } + return nil + } + res["groupId"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetStringValue() + if err != nil { + return err + } + if val != nil { + m.SetGroupId(val) + } + return nil + } + res["modifiedBy"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetStringValue() + if err != nil { + return err + } + if val != nil { + m.SetModifiedBy(val) + } + return nil + } + res["modifiedOn"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetTimeValue() + if err != nil { + return err + } + if val != nil { + m.SetModifiedOn(val) + } + return nil + } + res["owner"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetStringValue() + if err != nil { + return err + } + if val != nil { + m.SetOwner(val) + } + return nil + } + res["userDefined"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetBoolValue() + if err != nil { + return err + } + if val != nil { + m.SetUserDefined(val) + } + return nil + } + return res +} + +// GetGroupId gets the groupId property value. An ID of a single artifact group. +func (m *BranchMetaData) GetGroupId() *string { + return m.groupId +} + +// GetModifiedBy gets the modifiedBy property value. The modifiedBy property +func (m *BranchMetaData) GetModifiedBy() *string { + return m.modifiedBy +} + +// GetModifiedOn gets the modifiedOn property value. The modifiedOn property +func (m *BranchMetaData) GetModifiedOn() *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time { + return m.modifiedOn +} + +// GetOwner gets the owner property value. The owner property +func (m *BranchMetaData) GetOwner() *string { + return m.owner +} + +// GetUserDefined gets the userDefined property value. The userDefined property +func (m *BranchMetaData) GetUserDefined() *bool { + return m.userDefined +} + +// Serialize serializes information the current object +func (m *BranchMetaData) Serialize(writer i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.SerializationWriter) error { + { + err := writer.WriteStringValue("artifactId", m.GetArtifactId()) + if err != nil { + return err + } + } + { + err := writer.WriteStringValue("branchId", m.GetBranchId()) + if err != nil { + return err + } + } + { + err := writer.WriteTimeValue("createdOn", m.GetCreatedOn()) + if err != nil { + return err + } + } + { + err := writer.WriteStringValue("description", m.GetDescription()) + if err != nil { + return err + } + } + { + err := writer.WriteStringValue("groupId", m.GetGroupId()) + if err != nil { + return err + } + } + { + err := writer.WriteStringValue("modifiedBy", m.GetModifiedBy()) + if err != nil { + return err + } + } + { + err := writer.WriteTimeValue("modifiedOn", m.GetModifiedOn()) + if err != nil { + return err + } + } + { + err := writer.WriteStringValue("owner", m.GetOwner()) + if err != nil { + return err + } + } + { + err := writer.WriteBoolValue("userDefined", m.GetUserDefined()) + if err != nil { + return err + } + } + { + err := writer.WriteAdditionalData(m.GetAdditionalData()) + if err != nil { + return err + } + } + return nil +} + +// SetAdditionalData sets the AdditionalData property value. Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. +func (m *BranchMetaData) SetAdditionalData(value map[string]any) { + m.additionalData = value +} + +// SetArtifactId sets the artifactId property value. The ID of a single artifact. +func (m *BranchMetaData) SetArtifactId(value *string) { + m.artifactId = value +} + +// SetBranchId sets the branchId property value. The ID of a single artifact branch. +func (m *BranchMetaData) SetBranchId(value *string) { + m.branchId = value +} + +// SetCreatedOn sets the createdOn property value. The createdOn property +func (m *BranchMetaData) SetCreatedOn(value *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time) { + m.createdOn = value +} + +// SetDescription sets the description property value. The description property +func (m *BranchMetaData) SetDescription(value *string) { + m.description = value +} + +// SetGroupId sets the groupId property value. An ID of a single artifact group. +func (m *BranchMetaData) SetGroupId(value *string) { + m.groupId = value +} + +// SetModifiedBy sets the modifiedBy property value. The modifiedBy property +func (m *BranchMetaData) SetModifiedBy(value *string) { + m.modifiedBy = value +} + +// SetModifiedOn sets the modifiedOn property value. The modifiedOn property +func (m *BranchMetaData) SetModifiedOn(value *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time) { + m.modifiedOn = value +} + +// SetOwner sets the owner property value. The owner property +func (m *BranchMetaData) SetOwner(value *string) { + m.owner = value +} + +// SetUserDefined sets the userDefined property value. The userDefined property +func (m *BranchMetaData) SetUserDefined(value *bool) { + m.userDefined = value +} + +// BranchMetaDataable +type BranchMetaDataable interface { + i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.AdditionalDataHolder + i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.Parsable + GetArtifactId() *string + GetBranchId() *string + GetCreatedOn() *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time + GetDescription() *string + GetGroupId() *string + GetModifiedBy() *string + GetModifiedOn() *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time + GetOwner() *string + GetUserDefined() *bool + SetArtifactId(value *string) + SetBranchId(value *string) + SetCreatedOn(value *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time) + SetDescription(value *string) + SetGroupId(value *string) + SetModifiedBy(value *string) + SetModifiedOn(value *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time) + SetOwner(value *string) + SetUserDefined(value *bool) +} diff --git a/go-sdk/pkg/registryclient-v3/models/branch_search_results.go b/go-sdk/pkg/registryclient-v3/models/branch_search_results.go new file mode 100644 index 0000000000..494513d994 --- /dev/null +++ b/go-sdk/pkg/registryclient-v3/models/branch_search_results.go @@ -0,0 +1,128 @@ +package models + +import ( + i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91 "github.com/microsoft/kiota-abstractions-go/serialization" +) + +// BranchSearchResults describes the response received when searching for branches. +type BranchSearchResults struct { + // Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. + additionalData map[string]any + // The branches returned in the result set. + branches []SearchedBranchable + // The total number of branches that matched the query that produced the result set (may be more than the number of branches in the result set). + count *int32 +} + +// NewBranchSearchResults instantiates a new BranchSearchResults and sets the default values. +func NewBranchSearchResults() *BranchSearchResults { + m := &BranchSearchResults{} + m.SetAdditionalData(make(map[string]any)) + return m +} + +// CreateBranchSearchResultsFromDiscriminatorValue creates a new instance of the appropriate class based on discriminator value +func CreateBranchSearchResultsFromDiscriminatorValue(parseNode i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) (i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.Parsable, error) { + return NewBranchSearchResults(), nil +} + +// GetAdditionalData gets the AdditionalData property value. Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. +func (m *BranchSearchResults) GetAdditionalData() map[string]any { + return m.additionalData +} + +// GetBranches gets the branches property value. The branches returned in the result set. +func (m *BranchSearchResults) GetBranches() []SearchedBranchable { + return m.branches +} + +// GetCount gets the count property value. The total number of branches that matched the query that produced the result set (may be more than the number of branches in the result set). +func (m *BranchSearchResults) GetCount() *int32 { + return m.count +} + +// GetFieldDeserializers the deserialization information for the current model +func (m *BranchSearchResults) GetFieldDeserializers() map[string]func(i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + res := make(map[string]func(i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error) + res["branches"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetCollectionOfObjectValues(CreateSearchedBranchFromDiscriminatorValue) + if err != nil { + return err + } + if val != nil { + res := make([]SearchedBranchable, len(val)) + for i, v := range val { + if v != nil { + res[i] = v.(SearchedBranchable) + } + } + m.SetBranches(res) + } + return nil + } + res["count"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetInt32Value() + if err != nil { + return err + } + if val != nil { + m.SetCount(val) + } + return nil + } + return res +} + +// Serialize serializes information the current object +func (m *BranchSearchResults) Serialize(writer i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.SerializationWriter) error { + if m.GetBranches() != nil { + cast := make([]i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.Parsable, len(m.GetBranches())) + for i, v := range m.GetBranches() { + if v != nil { + cast[i] = v.(i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.Parsable) + } + } + err := writer.WriteCollectionOfObjectValues("branches", cast) + if err != nil { + return err + } + } + { + err := writer.WriteInt32Value("count", m.GetCount()) + if err != nil { + return err + } + } + { + err := writer.WriteAdditionalData(m.GetAdditionalData()) + if err != nil { + return err + } + } + return nil +} + +// SetAdditionalData sets the AdditionalData property value. Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. +func (m *BranchSearchResults) SetAdditionalData(value map[string]any) { + m.additionalData = value +} + +// SetBranches sets the branches property value. The branches returned in the result set. +func (m *BranchSearchResults) SetBranches(value []SearchedBranchable) { + m.branches = value +} + +// SetCount sets the count property value. The total number of branches that matched the query that produced the result set (may be more than the number of branches in the result set). +func (m *BranchSearchResults) SetCount(value *int32) { + m.count = value +} + +// BranchSearchResultsable +type BranchSearchResultsable interface { + i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.AdditionalDataHolder + i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.Parsable + GetBranches() []SearchedBranchable + GetCount() *int32 + SetBranches(value []SearchedBranchable) + SetCount(value *int32) +} diff --git a/go-sdk/pkg/registryclient-v3/models/artifact_branch.go b/go-sdk/pkg/registryclient-v3/models/create_branch.go similarity index 53% rename from go-sdk/pkg/registryclient-v3/models/artifact_branch.go rename to go-sdk/pkg/registryclient-v3/models/create_branch.go index 005a4fbe23..9f974884fb 100644 --- a/go-sdk/pkg/registryclient-v3/models/artifact_branch.go +++ b/go-sdk/pkg/registryclient-v3/models/create_branch.go @@ -4,60 +4,48 @@ import ( i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91 "github.com/microsoft/kiota-abstractions-go/serialization" ) -// ArtifactBranch -type ArtifactBranch struct { +// CreateBranch +type CreateBranch struct { // Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. additionalData map[string]any - // The ID of a single artifact. - artifactId *string // The ID of a single artifact branch. branchId *string - // An ID of a single artifact group. - groupId *string + // The description property + description *string // The versions property versions []string } -// NewArtifactBranch instantiates a new ArtifactBranch and sets the default values. -func NewArtifactBranch() *ArtifactBranch { - m := &ArtifactBranch{} +// NewCreateBranch instantiates a new CreateBranch and sets the default values. +func NewCreateBranch() *CreateBranch { + m := &CreateBranch{} m.SetAdditionalData(make(map[string]any)) return m } -// CreateArtifactBranchFromDiscriminatorValue creates a new instance of the appropriate class based on discriminator value -func CreateArtifactBranchFromDiscriminatorValue(parseNode i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) (i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.Parsable, error) { - return NewArtifactBranch(), nil +// CreateCreateBranchFromDiscriminatorValue creates a new instance of the appropriate class based on discriminator value +func CreateCreateBranchFromDiscriminatorValue(parseNode i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) (i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.Parsable, error) { + return NewCreateBranch(), nil } // GetAdditionalData gets the AdditionalData property value. Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. -func (m *ArtifactBranch) GetAdditionalData() map[string]any { +func (m *CreateBranch) GetAdditionalData() map[string]any { return m.additionalData } -// GetArtifactId gets the artifactId property value. The ID of a single artifact. -func (m *ArtifactBranch) GetArtifactId() *string { - return m.artifactId -} - // GetBranchId gets the branchId property value. The ID of a single artifact branch. -func (m *ArtifactBranch) GetBranchId() *string { +func (m *CreateBranch) GetBranchId() *string { return m.branchId } +// GetDescription gets the description property value. The description property +func (m *CreateBranch) GetDescription() *string { + return m.description +} + // GetFieldDeserializers the deserialization information for the current model -func (m *ArtifactBranch) GetFieldDeserializers() map[string]func(i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { +func (m *CreateBranch) GetFieldDeserializers() map[string]func(i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { res := make(map[string]func(i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error) - res["artifactId"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { - val, err := n.GetStringValue() - if err != nil { - return err - } - if val != nil { - m.SetArtifactId(val) - } - return nil - } res["branchId"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { val, err := n.GetStringValue() if err != nil { @@ -68,13 +56,13 @@ func (m *ArtifactBranch) GetFieldDeserializers() map[string]func(i878a80d2330e89 } return nil } - res["groupId"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + res["description"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { val, err := n.GetStringValue() if err != nil { return err } if val != nil { - m.SetGroupId(val) + m.SetDescription(val) } return nil } @@ -97,24 +85,13 @@ func (m *ArtifactBranch) GetFieldDeserializers() map[string]func(i878a80d2330e89 return res } -// GetGroupId gets the groupId property value. An ID of a single artifact group. -func (m *ArtifactBranch) GetGroupId() *string { - return m.groupId -} - // GetVersions gets the versions property value. The versions property -func (m *ArtifactBranch) GetVersions() []string { +func (m *CreateBranch) GetVersions() []string { return m.versions } // Serialize serializes information the current object -func (m *ArtifactBranch) Serialize(writer i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.SerializationWriter) error { - { - err := writer.WriteStringValue("artifactId", m.GetArtifactId()) - if err != nil { - return err - } - } +func (m *CreateBranch) Serialize(writer i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.SerializationWriter) error { { err := writer.WriteStringValue("branchId", m.GetBranchId()) if err != nil { @@ -122,7 +99,7 @@ func (m *ArtifactBranch) Serialize(writer i878a80d2330e89d26896388a3f487eef27b0a } } { - err := writer.WriteStringValue("groupId", m.GetGroupId()) + err := writer.WriteStringValue("description", m.GetDescription()) if err != nil { return err } @@ -143,40 +120,33 @@ func (m *ArtifactBranch) Serialize(writer i878a80d2330e89d26896388a3f487eef27b0a } // SetAdditionalData sets the AdditionalData property value. Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. -func (m *ArtifactBranch) SetAdditionalData(value map[string]any) { +func (m *CreateBranch) SetAdditionalData(value map[string]any) { m.additionalData = value } -// SetArtifactId sets the artifactId property value. The ID of a single artifact. -func (m *ArtifactBranch) SetArtifactId(value *string) { - m.artifactId = value -} - // SetBranchId sets the branchId property value. The ID of a single artifact branch. -func (m *ArtifactBranch) SetBranchId(value *string) { +func (m *CreateBranch) SetBranchId(value *string) { m.branchId = value } -// SetGroupId sets the groupId property value. An ID of a single artifact group. -func (m *ArtifactBranch) SetGroupId(value *string) { - m.groupId = value +// SetDescription sets the description property value. The description property +func (m *CreateBranch) SetDescription(value *string) { + m.description = value } // SetVersions sets the versions property value. The versions property -func (m *ArtifactBranch) SetVersions(value []string) { +func (m *CreateBranch) SetVersions(value []string) { m.versions = value } -// ArtifactBranchable -type ArtifactBranchable interface { +// CreateBranchable +type CreateBranchable interface { i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.AdditionalDataHolder i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.Parsable - GetArtifactId() *string GetBranchId() *string - GetGroupId() *string + GetDescription() *string GetVersions() []string - SetArtifactId(value *string) SetBranchId(value *string) - SetGroupId(value *string) + SetDescription(value *string) SetVersions(value []string) } diff --git a/go-sdk/pkg/registryclient-v3/models/editable_branch_meta_data.go b/go-sdk/pkg/registryclient-v3/models/editable_branch_meta_data.go new file mode 100644 index 0000000000..eb4fe2c8db --- /dev/null +++ b/go-sdk/pkg/registryclient-v3/models/editable_branch_meta_data.go @@ -0,0 +1,86 @@ +package models + +import ( + i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91 "github.com/microsoft/kiota-abstractions-go/serialization" +) + +// EditableBranchMetaData +type EditableBranchMetaData struct { + // Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. + additionalData map[string]any + // The description property + description *string +} + +// NewEditableBranchMetaData instantiates a new EditableBranchMetaData and sets the default values. +func NewEditableBranchMetaData() *EditableBranchMetaData { + m := &EditableBranchMetaData{} + m.SetAdditionalData(make(map[string]any)) + return m +} + +// CreateEditableBranchMetaDataFromDiscriminatorValue creates a new instance of the appropriate class based on discriminator value +func CreateEditableBranchMetaDataFromDiscriminatorValue(parseNode i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) (i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.Parsable, error) { + return NewEditableBranchMetaData(), nil +} + +// GetAdditionalData gets the AdditionalData property value. Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. +func (m *EditableBranchMetaData) GetAdditionalData() map[string]any { + return m.additionalData +} + +// GetDescription gets the description property value. The description property +func (m *EditableBranchMetaData) GetDescription() *string { + return m.description +} + +// GetFieldDeserializers the deserialization information for the current model +func (m *EditableBranchMetaData) GetFieldDeserializers() map[string]func(i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + res := make(map[string]func(i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error) + res["description"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetStringValue() + if err != nil { + return err + } + if val != nil { + m.SetDescription(val) + } + return nil + } + return res +} + +// Serialize serializes information the current object +func (m *EditableBranchMetaData) Serialize(writer i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.SerializationWriter) error { + { + err := writer.WriteStringValue("description", m.GetDescription()) + if err != nil { + return err + } + } + { + err := writer.WriteAdditionalData(m.GetAdditionalData()) + if err != nil { + return err + } + } + return nil +} + +// SetAdditionalData sets the AdditionalData property value. Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. +func (m *EditableBranchMetaData) SetAdditionalData(value map[string]any) { + m.additionalData = value +} + +// SetDescription sets the description property value. The description property +func (m *EditableBranchMetaData) SetDescription(value *string) { + m.description = value +} + +// EditableBranchMetaDataable +type EditableBranchMetaDataable interface { + i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.AdditionalDataHolder + i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.Parsable + GetDescription() *string + SetDescription(value *string) +} diff --git a/go-sdk/pkg/registryclient-v3/models/searched_branch.go b/go-sdk/pkg/registryclient-v3/models/searched_branch.go new file mode 100644 index 0000000000..a1f100144c --- /dev/null +++ b/go-sdk/pkg/registryclient-v3/models/searched_branch.go @@ -0,0 +1,327 @@ +package models + +import ( + i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91 "github.com/microsoft/kiota-abstractions-go/serialization" + i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e "time" +) + +// SearchedBranch +type SearchedBranch struct { + // Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. + additionalData map[string]any + // The ID of a single artifact. + artifactId *string + // The ID of a single artifact branch. + branchId *string + // The createdOn property + createdOn *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time + // The description property + description *string + // An ID of a single artifact group. + groupId *string + // The modifiedBy property + modifiedBy *string + // The modifiedOn property + modifiedOn *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time + // The owner property + owner *string + // The userDefined property + userDefined *bool +} + +// NewSearchedBranch instantiates a new SearchedBranch and sets the default values. +func NewSearchedBranch() *SearchedBranch { + m := &SearchedBranch{} + m.SetAdditionalData(make(map[string]any)) + return m +} + +// CreateSearchedBranchFromDiscriminatorValue creates a new instance of the appropriate class based on discriminator value +func CreateSearchedBranchFromDiscriminatorValue(parseNode i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) (i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.Parsable, error) { + return NewSearchedBranch(), nil +} + +// GetAdditionalData gets the AdditionalData property value. Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. +func (m *SearchedBranch) GetAdditionalData() map[string]any { + return m.additionalData +} + +// GetArtifactId gets the artifactId property value. The ID of a single artifact. +func (m *SearchedBranch) GetArtifactId() *string { + return m.artifactId +} + +// GetBranchId gets the branchId property value. The ID of a single artifact branch. +func (m *SearchedBranch) GetBranchId() *string { + return m.branchId +} + +// GetCreatedOn gets the createdOn property value. The createdOn property +func (m *SearchedBranch) GetCreatedOn() *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time { + return m.createdOn +} + +// GetDescription gets the description property value. The description property +func (m *SearchedBranch) GetDescription() *string { + return m.description +} + +// GetFieldDeserializers the deserialization information for the current model +func (m *SearchedBranch) GetFieldDeserializers() map[string]func(i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + res := make(map[string]func(i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error) + res["artifactId"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetStringValue() + if err != nil { + return err + } + if val != nil { + m.SetArtifactId(val) + } + return nil + } + res["branchId"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetStringValue() + if err != nil { + return err + } + if val != nil { + m.SetBranchId(val) + } + return nil + } + res["createdOn"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetTimeValue() + if err != nil { + return err + } + if val != nil { + m.SetCreatedOn(val) + } + return nil + } + res["description"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetStringValue() + if err != nil { + return err + } + if val != nil { + m.SetDescription(val) + } + return nil + } + res["groupId"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetStringValue() + if err != nil { + return err + } + if val != nil { + m.SetGroupId(val) + } + return nil + } + res["modifiedBy"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetStringValue() + if err != nil { + return err + } + if val != nil { + m.SetModifiedBy(val) + } + return nil + } + res["modifiedOn"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetTimeValue() + if err != nil { + return err + } + if val != nil { + m.SetModifiedOn(val) + } + return nil + } + res["owner"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetStringValue() + if err != nil { + return err + } + if val != nil { + m.SetOwner(val) + } + return nil + } + res["userDefined"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetBoolValue() + if err != nil { + return err + } + if val != nil { + m.SetUserDefined(val) + } + return nil + } + return res +} + +// GetGroupId gets the groupId property value. An ID of a single artifact group. +func (m *SearchedBranch) GetGroupId() *string { + return m.groupId +} + +// GetModifiedBy gets the modifiedBy property value. The modifiedBy property +func (m *SearchedBranch) GetModifiedBy() *string { + return m.modifiedBy +} + +// GetModifiedOn gets the modifiedOn property value. The modifiedOn property +func (m *SearchedBranch) GetModifiedOn() *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time { + return m.modifiedOn +} + +// GetOwner gets the owner property value. The owner property +func (m *SearchedBranch) GetOwner() *string { + return m.owner +} + +// GetUserDefined gets the userDefined property value. The userDefined property +func (m *SearchedBranch) GetUserDefined() *bool { + return m.userDefined +} + +// Serialize serializes information the current object +func (m *SearchedBranch) Serialize(writer i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.SerializationWriter) error { + { + err := writer.WriteStringValue("artifactId", m.GetArtifactId()) + if err != nil { + return err + } + } + { + err := writer.WriteStringValue("branchId", m.GetBranchId()) + if err != nil { + return err + } + } + { + err := writer.WriteTimeValue("createdOn", m.GetCreatedOn()) + if err != nil { + return err + } + } + { + err := writer.WriteStringValue("description", m.GetDescription()) + if err != nil { + return err + } + } + { + err := writer.WriteStringValue("groupId", m.GetGroupId()) + if err != nil { + return err + } + } + { + err := writer.WriteStringValue("modifiedBy", m.GetModifiedBy()) + if err != nil { + return err + } + } + { + err := writer.WriteTimeValue("modifiedOn", m.GetModifiedOn()) + if err != nil { + return err + } + } + { + err := writer.WriteStringValue("owner", m.GetOwner()) + if err != nil { + return err + } + } + { + err := writer.WriteBoolValue("userDefined", m.GetUserDefined()) + if err != nil { + return err + } + } + { + err := writer.WriteAdditionalData(m.GetAdditionalData()) + if err != nil { + return err + } + } + return nil +} + +// SetAdditionalData sets the AdditionalData property value. Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. +func (m *SearchedBranch) SetAdditionalData(value map[string]any) { + m.additionalData = value +} + +// SetArtifactId sets the artifactId property value. The ID of a single artifact. +func (m *SearchedBranch) SetArtifactId(value *string) { + m.artifactId = value +} + +// SetBranchId sets the branchId property value. The ID of a single artifact branch. +func (m *SearchedBranch) SetBranchId(value *string) { + m.branchId = value +} + +// SetCreatedOn sets the createdOn property value. The createdOn property +func (m *SearchedBranch) SetCreatedOn(value *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time) { + m.createdOn = value +} + +// SetDescription sets the description property value. The description property +func (m *SearchedBranch) SetDescription(value *string) { + m.description = value +} + +// SetGroupId sets the groupId property value. An ID of a single artifact group. +func (m *SearchedBranch) SetGroupId(value *string) { + m.groupId = value +} + +// SetModifiedBy sets the modifiedBy property value. The modifiedBy property +func (m *SearchedBranch) SetModifiedBy(value *string) { + m.modifiedBy = value +} + +// SetModifiedOn sets the modifiedOn property value. The modifiedOn property +func (m *SearchedBranch) SetModifiedOn(value *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time) { + m.modifiedOn = value +} + +// SetOwner sets the owner property value. The owner property +func (m *SearchedBranch) SetOwner(value *string) { + m.owner = value +} + +// SetUserDefined sets the userDefined property value. The userDefined property +func (m *SearchedBranch) SetUserDefined(value *bool) { + m.userDefined = value +} + +// SearchedBranchable +type SearchedBranchable interface { + i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.AdditionalDataHolder + i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.Parsable + GetArtifactId() *string + GetBranchId() *string + GetCreatedOn() *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time + GetDescription() *string + GetGroupId() *string + GetModifiedBy() *string + GetModifiedOn() *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time + GetOwner() *string + GetUserDefined() *bool + SetArtifactId(value *string) + SetBranchId(value *string) + SetCreatedOn(value *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time) + SetDescription(value *string) + SetGroupId(value *string) + SetModifiedBy(value *string) + SetModifiedOn(value *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time) + SetOwner(value *string) + SetUserDefined(value *bool) +} diff --git a/integration-tests/src/test/java/io/apicurio/tests/migration/GenerateCanonicalHashImportIT.java b/integration-tests/src/test/java/io/apicurio/tests/migration/GenerateCanonicalHashImportIT.java index 9de347b5f1..4a1b1f4094 100644 --- a/integration-tests/src/test/java/io/apicurio/tests/migration/GenerateCanonicalHashImportIT.java +++ b/integration-tests/src/test/java/io/apicurio/tests/migration/GenerateCanonicalHashImportIT.java @@ -7,8 +7,8 @@ import io.apicurio.registry.types.ContentTypes; import io.apicurio.registry.types.VersionState; import io.apicurio.registry.utils.IoUtil; -import io.apicurio.registry.utils.impexp.ArtifactBranchEntity; import io.apicurio.registry.utils.impexp.ArtifactVersionEntity; +import io.apicurio.registry.utils.impexp.BranchEntity; import io.apicurio.registry.utils.impexp.ContentEntity; import io.apicurio.registry.utils.impexp.EntityWriter; import io.apicurio.tests.ApicurioRegistryBaseIT; @@ -26,6 +26,7 @@ import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.UUID; @@ -128,11 +129,10 @@ public InputStream generateExportedZip(Map artifacts) { writer.writeEntity(versionEntity); writer.writeEntity( - ArtifactBranchEntity.builder() + BranchEntity.builder() .artifactId(artifactId) .branchId(BranchId.LATEST.getRawBranchId()) - .branchOrder(1) - .version("1") + .versions(List.of("1")) .build() ); } diff --git a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/ArtifactBranchEntity.java b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/BranchEntity.java similarity index 56% rename from utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/ArtifactBranchEntity.java rename to utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/BranchEntity.java index 77575b0756..9034d35e39 100644 --- a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/ArtifactBranchEntity.java +++ b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/BranchEntity.java @@ -1,13 +1,13 @@ package io.apicurio.registry.utils.impexp; -import io.apicurio.registry.model.BranchId; -import io.apicurio.registry.model.GAV; import io.quarkus.runtime.annotations.RegisterForReflection; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.NoArgsConstructor; import lombok.ToString; +import java.util.List; + import static lombok.AccessLevel.PRIVATE; @Builder @@ -15,31 +15,21 @@ @AllArgsConstructor(access = PRIVATE) @ToString @RegisterForReflection -public class ArtifactBranchEntity extends Entity { +public class BranchEntity extends Entity { public String groupId; - public String artifactId; - - public String version; - public String branchId; - - public int branchOrder; - - - public GAV toGAV() { - return new GAV(groupId, artifactId, version); - } - - - public BranchId toBranchId() { - return new BranchId(branchId); - } + public String description; + public String owner; + public long createdOn; + public String modifiedBy; + public long modifiedOn; + public List versions; @Override public EntityType getEntityType() { - return EntityType.ArtifactBranch; + return EntityType.Branch; } } diff --git a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityReader.java b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityReader.java index e599ce2519..632ea48236 100644 --- a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityReader.java +++ b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityReader.java @@ -1,15 +1,14 @@ package io.apicurio.registry.utils.impexp; -import java.io.IOException; -import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; - import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.ObjectMapper; - import io.apicurio.registry.utils.IoUtil; +import java.io.IOException; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; + public class EntityReader { private static final ObjectMapper mapper; @@ -51,8 +50,8 @@ public Entity readEntity() throws IOException { return readGroup(entry); case Comment: return readComment(entry); - case ArtifactBranch: - return readArtifactBranch(entry); + case Branch: + return readBranch(entry); case Manifest: return readManifest(entry); } @@ -99,8 +98,8 @@ private CommentEntity readComment(ZipEntry entry) throws IOException { return this.readEntry(entry, CommentEntity.class); } - private ArtifactBranchEntity readArtifactBranch(ZipEntry entry) throws IOException { - return this.readEntry(entry, ArtifactBranchEntity.class); + private BranchEntity readBranch(ZipEntry entry) throws IOException { + return this.readEntry(entry, BranchEntity.class); } private GlobalRuleEntity readGlobalRule(ZipEntry entry) throws IOException { diff --git a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityType.java b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityType.java index 079103fb15..3fe3dbd27c 100644 --- a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityType.java +++ b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityType.java @@ -5,6 +5,6 @@ @RegisterForReflection public enum EntityType { - Manifest, GlobalRule, Content, Group, ArtifactVersion, ArtifactRule, Comment, ArtifactBranch + Manifest, GlobalRule, Content, Group, ArtifactVersion, ArtifactRule, Comment, Branch } diff --git a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityWriter.java b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityWriter.java index 28bd87f60f..975660811d 100644 --- a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityWriter.java +++ b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityWriter.java @@ -1,13 +1,13 @@ package io.apicurio.registry.utils.impexp; -import java.io.IOException; -import java.util.zip.ZipEntry; -import java.util.zip.ZipOutputStream; - import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.IOException; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + public class EntityWriter { private static final ObjectMapper mapper; @@ -52,8 +52,8 @@ public void writeEntity(Entity entity) throws IOException { case Comment: writeEntity((CommentEntity) entity); break; - case ArtifactBranch: - writeEntity((ArtifactBranchEntity) entity); + case Branch: + writeEntity((BranchEntity) entity); break; case Manifest: writeEntity((ManifestEntity) entity); @@ -106,14 +106,15 @@ private void writeEntity(CommentEntity entity) throws IOException { write(mdEntry, entity, CommentEntity.class); } - private void writeEntity(ArtifactBranchEntity entity) throws IOException { - ZipEntry mdEntry = createZipEntry(EntityType.ArtifactBranch, entity.groupId, entity.artifactId, entity.branchId + '-' + entity.branchOrder, "json"); - write(mdEntry, entity, ArtifactBranchEntity.class); + private void writeEntity(BranchEntity entity) throws IOException { + ZipEntry mdEntry = createZipEntry(EntityType.Branch, entity.groupId, entity.artifactId, "branches/" + entity.branchId, "json"); + write(mdEntry, entity, BranchEntity.class); } private ZipEntry createZipEntry(EntityType type, String fileName, String fileExt) { return createZipEntry(type, null, null, fileName, fileExt); } + private ZipEntry createZipEntry(EntityType type, String groupId, String artifactId, String fileName, String fileExt) { // TODO encode groupId, artifactId, and filename as path elements String path = null; @@ -122,7 +123,7 @@ private ZipEntry createZipEntry(EntityType type, String groupId, String artifact path = String.format("groups/%s/artifacts/%s/rules/%s.%s.%s", groupOrDefault(groupId), artifactId, fileName, type.name(), fileExt); break; case ArtifactVersion: - case ArtifactBranch: + case Branch: path = String.format("groups/%s/artifacts/%s/versions/%s.%s.%s", groupOrDefault(groupId), artifactId, fileName, type.name(), fileExt); break; case Content: From 352fdc895faef3fe260a0031456e4460a73b3d8f Mon Sep 17 00:00:00 2001 From: Eric Wittmann Date: Wed, 12 Jun 2024 11:21:37 -0400 Subject: [PATCH 02/11] Fix issues with import/export for branches --- .../impl/sql/AbstractSqlRegistryStorage.java | 62 +++++++++++++------ .../storage/impl/sql/CommonSqlStatements.java | 11 ++-- .../storage/impl/sql/SqlStatements.java | 4 +- .../impl/sql/mappers/BranchEntityMapper.java | 1 + .../noprofile/rest/v3/BranchesTest.java | 1 - .../GenerateCanonicalHashImportIT.java | 2 +- .../registry/utils/impexp/BranchEntity.java | 10 +++ .../registry/utils/impexp/EntityWriter.java | 1 - 8 files changed, 62 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/AbstractSqlRegistryStorage.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/AbstractSqlRegistryStorage.java index f46c55f75c..71b1320783 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/AbstractSqlRegistryStorage.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/AbstractSqlRegistryStorage.java @@ -2279,7 +2279,6 @@ public void exportData(Function handler) throws RegistryStorageExc // Export all branches ///////////////////////////////// - // TODO add the list of versions to the BranchEntity when exporting handles.withHandle(handle -> { Stream stream = handle.createQuery(sqlStatements.exportBranches()) .setFetchSize(50) @@ -2287,7 +2286,10 @@ public void exportData(Function handler) throws RegistryStorageExc .stream(); // Process and then close the stream. try (stream) { - stream.forEach(handler::apply); + stream.forEach(branch -> { + branch.versions = getBranchVersionNumbersRaw(handle, branch.toGA(), branch.toBranchId()); + handler.apply(branch); + }); } return null; }); @@ -3426,6 +3428,15 @@ public BranchMetaDataDto getBranchMetaData(GA ga, BranchId branchId) { }); } + protected List getBranchVersionNumbersRaw(Handle handle, GA ga, BranchId branchId) { + return handle.createQuery(sqlStatements.selectBranchVersionNumbers()) + .bind(0, ga.getRawGroupId()) + .bind(1, ga.getRawArtifactId()) + .bind(2, branchId.getRawBranchId()) + .map(StringMapper.instance) + .list(); + } + @Override public VersionSearchResultsDto getBranchVersions(GA ga, BranchId branchId, int offset, int limit) { return handles.withHandleNoException(handle -> { @@ -3755,24 +3766,35 @@ public void deleteBranch(GA ga, BranchId branchId) { @Override @Transactional public void importBranch(BranchEntity entity) { -// var gav = entity.toGAV(); -// var branchId = entity.toBranchId(); -// handles.withHandleNoException(handle -> { -// try { -// handle.createUpdate(sqlStatements.importBranch()) -// .bind(0, gav.getRawGroupId()) -// .bind(1, gav.getRawArtifactId()) -// .bind(2, branchId.getRawBranchId()) -// .bind(3, entity.branchOrder) -// .bind(4, gav.getRawVersionId()) -// .execute(); -// } catch (Exception ex) { -// if (sqlStatements.isForeignKeyViolation(ex)) { -// throw new VersionNotFoundException(gav, ex); -// } -// throw ex; -// } -// }); + var ga = entity.toGA(); + var branchId = entity.toBranchId(); + handles.withHandleNoException(handle -> { + try { + handle.createUpdate(sqlStatements.insertBranch()) + .bind(0, ga.getRawGroupId()) + .bind(1, ga.getRawArtifactId()) + .bind(2, branchId.getRawBranchId()) + .bind(3, entity.description) + .bind(4, entity.userDefined) + .bind(5, entity.owner) + .bind(6, entity.createdOn) + .bind(7, entity.modifiedBy) + .bind(8, entity.modifiedOn) + .execute(); + } catch (Exception ex) { + if (sqlStatements.isForeignKeyViolation(ex)) { + throw new ArtifactNotFoundException(ga.getRawGroupIdWithDefaultString(), ga.getRawArtifactId()); + } + throw ex; + } + + // Append each of the versions onto the branch + if (entity.versions != null) { + entity.versions.forEach(version -> { + appendVersionToBranchRaw(handle, ga, branchId, new VersionId(version)); + }); + } + }); } @Override diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/CommonSqlStatements.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/CommonSqlStatements.java index 6f08701a2f..58645e0d3e 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/CommonSqlStatements.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/CommonSqlStatements.java @@ -729,7 +729,7 @@ public String exportGroups() { @Override public String exportBranches() { - return "SELECT * FROM branches b"; + return "SELECT * FROM branches"; } @@ -1048,6 +1048,11 @@ public String selectBranch() { return "SELECT b.* FROM branches b WHERE b.groupId = ? AND b.artifactId = ? AND b.branchId = ?"; } + @Override + public String selectBranchVersionNumbers() { + return "SELECT bv.version FROM branch_versions bv WHERE bv.groupId = ? AND bv.artifactId = ? AND bv.branchId = ?"; + } + @Override public String selectBranchTip() { return "SELECT bv.groupId, bv.artifactId, bv.version FROM branch_versions bv " + @@ -1098,8 +1103,4 @@ public String deleteAllBranches() { return "DELETE FROM branches"; } - @Override - public String importBranch() { - return insertBranch(); - } } diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/SqlStatements.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/SqlStatements.java index c0413dab13..239b536df8 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/SqlStatements.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/SqlStatements.java @@ -481,8 +481,6 @@ public interface SqlStatements { public String importArtifactVersion(); - public String importBranch(); - public String selectMaxContentId(); public String selectMaxGlobalId(); @@ -574,6 +572,8 @@ public interface SqlStatements { public String selectBranch(); + public String selectBranchVersionNumbers(); + public String selectBranchTip(); public String selectBranchTipNotDisabled(); diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/BranchEntityMapper.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/BranchEntityMapper.java index b1cd2bb04d..b7688911d4 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/BranchEntityMapper.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/BranchEntityMapper.java @@ -23,6 +23,7 @@ public BranchEntity map(ResultSet rs) throws SQLException { .artifactId(rs.getString("artifactId")) .branchId(rs.getString("branchId")) .description(rs.getString("description")) + .userDefined(rs.getBoolean("userDefined")) .owner(rs.getString("owner")) .createdOn(rs.getTimestamp("createdOn").getTime()) .modifiedBy(rs.getString("modifiedBy")) diff --git a/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/BranchesTest.java b/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/BranchesTest.java index 9852fd5bfe..3652f3dce8 100644 --- a/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/BranchesTest.java +++ b/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/BranchesTest.java @@ -544,7 +544,6 @@ public void testGetMostRecentVersionFromBranch() throws Exception { Assertions.assertThrows(Exception.class, () -> { clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().byVersionExpression("branch=invalid").get(); }); - } private static AddVersionToBranch addVersion(String version) { diff --git a/integration-tests/src/test/java/io/apicurio/tests/migration/GenerateCanonicalHashImportIT.java b/integration-tests/src/test/java/io/apicurio/tests/migration/GenerateCanonicalHashImportIT.java index 4a1b1f4094..94f3547b38 100644 --- a/integration-tests/src/test/java/io/apicurio/tests/migration/GenerateCanonicalHashImportIT.java +++ b/integration-tests/src/test/java/io/apicurio/tests/migration/GenerateCanonicalHashImportIT.java @@ -68,7 +68,7 @@ public void testGeneratingCanonicalHashOnImport() throws Exception { The only way is to generate canonical hash and then search artifact by it. But that needs apicurio-registry-app module as dependency. */ - var registryContent = client.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().byVersionExpression("branch=latest").content().get(); + var registryContent = client.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().byVersionExpression("1").content().get(); assertNotNull(registryContent); assertEquals(content, IoUtil.toString(registryContent)); } diff --git a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/BranchEntity.java b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/BranchEntity.java index 9034d35e39..5fc286d774 100644 --- a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/BranchEntity.java +++ b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/BranchEntity.java @@ -1,5 +1,7 @@ package io.apicurio.registry.utils.impexp; +import io.apicurio.registry.model.BranchId; +import io.apicurio.registry.model.GA; import io.quarkus.runtime.annotations.RegisterForReflection; import lombok.AllArgsConstructor; import lombok.Builder; @@ -21,12 +23,20 @@ public class BranchEntity extends Entity { public String artifactId; public String branchId; public String description; + public boolean userDefined; public String owner; public long createdOn; public String modifiedBy; public long modifiedOn; public List versions; + public GA toGA() { + return new GA(groupId, artifactId); + } + + public BranchId toBranchId() { + return new BranchId(branchId); + } @Override public EntityType getEntityType() { diff --git a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityWriter.java b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityWriter.java index 975660811d..7208b94ac1 100644 --- a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityWriter.java +++ b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityWriter.java @@ -123,7 +123,6 @@ private ZipEntry createZipEntry(EntityType type, String groupId, String artifact path = String.format("groups/%s/artifacts/%s/rules/%s.%s.%s", groupOrDefault(groupId), artifactId, fileName, type.name(), fileExt); break; case ArtifactVersion: - case Branch: path = String.format("groups/%s/artifacts/%s/versions/%s.%s.%s", groupOrDefault(groupId), artifactId, fileName, type.name(), fileExt); break; case Content: From 95fde8fd9f8aa1a03bf10a86e8dda081f98ed6a0 Mon Sep 17 00:00:00 2001 From: Eric Wittmann Date: Wed, 12 Jun 2024 12:07:17 -0400 Subject: [PATCH 03/11] Additional fix for branch import/export --- .../io/apicurio/registry/utils/impexp/EntityType.java | 2 +- .../io/apicurio/registry/utils/impexp/EntityWriter.java | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityType.java b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityType.java index 3fe3dbd27c..49a3b6c502 100644 --- a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityType.java +++ b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityType.java @@ -5,6 +5,6 @@ @RegisterForReflection public enum EntityType { - Manifest, GlobalRule, Content, Group, ArtifactVersion, ArtifactRule, Comment, Branch + Manifest, GlobalRule, Content, Group, Artifact, ArtifactVersion, ArtifactRule, Comment, Branch } diff --git a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityWriter.java b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityWriter.java index 7208b94ac1..257b8cc45e 100644 --- a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityWriter.java +++ b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityWriter.java @@ -107,7 +107,7 @@ private void writeEntity(CommentEntity entity) throws IOException { } private void writeEntity(BranchEntity entity) throws IOException { - ZipEntry mdEntry = createZipEntry(EntityType.Branch, entity.groupId, entity.artifactId, "branches/" + entity.branchId, "json"); + ZipEntry mdEntry = createZipEntry(EntityType.Branch, entity.groupId, entity.artifactId, entity.branchId, "json"); write(mdEntry, entity, BranchEntity.class); } @@ -122,6 +122,12 @@ private ZipEntry createZipEntry(EntityType type, String groupId, String artifact case ArtifactRule: path = String.format("groups/%s/artifacts/%s/rules/%s.%s.%s", groupOrDefault(groupId), artifactId, fileName, type.name(), fileExt); break; + case Artifact: + path = String.format("groups/%s/artifacts/%s/%s.%s.%s", groupOrDefault(groupId), artifactId, fileName, type.name(), fileExt); + break; + case Branch: + path = String.format("groups/%s/artifacts/%s/branches/%s.%s.%s", groupOrDefault(groupId), artifactId, fileName, type.name(), fileExt); + break; case ArtifactVersion: path = String.format("groups/%s/artifacts/%s/versions/%s.%s.%s", groupOrDefault(groupId), artifactId, fileName, type.name(), fileExt); break; From 7b2bc82a2e280cb5feea16612ecf65806bb05645 Mon Sep 17 00:00:00 2001 From: Eric Wittmann Date: Wed, 12 Jun 2024 15:31:52 -0400 Subject: [PATCH 04/11] Slight change to the replace-branch-versions operation to work with the go sdk --- .../registry/rest/v3/GroupsResourceImpl.java | 8 +- .../noprofile/rest/v3/BranchesTest.java | 9 +- .../src/main/resources/META-INF/openapi.json | 21 ++++- ..._branches_item_versions_request_builder.go | 9 +- go-sdk/pkg/registryclient-v3/kiota-lock.json | 2 +- .../models/replace_branch_versions.go | 92 +++++++++++++++++++ 6 files changed, 129 insertions(+), 12 deletions(-) create mode 100644 go-sdk/pkg/registryclient-v3/models/replace_branch_versions.go diff --git a/app/src/main/java/io/apicurio/registry/rest/v3/GroupsResourceImpl.java b/app/src/main/java/io/apicurio/registry/rest/v3/GroupsResourceImpl.java index 2269b66413..57fb448b85 100644 --- a/app/src/main/java/io/apicurio/registry/rest/v3/GroupsResourceImpl.java +++ b/app/src/main/java/io/apicurio/registry/rest/v3/GroupsResourceImpl.java @@ -41,6 +41,7 @@ import io.apicurio.registry.rest.v3.beans.HandleReferencesType; import io.apicurio.registry.rest.v3.beans.IfArtifactExists; import io.apicurio.registry.rest.v3.beans.NewComment; +import io.apicurio.registry.rest.v3.beans.ReplaceBranchVersions; import io.apicurio.registry.rest.v3.beans.Rule; import io.apicurio.registry.rest.v3.beans.SortOrder; import io.apicurio.registry.rest.v3.beans.VersionMetaData; @@ -915,10 +916,11 @@ public VersionSearchResults listBranchVersions(String groupId, String artifactId @Override @Audited(extractParameters = {"0", KEY_GROUP_ID, "1", KEY_ARTIFACT_ID}) @Authorized(style = AuthorizedStyle.GroupAndArtifact, level = AuthorizedLevel.Write) - public List replaceBranchVersions(String groupId, String artifactId, String branchId, List data) { + public List replaceBranchVersions(String groupId, String artifactId, String branchId, ReplaceBranchVersions data) { requireParameter("groupId", groupId); requireParameter("artifactId", artifactId); requireParameter("branchId", branchId); + requireParameter("versions", data.getVersions()); GA ga = new GA(groupId, artifactId); BranchId bid = new BranchId(branchId); @@ -926,8 +928,8 @@ public List replaceBranchVersions(String groupId, String artifactId, Str // Throw 404 if the artifact or branch does not exist. storage.getBranchMetaData(ga, bid); - storage.replaceBranchVersions(ga, bid, data.stream().map(VersionId::new).toList()); - return data; + storage.replaceBranchVersions(ga, bid, data.getVersions().stream().map(VersionId::new).toList()); + return data.getVersions(); } @Override diff --git a/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/BranchesTest.java b/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/BranchesTest.java index 3652f3dce8..293bc9aa41 100644 --- a/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/BranchesTest.java +++ b/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/BranchesTest.java @@ -7,6 +7,7 @@ import io.apicurio.registry.rest.client.models.CreateBranch; import io.apicurio.registry.rest.client.models.CreateVersion; import io.apicurio.registry.rest.client.models.EditableBranchMetaData; +import io.apicurio.registry.rest.client.models.ReplaceBranchVersions; import io.apicurio.registry.rest.client.models.VersionMetaData; import io.apicurio.registry.rest.client.models.VersionSearchResults; import io.apicurio.registry.types.ArtifactType; @@ -372,7 +373,7 @@ public void testReplaceBranchVersions() throws Exception { Assertions.assertEquals("v2", results.getVersions().get(2).getName()); // Now replace the versions on the branch - List newVersions = List.of("1", "3", "5"); + ReplaceBranchVersions newVersions = replaceVersions("1", "3", "5"); clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("test-branch").versions().put(newVersions); // Make sure the branch now has 1,3,5 on it. @@ -552,4 +553,10 @@ private static AddVersionToBranch addVersion(String version) { return rval; } + private static ReplaceBranchVersions replaceVersions(String ... versions) { + ReplaceBranchVersions rval = new ReplaceBranchVersions(); + rval.setVersions(List.of(versions)); + return rval; + } + } diff --git a/common/src/main/resources/META-INF/openapi.json b/common/src/main/resources/META-INF/openapi.json index c85f46daa0..74f819d498 100644 --- a/common/src/main/resources/META-INF/openapi.json +++ b/common/src/main/resources/META-INF/openapi.json @@ -3038,10 +3038,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Version" - } + "$ref": "#/components/schemas/ReplaceBranchVersions" } } }, @@ -4865,6 +4862,22 @@ "type": "string" } } + }, + "ReplaceBranchVersions": { + "description": "", + "required": [ + "versions" + ], + "type": "object", + "properties": { + "versions": { + "description": "", + "type": "array", + "items": { + "$ref": "#/components/schemas/Version" + } + } + } } }, "responses": { diff --git a/go-sdk/pkg/registryclient-v3/groups/item_artifacts_item_branches_item_versions_request_builder.go b/go-sdk/pkg/registryclient-v3/groups/item_artifacts_item_branches_item_versions_request_builder.go index c0aab75a7e..fc3bea2c91 100644 --- a/go-sdk/pkg/registryclient-v3/groups/item_artifacts_item_branches_item_versions_request_builder.go +++ b/go-sdk/pkg/registryclient-v3/groups/item_artifacts_item_branches_item_versions_request_builder.go @@ -99,7 +99,7 @@ func (m *ItemArtifactsItemBranchesItemVersionsRequestBuilder) Post(ctx context.C } // Put add a new version to an artifact branch. Branch is created if it does not exist. Returns a list of version identifiers in the artifact branch, ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) -func (m *ItemArtifactsItemBranchesItemVersionsRequestBuilder) Put(ctx context.Context, body []string, requestConfiguration *ItemArtifactsItemBranchesItemVersionsRequestBuilderPutRequestConfiguration) ([]string, error) { +func (m *ItemArtifactsItemBranchesItemVersionsRequestBuilder) Put(ctx context.Context, body i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.ReplaceBranchVersionsable, requestConfiguration *ItemArtifactsItemBranchesItemVersionsRequestBuilderPutRequestConfiguration) ([]string, error) { requestInfo, err := m.ToPutRequestInformation(ctx, body, requestConfiguration) if err != nil { return nil, err @@ -151,14 +151,17 @@ func (m *ItemArtifactsItemBranchesItemVersionsRequestBuilder) ToPostRequestInfor } // ToPutRequestInformation add a new version to an artifact branch. Branch is created if it does not exist. Returns a list of version identifiers in the artifact branch, ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) -func (m *ItemArtifactsItemBranchesItemVersionsRequestBuilder) ToPutRequestInformation(ctx context.Context, body []string, requestConfiguration *ItemArtifactsItemBranchesItemVersionsRequestBuilderPutRequestConfiguration) (*i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestInformation, error) { +func (m *ItemArtifactsItemBranchesItemVersionsRequestBuilder) ToPutRequestInformation(ctx context.Context, body i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.ReplaceBranchVersionsable, requestConfiguration *ItemArtifactsItemBranchesItemVersionsRequestBuilderPutRequestConfiguration) (*i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.RequestInformation, error) { requestInfo := i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.NewRequestInformationWithMethodAndUrlTemplateAndPathParameters(i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.PUT, m.BaseRequestBuilder.UrlTemplate, m.BaseRequestBuilder.PathParameters) if requestConfiguration != nil { requestInfo.Headers.AddAll(requestConfiguration.Headers) requestInfo.AddRequestOptions(requestConfiguration.Options) } requestInfo.Headers.TryAdd("Accept", "application/json") - requestInfo.SetContentFromScalarCollection(ctx, m.BaseRequestBuilder.RequestAdapter, "application/json", body) + err := requestInfo.SetContentFromParsable(ctx, m.BaseRequestBuilder.RequestAdapter, "application/json", body) + if err != nil { + return nil, err + } return requestInfo, nil } diff --git a/go-sdk/pkg/registryclient-v3/kiota-lock.json b/go-sdk/pkg/registryclient-v3/kiota-lock.json index 2c0117fc9f..08fc02d9ba 100644 --- a/go-sdk/pkg/registryclient-v3/kiota-lock.json +++ b/go-sdk/pkg/registryclient-v3/kiota-lock.json @@ -1,5 +1,5 @@ { - "descriptionHash": "42439AFF83C21EDECF676DFDD248144EF5307FE92011DD89799DDA4BF2880592398FC34275D0990B3D9DEED38D6A6872549DED2FDBC42C1BF4A0F154D7C82AE3", + "descriptionHash": "344F39276758E3CA8971963C90DE0ABFE6B0AFCA167B697352C6D2ADB8169B7B9074D1131C064A29C40DA6929275DFBD069D9349C9886E90AD5A62AD2538A18B", "descriptionLocation": "../../v3.json", "lockFileVersion": "1.0.0", "kiotaVersion": "1.10.1", diff --git a/go-sdk/pkg/registryclient-v3/models/replace_branch_versions.go b/go-sdk/pkg/registryclient-v3/models/replace_branch_versions.go new file mode 100644 index 0000000000..7d2e2dbfc0 --- /dev/null +++ b/go-sdk/pkg/registryclient-v3/models/replace_branch_versions.go @@ -0,0 +1,92 @@ +package models + +import ( + i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91 "github.com/microsoft/kiota-abstractions-go/serialization" +) + +// ReplaceBranchVersions +type ReplaceBranchVersions struct { + // Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. + additionalData map[string]any + // The versions property + versions []string +} + +// NewReplaceBranchVersions instantiates a new ReplaceBranchVersions and sets the default values. +func NewReplaceBranchVersions() *ReplaceBranchVersions { + m := &ReplaceBranchVersions{} + m.SetAdditionalData(make(map[string]any)) + return m +} + +// CreateReplaceBranchVersionsFromDiscriminatorValue creates a new instance of the appropriate class based on discriminator value +func CreateReplaceBranchVersionsFromDiscriminatorValue(parseNode i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) (i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.Parsable, error) { + return NewReplaceBranchVersions(), nil +} + +// GetAdditionalData gets the AdditionalData property value. Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. +func (m *ReplaceBranchVersions) GetAdditionalData() map[string]any { + return m.additionalData +} + +// GetFieldDeserializers the deserialization information for the current model +func (m *ReplaceBranchVersions) GetFieldDeserializers() map[string]func(i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + res := make(map[string]func(i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error) + res["versions"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + val, err := n.GetCollectionOfPrimitiveValues("string") + if err != nil { + return err + } + if val != nil { + res := make([]string, len(val)) + for i, v := range val { + if v != nil { + res[i] = *(v.(*string)) + } + } + m.SetVersions(res) + } + return nil + } + return res +} + +// GetVersions gets the versions property value. The versions property +func (m *ReplaceBranchVersions) GetVersions() []string { + return m.versions +} + +// Serialize serializes information the current object +func (m *ReplaceBranchVersions) Serialize(writer i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.SerializationWriter) error { + if m.GetVersions() != nil { + err := writer.WriteCollectionOfStringValues("versions", m.GetVersions()) + if err != nil { + return err + } + } + { + err := writer.WriteAdditionalData(m.GetAdditionalData()) + if err != nil { + return err + } + } + return nil +} + +// SetAdditionalData sets the AdditionalData property value. Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well. +func (m *ReplaceBranchVersions) SetAdditionalData(value map[string]any) { + m.additionalData = value +} + +// SetVersions sets the versions property value. The versions property +func (m *ReplaceBranchVersions) SetVersions(value []string) { + m.versions = value +} + +// ReplaceBranchVersionsable +type ReplaceBranchVersionsable interface { + i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.AdditionalDataHolder + i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.Parsable + GetVersions() []string + SetVersions(value []string) +} From 408f1d7afa79a66c965c74ae0ac5479f516f3376 Mon Sep 17 00:00:00 2001 From: Eric Wittmann Date: Wed, 12 Jun 2024 15:34:22 -0400 Subject: [PATCH 05/11] Change the return value of replace-branch-versions to be more consistent --- .../registry/rest/v3/GroupsResourceImpl.java | 3 +-- common/src/main/resources/META-INF/openapi.json | 12 +----------- ...tem_branches_item_versions_request_builder.go | 16 +++++----------- go-sdk/pkg/registryclient-v3/kiota-lock.json | 2 +- 4 files changed, 8 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/io/apicurio/registry/rest/v3/GroupsResourceImpl.java b/app/src/main/java/io/apicurio/registry/rest/v3/GroupsResourceImpl.java index 57fb448b85..a9c8b3ecff 100644 --- a/app/src/main/java/io/apicurio/registry/rest/v3/GroupsResourceImpl.java +++ b/app/src/main/java/io/apicurio/registry/rest/v3/GroupsResourceImpl.java @@ -916,7 +916,7 @@ public VersionSearchResults listBranchVersions(String groupId, String artifactId @Override @Audited(extractParameters = {"0", KEY_GROUP_ID, "1", KEY_ARTIFACT_ID}) @Authorized(style = AuthorizedStyle.GroupAndArtifact, level = AuthorizedLevel.Write) - public List replaceBranchVersions(String groupId, String artifactId, String branchId, ReplaceBranchVersions data) { + public void replaceBranchVersions(String groupId, String artifactId, String branchId, ReplaceBranchVersions data) { requireParameter("groupId", groupId); requireParameter("artifactId", artifactId); requireParameter("branchId", branchId); @@ -929,7 +929,6 @@ public List replaceBranchVersions(String groupId, String artifactId, Str storage.getBranchMetaData(ga, bid); storage.replaceBranchVersions(ga, bid, data.getVersions().stream().map(VersionId::new).toList()); - return data.getVersions(); } @Override diff --git a/common/src/main/resources/META-INF/openapi.json b/common/src/main/resources/META-INF/openapi.json index 74f819d498..5b16de12be 100644 --- a/common/src/main/resources/META-INF/openapi.json +++ b/common/src/main/resources/META-INF/openapi.json @@ -3048,17 +3048,7 @@ "Branches" ], "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Version" - } - } - } - }, + "204": { "description": "The list of versions was replaced successfully." }, "404": { diff --git a/go-sdk/pkg/registryclient-v3/groups/item_artifacts_item_branches_item_versions_request_builder.go b/go-sdk/pkg/registryclient-v3/groups/item_artifacts_item_branches_item_versions_request_builder.go index fc3bea2c91..4a9238db7d 100644 --- a/go-sdk/pkg/registryclient-v3/groups/item_artifacts_item_branches_item_versions_request_builder.go +++ b/go-sdk/pkg/registryclient-v3/groups/item_artifacts_item_branches_item_versions_request_builder.go @@ -99,26 +99,20 @@ func (m *ItemArtifactsItemBranchesItemVersionsRequestBuilder) Post(ctx context.C } // Put add a new version to an artifact branch. Branch is created if it does not exist. Returns a list of version identifiers in the artifact branch, ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) -func (m *ItemArtifactsItemBranchesItemVersionsRequestBuilder) Put(ctx context.Context, body i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.ReplaceBranchVersionsable, requestConfiguration *ItemArtifactsItemBranchesItemVersionsRequestBuilderPutRequestConfiguration) ([]string, error) { +func (m *ItemArtifactsItemBranchesItemVersionsRequestBuilder) Put(ctx context.Context, body i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.ReplaceBranchVersionsable, requestConfiguration *ItemArtifactsItemBranchesItemVersionsRequestBuilderPutRequestConfiguration) error { requestInfo, err := m.ToPutRequestInformation(ctx, body, requestConfiguration) if err != nil { - return nil, err + return err } errorMapping := i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.ErrorMappings{ "404": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, "500": i00eb2e63d156923d00d8e86fe16b5d74daf30e363c9f185a8165cb42aa2f2c71.CreateErrorFromDiscriminatorValue, } - res, err := m.BaseRequestBuilder.RequestAdapter.SendPrimitiveCollection(ctx, requestInfo, "string", errorMapping) + err = m.BaseRequestBuilder.RequestAdapter.SendNoContent(ctx, requestInfo, errorMapping) if err != nil { - return nil, err - } - val := make([]string, len(res)) - for i, v := range res { - if v != nil { - val[i] = *(v.(*string)) - } + return err } - return val, nil + return nil } // ToGetRequestInformation get a list of all versions in the branch. Returns a list of version identifiers in the branch, ordered from the latest (tip of the branch) to the oldest.This operation can fail for the following reasons:* No artifact with this `groupId` and `artifactId` exists (HTTP error `404`)* No branch with this `branchId` exists (HTTP error `404`)* A server error occurred (HTTP error `500`) diff --git a/go-sdk/pkg/registryclient-v3/kiota-lock.json b/go-sdk/pkg/registryclient-v3/kiota-lock.json index 08fc02d9ba..71a7caf7bb 100644 --- a/go-sdk/pkg/registryclient-v3/kiota-lock.json +++ b/go-sdk/pkg/registryclient-v3/kiota-lock.json @@ -1,5 +1,5 @@ { - "descriptionHash": "344F39276758E3CA8971963C90DE0ABFE6B0AFCA167B697352C6D2ADB8169B7B9074D1131C064A29C40DA6929275DFBD069D9349C9886E90AD5A62AD2538A18B", + "descriptionHash": "165CB28362B12D7C5F9A8CA280FCC90F78811CB61857DB9467AF62D3973806A641B4EA8F5E66ABE71FBDA60E9BEE143C833AF373D82FA39AD461505AC5C40608", "descriptionLocation": "../../v3.json", "lockFileVersion": "1.0.0", "kiotaVersion": "1.10.1", From 6795aa74477fc8593dea864b60160e308c46887c Mon Sep 17 00:00:00 2001 From: Eric Wittmann Date: Thu, 13 Jun 2024 13:40:17 -0400 Subject: [PATCH 06/11] Added a full export/import test. Made sure it works! --- .../apicurio/registry/rest/v3/V3ApiUtil.java | 20 +- .../registry/storage/RegistryStorage.java | 38 +-- .../ReadOnlyRegistryStorageDecorator.java | 8 + .../RegistryStorageDecoratorBase.java | 5 + .../AbstractReadOnlyRegistryStorage.java | 5 + .../storage/impl/gitops/GitManager.java | 23 +- .../kafkasql/KafkaSqlRegistryStorage.java | 8 + .../messages/ImportArtifact1Message.java | 34 ++ .../impl/sql/AbstractSqlRegistryStorage.java | 117 +++++-- .../storage/impl/sql/CommonSqlStatements.java | 19 +- .../storage/impl/sql/SqlStatements.java | 3 +- .../sql/mappers/ArtifactEntityMapper.java | 39 +++ .../mappers/ArtifactVersionEntityMapper.java | 9 +- .../importing/AbstractDataImporter.java | 5 + .../storage/importing/SqlDataImporter.java | 28 +- .../apicurio/registry/storage/impl/sql/h2.ddl | 2 +- .../registry/storage/impl/sql/mssql.ddl | 2 +- .../registry/storage/impl/sql/postgresql.ddl | 2 +- .../noprofile/rest/v3/ImportExportTest.java | 314 ++++++++++++++++++ .../readonly/ReadOnlyRegistryStorageTest.java | 1 + .../registry/utils/export/Export.java | 64 ++-- .../registry/utils/impexp/ArtifactEntity.java | 41 +++ .../utils/impexp/ArtifactVersionEntity.java | 14 +- .../registry/utils/impexp/EntityReader.java | 6 + .../registry/utils/impexp/EntityWriter.java | 8 + .../utils/impexp/EntityReaderTest.java | 58 ---- .../apicurio/registry/utils/impexp/export.zip | Bin 889256 -> 0 bytes 27 files changed, 675 insertions(+), 198 deletions(-) create mode 100644 app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/ImportArtifact1Message.java create mode 100644 app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/ArtifactEntityMapper.java create mode 100644 app/src/test/java/io/apicurio/registry/noprofile/rest/v3/ImportExportTest.java create mode 100644 utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/ArtifactEntity.java delete mode 100644 utils/importexport/src/test/java/io/apicurio/registry/utils/impexp/EntityReaderTest.java delete mode 100644 utils/importexport/src/test/resources-unfiltered/io/apicurio/registry/utils/impexp/export.zip diff --git a/app/src/main/java/io/apicurio/registry/rest/v3/V3ApiUtil.java b/app/src/main/java/io/apicurio/registry/rest/v3/V3ApiUtil.java index 1984abc164..5828739774 100644 --- a/app/src/main/java/io/apicurio/registry/rest/v3/V3ApiUtil.java +++ b/app/src/main/java/io/apicurio/registry/rest/v3/V3ApiUtil.java @@ -162,15 +162,16 @@ public static BranchSearchResults dtoToSearchResults(BranchSearchResultsDto dto) BranchSearchResults results = new BranchSearchResults(); results.setCount(dto.getCount()); results.setBranches(new ArrayList<>(dto.getBranches().size())); - dto.getBranches().forEach(group -> { - SearchedBranch sg = new SearchedBranch(); - sg.setOwner(group.getOwner()); - sg.setCreatedOn(new Date(group.getCreatedOn())); - sg.setDescription(group.getDescription()); - sg.setBranchId(group.getBranchId()); - sg.setModifiedBy(group.getModifiedBy()); - sg.setModifiedOn(new Date(group.getModifiedOn())); - results.getBranches().add(sg); + dto.getBranches().forEach(branch -> { + SearchedBranch searchedBranch = new SearchedBranch(); + searchedBranch.setOwner(branch.getOwner()); + searchedBranch.setCreatedOn(new Date(branch.getCreatedOn())); + searchedBranch.setDescription(branch.getDescription()); + searchedBranch.setUserDefined(branch.isUserDefined()); + searchedBranch.setBranchId(branch.getBranchId()); + searchedBranch.setModifiedBy(branch.getModifiedBy()); + searchedBranch.setModifiedOn(new Date(branch.getModifiedOn())); + results.getBranches().add(searchedBranch); }); return results; } @@ -270,6 +271,7 @@ public static BranchMetaData dtoToBranchMetaData(BranchMetaDataDto branch) { .branchId(branch.getBranchId()) .description(branch.getDescription()) .owner(branch.getOwner()) + .userDefined(branch.isUserDefined()) .createdOn(new Date(branch.getCreatedOn())) .modifiedBy(branch.getModifiedBy()) .modifiedOn(new Date(branch.getModifiedOn())) diff --git a/app/src/main/java/io/apicurio/registry/storage/RegistryStorage.java b/app/src/main/java/io/apicurio/registry/storage/RegistryStorage.java index 9fee9fd4c7..72a3653fa6 100644 --- a/app/src/main/java/io/apicurio/registry/storage/RegistryStorage.java +++ b/app/src/main/java/io/apicurio/registry/storage/RegistryStorage.java @@ -42,6 +42,7 @@ import io.apicurio.registry.storage.error.VersionNotFoundException; import io.apicurio.registry.storage.impexp.EntityInputStream; import io.apicurio.registry.types.RuleType; +import io.apicurio.registry.utils.impexp.ArtifactEntity; import io.apicurio.registry.utils.impexp.ArtifactRuleEntity; import io.apicurio.registry.utils.impexp.ArtifactVersionEntity; import io.apicurio.registry.utils.impexp.BranchEntity; @@ -773,74 +774,39 @@ VersionSearchResultsDto searchVersions(Set filters, OrderBy orderB void resetGlobalId(); - - void resetContentId(); - - void resetCommentId(); long nextContentId(); - - long nextGlobalId(); - - long nextCommentId(); - void importComment(CommentEntity entity); - - void importGroup(GroupEntity entity); - - void importGlobalRule(GlobalRuleEntity entity); - - void importContent(ContentEntity entity); - - + void importArtifact(ArtifactEntity entity); void importArtifactVersion(ArtifactVersionEntity entity); - - void importArtifactRule(ArtifactRuleEntity entity); - - void importBranch(BranchEntity entity); - boolean isContentExists(String contentHash) throws RegistryStorageException; - boolean isArtifactRuleExists(String groupId, String artifactId, RuleType rule) throws RegistryStorageException; - boolean isGlobalRuleExists(RuleType rule) throws RegistryStorageException; - boolean isRoleMappingExists(String principalId); - void updateContentCanonicalHash(String newCanonicalHash, long contentId, String contentHash); - Optional contentIdFromHash(String contentHash); - BranchSearchResultsDto getBranches(GA ga, int offset, int limit); - BranchMetaDataDto createBranch(GA ga, BranchId branchId, String description, List versions); - BranchMetaDataDto getBranchMetaData(GA ga, BranchId branchId); - void updateBranchMetaData(GA ga, BranchId branchId, EditableBranchMetaDataDto dto); - void deleteBranch(GA ga, BranchId branchId); - GAV getBranchTip(GA ga, BranchId branchId, RetrievalBehavior behavior); - VersionSearchResultsDto getBranchVersions(GA ga, BranchId branchId, int offset, int limit); - void replaceBranchVersions(GA ga, BranchId branchId, List versions); - void appendVersionToBranch(GA ga, BranchId branchId, VersionId version); /** diff --git a/app/src/main/java/io/apicurio/registry/storage/decorator/ReadOnlyRegistryStorageDecorator.java b/app/src/main/java/io/apicurio/registry/storage/decorator/ReadOnlyRegistryStorageDecorator.java index 68786bafda..f93ba93544 100644 --- a/app/src/main/java/io/apicurio/registry/storage/decorator/ReadOnlyRegistryStorageDecorator.java +++ b/app/src/main/java/io/apicurio/registry/storage/decorator/ReadOnlyRegistryStorageDecorator.java @@ -28,6 +28,7 @@ import io.apicurio.registry.storage.error.RuleNotFoundException; import io.apicurio.registry.storage.impexp.EntityInputStream; import io.apicurio.registry.types.RuleType; +import io.apicurio.registry.utils.impexp.ArtifactEntity; import io.apicurio.registry.utils.impexp.BranchEntity; import io.apicurio.registry.utils.impexp.ArtifactRuleEntity; import io.apicurio.registry.utils.impexp.ArtifactVersionEntity; @@ -371,6 +372,13 @@ public void importArtifactVersion(ArtifactVersionEntity entity) { } + @Override + public void importArtifact(ArtifactEntity entity) { + checkReadOnly(); + delegate.importArtifact(entity); + } + + @Override public void importArtifactRule(ArtifactRuleEntity entity) { checkReadOnly(); diff --git a/app/src/main/java/io/apicurio/registry/storage/decorator/RegistryStorageDecoratorBase.java b/app/src/main/java/io/apicurio/registry/storage/decorator/RegistryStorageDecoratorBase.java index 658b587939..307d3c004d 100644 --- a/app/src/main/java/io/apicurio/registry/storage/decorator/RegistryStorageDecoratorBase.java +++ b/app/src/main/java/io/apicurio/registry/storage/decorator/RegistryStorageDecoratorBase.java @@ -25,6 +25,7 @@ import io.apicurio.registry.storage.error.VersionNotFoundException; import io.apicurio.registry.storage.impexp.EntityInputStream; import io.apicurio.registry.types.RuleType; +import io.apicurio.registry.utils.impexp.ArtifactEntity; import io.apicurio.registry.utils.impexp.BranchEntity; import io.apicurio.registry.utils.impexp.ArtifactRuleEntity; import io.apicurio.registry.utils.impexp.ArtifactVersionEntity; @@ -292,6 +293,10 @@ public void importArtifactVersion(ArtifactVersionEntity entity) { delegate.importArtifactVersion(entity); } + @Override + public void importArtifact(ArtifactEntity entity) { + delegate.importArtifact(entity); + } @Override public void importArtifactRule(ArtifactRuleEntity entity) { diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/gitops/AbstractReadOnlyRegistryStorage.java b/app/src/main/java/io/apicurio/registry/storage/impl/gitops/AbstractReadOnlyRegistryStorage.java index 7f05a731d6..185c22fea7 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/gitops/AbstractReadOnlyRegistryStorage.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/gitops/AbstractReadOnlyRegistryStorage.java @@ -21,6 +21,7 @@ import io.apicurio.registry.storage.error.RegistryStorageException; import io.apicurio.registry.storage.impexp.EntityInputStream; import io.apicurio.registry.types.RuleType; +import io.apicurio.registry.utils.impexp.ArtifactEntity; import io.apicurio.registry.utils.impexp.BranchEntity; import io.apicurio.registry.utils.impexp.ArtifactRuleEntity; import io.apicurio.registry.utils.impexp.ArtifactVersionEntity; @@ -293,6 +294,10 @@ public void importArtifactVersion(ArtifactVersionEntity entity) { readOnlyViolation(); } + @Override + public void importArtifact(ArtifactEntity entity) { + readOnlyViolation(); + } @Override public void importArtifactRule(ArtifactRuleEntity entity) { diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/gitops/GitManager.java b/app/src/main/java/io/apicurio/registry/storage/impl/gitops/GitManager.java index 5f01bd18ae..11d32bb597 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/gitops/GitManager.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/gitops/GitManager.java @@ -3,6 +3,7 @@ import io.apicurio.common.apps.config.DynamicConfigPropertyDto; import io.apicurio.registry.content.TypedContent; +import io.apicurio.registry.content.util.ContentTypeUtil; import io.apicurio.registry.storage.impl.gitops.model.GitFile; import io.apicurio.registry.storage.impl.gitops.model.Type; import io.apicurio.registry.storage.impl.gitops.model.v0.Artifact; @@ -16,7 +17,7 @@ import io.apicurio.registry.types.ContentTypes; import io.apicurio.registry.types.RuleType; import io.apicurio.registry.types.VersionState; -import io.apicurio.registry.content.util.ContentTypeUtil; +import io.apicurio.registry.utils.impexp.ArtifactEntity; import io.apicurio.registry.utils.impexp.ArtifactRuleEntity; import io.apicurio.registry.utils.impexp.ArtifactVersionEntity; import io.apicurio.registry.utils.impexp.ContentEntity; @@ -261,9 +262,11 @@ private void processGlobalRules(ProcessingState state) { private void processArtifact(ProcessingState state, GitFile artifactFile, Artifact artifact) { + boolean artifactImported = false; + String artifactType; + var group = processGroupRef(state, artifact.getGroupId()); if (group != null) { - List versions = artifact.getVersions(); for (int i = 0; i < versions.size(); i++) { Version version = versions.get(i); @@ -275,17 +278,27 @@ private void processArtifact(ProcessingState state, GitFile artifactFile, Artifa e.globalId = version.getGlobalId(); e.state = VersionState.ENABLED; e.createdOn = state.getUpdatedCommit().getCommitTime(); + e.modifiedOn = state.getUpdatedCommit().getCommitTime(); // TODO name, description, labels var content = processContent(state, artifactFile, version.getContentFile()); if (content != null) { - - e.artifactType = content.getArtifactType(); + artifactType = content.getArtifactType(); e.contentId = content.getId(); + if (!artifactImported) { + ArtifactEntity artifactEntity = new ArtifactEntity(); + artifactEntity.groupId = artifact.getGroupId(); + artifactEntity.artifactId = artifact.getId(); + artifactEntity.artifactType = artifactType; + artifactEntity.createdOn = state.getUpdatedCommit().getCommitTime(); + artifactEntity.modifiedOn = state.getUpdatedCommit().getCommitTime(); + state.getStorage().importArtifact(artifactEntity); + artifactImported = true; + } + log.debug("Importing {}", e); state.getStorage().importArtifactVersion(e); - } else { state.recordError("Could not import content for artifact version %s.", artifact.getGroupId() + ":" + artifact.getId() + ":" + version.getId()); diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/KafkaSqlRegistryStorage.java b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/KafkaSqlRegistryStorage.java index 14568c6a1d..d1b42aafca 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/KafkaSqlRegistryStorage.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/KafkaSqlRegistryStorage.java @@ -30,6 +30,7 @@ import io.apicurio.registry.storage.importing.SqlDataImporter; import io.apicurio.registry.types.RuleType; import io.apicurio.registry.utils.ConcurrentUtil; +import io.apicurio.registry.utils.impexp.ArtifactEntity; import io.apicurio.registry.utils.impexp.BranchEntity; import io.apicurio.registry.utils.impexp.ArtifactRuleEntity; import io.apicurio.registry.utils.impexp.ArtifactVersionEntity; @@ -769,6 +770,13 @@ public void importArtifactVersion(ArtifactVersionEntity entity) { coordinator.waitForResponse(uuid); } + @Override + public void importArtifact(ArtifactEntity entity) { + var message = new ImportArtifact1Message(entity); + var uuid = ConcurrentUtil.get(submitter.submitMessage(message)); + coordinator.waitForResponse(uuid); + } + /** * @see io.apicurio.registry.storage.RegistryStorage#importArtifactRule(io.apicurio.registry.utils.impexp.ArtifactRuleEntity) */ diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/ImportArtifact1Message.java b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/ImportArtifact1Message.java new file mode 100644 index 0000000000..2a74d37cce --- /dev/null +++ b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/messages/ImportArtifact1Message.java @@ -0,0 +1,34 @@ +package io.apicurio.registry.storage.impl.kafkasql.messages; + +import io.apicurio.registry.storage.RegistryStorage; +import io.apicurio.registry.storage.impl.kafkasql.AbstractMessage; +import io.apicurio.registry.utils.impexp.ArtifactEntity; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Getter +@Setter +@EqualsAndHashCode(callSuper = false) +@ToString +public class ImportArtifact1Message extends AbstractMessage { + + private ArtifactEntity entity; + + /** + * @see io.apicurio.registry.storage.impl.kafkasql.KafkaSqlMessage#dispatchTo(RegistryStorage) + */ + @Override + public Object dispatchTo(RegistryStorage storage) { + storage.importArtifact(entity); + return null; + } + +} diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/AbstractSqlRegistryStorage.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/AbstractSqlRegistryStorage.java index 71b1320783..c6ca90204e 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/AbstractSqlRegistryStorage.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/AbstractSqlRegistryStorage.java @@ -66,6 +66,7 @@ import io.apicurio.registry.storage.impl.sql.jdb.Handle; import io.apicurio.registry.storage.impl.sql.jdb.Query; import io.apicurio.registry.storage.impl.sql.jdb.RowMapper; +import io.apicurio.registry.storage.impl.sql.mappers.ArtifactEntityMapper; import io.apicurio.registry.storage.impl.sql.mappers.ArtifactMetaDataDtoMapper; import io.apicurio.registry.storage.impl.sql.mappers.ArtifactReferenceDtoMapper; import io.apicurio.registry.storage.impl.sql.mappers.ArtifactRuleEntityMapper; @@ -97,6 +98,7 @@ import io.apicurio.registry.utils.DtoUtil; import io.apicurio.registry.utils.IoUtil; import io.apicurio.registry.utils.StringUtil; +import io.apicurio.registry.utils.impexp.ArtifactEntity; import io.apicurio.registry.utils.impexp.ArtifactRuleEntity; import io.apicurio.registry.utils.impexp.ArtifactVersionEntity; import io.apicurio.registry.utils.impexp.BranchEntity; @@ -586,8 +588,10 @@ private ArtifactVersionMetaDataDto createArtifactVersionRaw(Handle handle, boole .bind(6, limitStr(metaData.getDescription(), 1024, true)) .bind(7, owner) .bind(8, createdOn) - .bind(9, labelsStr) - .bind(10, contentId) + .bind(9, owner) + .bind(10, createdOn) + .bind(11, labelsStr) + .bind(12, contentId) .execute(); gav = new GAV(groupId, artifactId, finalVersion1); @@ -605,8 +609,10 @@ private ArtifactVersionMetaDataDto createArtifactVersionRaw(Handle handle, boole .bind(8, limitStr(metaData.getDescription(), 1024, true)) .bind(9, owner) .bind(10, createdOn) - .bind(11, labelsStr) - .bind(12, contentId) + .bind(11, owner) + .bind(12, createdOn) + .bind(13, labelsStr) + .bind(14, contentId) .execute(); // If version is null, update the row we just inserted to set the version to the generated versionOrder @@ -2249,6 +2255,20 @@ public void exportData(Function handler) throws RegistryStorageExc return null; }); + // Export all artifacts + ///////////////////////////////// + handles.withHandle(handle -> { + Stream stream = handle.createQuery(sqlStatements.exportArtifacts()) + .setFetchSize(50) + .map(ArtifactEntityMapper.instance) + .stream(); + // Process and then close the stream. + try (stream) { + stream.forEach(handler::apply); + } + return null; + }); + // Export all artifact versions ///////////////////////////////// handles.withHandle(handle -> { @@ -2943,10 +2963,8 @@ private void resetSequence(String sequenceName, String sqlMaxIdFromTable) { @Override @Transactional public void importArtifactRule(ArtifactRuleEntity entity) { - handles.withHandleNoException(handle -> { if (isArtifactExists(entity.groupId, entity.artifactId)) { - handle.createUpdate(sqlStatements.importArtifactRule()) .bind(0, normalizeGroupId(entity.groupId)) .bind(1, entity.artifactId) @@ -2960,12 +2978,9 @@ public void importArtifactRule(ArtifactRuleEntity entity) { }); } - @Override - @Transactional - public void importArtifactVersion(ArtifactVersionEntity entity) { + public void importArtifact(ArtifactEntity entity) { handles.withHandleNoException(handle -> { - if (!isArtifactExists(entity.groupId, entity.artifactId)) { String labelsStr = SqlUtil.serializeLabels(entity.labels); handle.createUpdate(sqlStatements.insertArtifact()) @@ -2974,16 +2989,42 @@ public void importArtifactVersion(ArtifactVersionEntity entity) { .bind(2, entity.artifactType) .bind(3, entity.owner) .bind(4, new Date(entity.createdOn)) - .bind(5, entity.owner) // modifiedBy - .bind(6, new Date(entity.createdOn)) // modifiedOn + .bind(5, entity.modifiedBy) + .bind(6, new Date(entity.modifiedOn)) .bind(7, entity.name) .bind(8, entity.description) - .bind(9, labelsStr) + .bind(9, labelsStr) .execute(); + + // Insert labels into the "artifact_labels" table + if (entity.labels != null && !entity.labels.isEmpty()) { + entity.labels.forEach((k, v) -> { + handle.createUpdate(sqlStatements.insertArtifactLabel()) + .bind(0, normalizeGroupId(entity.groupId)) + .bind(1, entity.artifactId) + .bind(2, k.toLowerCase()) + .bind(3, v.toLowerCase()) + .execute(); + }); + } + } else { + throw new ArtifactAlreadyExistsException(entity.groupId, entity.artifactId); } + return null; + }); + } + @Override + @Transactional + public void importArtifactVersion(ArtifactVersionEntity entity) { + handles.withHandleNoException(handle -> { + if (!isArtifactExists(entity.groupId, entity.artifactId)) { + throw new ArtifactNotFoundException(entity.groupId, entity.artifactId); + } + if (isGlobalIdExists(entity.globalId)) { + throw new VersionAlreadyExistsException(entity.globalId); + } if (!isGlobalIdExists(entity.globalId)) { - handle.createUpdate(sqlStatements.importArtifactVersion()) .bind(0, entity.globalId) .bind(1, normalizeGroupId(entity.groupId)) @@ -2995,8 +3036,10 @@ public void importArtifactVersion(ArtifactVersionEntity entity) { .bind(7, entity.description) .bind(8, entity.owner) .bind(9, new Date(entity.createdOn)) - .bind(10, SqlUtil.serializeLabels(entity.labels)) - .bind(11, entity.contentId) + .bind(10, entity.modifiedBy) + .bind(11, new Date(entity.modifiedOn)) + .bind(12, SqlUtil.serializeLabels(entity.labels)) + .bind(13, entity.contentId) .execute(); // Insert labels into the "version_labels" table @@ -3070,6 +3113,18 @@ public void importGroup(GroupEntity entity) { .bind(6, new Date(entity.modifiedOn)) .bind(7, SqlUtil.serializeLabels(entity.labels)) .execute(); + + // Insert labels into the "group_labels" table + if (entity.labels != null && !entity.labels.isEmpty()) { + entity.labels.forEach((k, v) -> { + handle.createUpdate(sqlStatements.insertGroupLabel()) + .bind(0, normalizeGroupId(entity.groupId)) + .bind(1, k.toLowerCase()) + .bind(2, v.toLowerCase()) + .execute(); + }); + } + return null; }); } else { @@ -3769,24 +3824,20 @@ public void importBranch(BranchEntity entity) { var ga = entity.toGA(); var branchId = entity.toBranchId(); handles.withHandleNoException(handle -> { - try { - handle.createUpdate(sqlStatements.insertBranch()) - .bind(0, ga.getRawGroupId()) - .bind(1, ga.getRawArtifactId()) - .bind(2, branchId.getRawBranchId()) - .bind(3, entity.description) - .bind(4, entity.userDefined) - .bind(5, entity.owner) - .bind(6, entity.createdOn) - .bind(7, entity.modifiedBy) - .bind(8, entity.modifiedOn) - .execute(); - } catch (Exception ex) { - if (sqlStatements.isForeignKeyViolation(ex)) { - throw new ArtifactNotFoundException(ga.getRawGroupIdWithDefaultString(), ga.getRawArtifactId()); - } - throw ex; + if (!isArtifactExists(entity.groupId, entity.artifactId)) { + throw new ArtifactNotFoundException(ga.getRawGroupIdWithDefaultString(), ga.getRawArtifactId()); } + handle.createUpdate(sqlStatements.insertBranch()) + .bind(0, ga.getRawGroupId()) + .bind(1, ga.getRawArtifactId()) + .bind(2, branchId.getRawBranchId()) + .bind(3, entity.description) + .bind(4, entity.userDefined) + .bind(5, entity.owner) + .bind(6, new Date(entity.createdOn)) + .bind(7, entity.modifiedBy) + .bind(8, new Date(entity.modifiedOn)) + .execute(); // Append each of the versions onto the branch if (entity.versions != null) { diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/CommonSqlStatements.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/CommonSqlStatements.java index 58645e0d3e..da689a57e6 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/CommonSqlStatements.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/CommonSqlStatements.java @@ -133,10 +133,12 @@ public String insertVersion(boolean firstVersion) { // TODO: Use COALESCE to unify into a single query. String query; if (firstVersion) { - query = "INSERT INTO versions (globalId, groupId, artifactId, version, versionOrder, state, name, description, owner, createdOn, labels, contentId) VALUES (?, ?, ?, ?, 1, ?, ?, ?, ?, ?, ?, ?)"; + query = "INSERT INTO versions (globalId, groupId, artifactId, version, versionOrder, state, name, description, owner, createdOn, modifiedBy, modifiedOn, labels, contentId)" + + " VALUES (?, ?, ?, ?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; } else { // NOTE: Duplicated value of versionOrder is prevented by UQ_versions_2 constraint. - query = "INSERT INTO versions (globalId, groupId, artifactId, version, versionOrder, state, name, description, owner, createdOn, labels, contentId) VALUES (?, ?, ?, ?, (SELECT MAX(versionOrder) + 1 FROM versions WHERE groupId = ? AND artifactId = ?), ?, ?, ?, ?, ?, ?, ?)"; + query = "INSERT INTO versions (globalId, groupId, artifactId, version, versionOrder, state, name, description, owner, createdOn, modifiedBy, modifiedOn, labels, contentId)" + + " VALUES (?, ?, ?, ?, (SELECT MAX(versionOrder) + 1 FROM versions WHERE groupId = ? AND artifactId = ?), ?, ?, ?, ?, ?, ?, ?, ?, ?)"; } return query; } @@ -684,14 +686,17 @@ public String exportArtifactRules() { return "SELECT * FROM artifact_rules r"; } + @Override + public String exportArtifacts() { + return "SELECT * FROM artifacts"; + } + /** * @see io.apicurio.registry.storage.impl.sql.SqlStatements#exportArtifactVersions() */ @Override public String exportArtifactVersions() { - return "SELECT v.*, a.type " + - "FROM versions v " + - "JOIN artifacts a ON v.groupId = a.groupId AND v.artifactId = a.artifactId "; + return "SELECT * FROM versions"; } /** @@ -746,8 +751,8 @@ public String importArtifactRule() { */ @Override public String importArtifactVersion() { - return "INSERT INTO versions (globalId, groupId, artifactId, version, versionOrder, state, name, description, owner, createdOn, labels, contentId) " - + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + return "INSERT INTO versions (globalId, groupId, artifactId, version, versionOrder, state, name, description, owner, createdOn, modifiedBy, modifiedOn, labels, contentId) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; } /** diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/SqlStatements.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/SqlStatements.java index 239b536df8..4f519f1462 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/SqlStatements.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/SqlStatements.java @@ -463,6 +463,8 @@ public interface SqlStatements { public String exportVersionComments(); + public String exportArtifacts(); + public String exportArtifactVersions(); public String exportBranches(); @@ -591,5 +593,4 @@ public interface SqlStatements { public String createDataSnapshot(); public String restoreFromSnapshot(); - } diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/ArtifactEntityMapper.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/ArtifactEntityMapper.java new file mode 100644 index 0000000000..40b0507b9f --- /dev/null +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/ArtifactEntityMapper.java @@ -0,0 +1,39 @@ +package io.apicurio.registry.storage.impl.sql.mappers; + +import io.apicurio.registry.storage.impl.sql.SqlUtil; +import io.apicurio.registry.storage.impl.sql.jdb.RowMapper; +import io.apicurio.registry.utils.impexp.ArtifactEntity; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class ArtifactEntityMapper implements RowMapper { + + public static final ArtifactEntityMapper instance = new ArtifactEntityMapper(); + + /** + * Constructor. + */ + private ArtifactEntityMapper() { + } + + /** + * @see RowMapper#map(ResultSet) + */ + @Override + public ArtifactEntity map(ResultSet rs) throws SQLException { + ArtifactEntity entity = new ArtifactEntity(); + entity.groupId = SqlUtil.denormalizeGroupId(rs.getString("groupId")); + entity.artifactId = rs.getString("artifactId"); + entity.artifactType = rs.getString("type"); + entity.name = rs.getString("name"); + entity.description = rs.getString("description"); + entity.labels = SqlUtil.deserializeLabels(rs.getString("labels")); + entity.owner = rs.getString("owner"); + entity.createdOn = rs.getTimestamp("createdOn").getTime(); + entity.modifiedBy = rs.getString("modifiedBy"); + entity.modifiedOn = rs.getTimestamp("modifiedOn").getTime(); + return entity; + } + +} \ No newline at end of file diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/ArtifactVersionEntityMapper.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/ArtifactVersionEntityMapper.java index 9c3811f940..67928a2082 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/ArtifactVersionEntityMapper.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/ArtifactVersionEntityMapper.java @@ -1,13 +1,13 @@ package io.apicurio.registry.storage.impl.sql.mappers; -import java.sql.ResultSet; -import java.sql.SQLException; - import io.apicurio.registry.storage.impl.sql.SqlUtil; import io.apicurio.registry.storage.impl.sql.jdb.RowMapper; import io.apicurio.registry.types.VersionState; import io.apicurio.registry.utils.impexp.ArtifactVersionEntity; +import java.sql.ResultSet; +import java.sql.SQLException; + public class ArtifactVersionEntityMapper implements RowMapper { public static final ArtifactVersionEntityMapper instance = new ArtifactVersionEntityMapper(); @@ -33,10 +33,11 @@ public ArtifactVersionEntity map(ResultSet rs) throws SQLException { entity.description = rs.getString("description"); entity.owner = rs.getString("owner"); entity.createdOn = rs.getTimestamp("createdOn").getTime(); + entity.modifiedBy = rs.getString("modifiedBy"); + entity.modifiedOn = rs.getTimestamp("modifiedOn").getTime(); entity.state = VersionState.valueOf(rs.getString("state")); entity.labels = SqlUtil.deserializeLabels(rs.getString("labels")); entity.contentId = rs.getLong("contentId"); - entity.artifactType = rs.getString("type"); return entity; } diff --git a/app/src/main/java/io/apicurio/registry/storage/importing/AbstractDataImporter.java b/app/src/main/java/io/apicurio/registry/storage/importing/AbstractDataImporter.java index 8e6a2d0f33..ea3c85dbe9 100644 --- a/app/src/main/java/io/apicurio/registry/storage/importing/AbstractDataImporter.java +++ b/app/src/main/java/io/apicurio/registry/storage/importing/AbstractDataImporter.java @@ -21,6 +21,9 @@ public void importEntity(Entity entity) { case ArtifactRule: importArtifactRule((ArtifactRuleEntity) entity); break; + case Artifact: + importArtifact((ArtifactEntity) entity); + break; case ArtifactVersion: importArtifactVersion((ArtifactVersionEntity) entity); break; @@ -57,6 +60,8 @@ public void importEntity(Entity entity) { protected abstract void importArtifactRule(ArtifactRuleEntity entity); + protected abstract void importArtifact(ArtifactEntity entity); + protected abstract void importArtifactVersion(ArtifactVersionEntity entity); protected abstract void importComment(CommentEntity entity); diff --git a/app/src/main/java/io/apicurio/registry/storage/importing/SqlDataImporter.java b/app/src/main/java/io/apicurio/registry/storage/importing/SqlDataImporter.java index 7294681039..abf7895fe0 100644 --- a/app/src/main/java/io/apicurio/registry/storage/importing/SqlDataImporter.java +++ b/app/src/main/java/io/apicurio/registry/storage/importing/SqlDataImporter.java @@ -63,6 +63,15 @@ public void importArtifactRule(ArtifactRuleEntity entity) { } } + @Override + protected void importArtifact(ArtifactEntity entity) { + try { + storage.importArtifact(entity); + log.debug("Artifact imported successfully: {}", entity); + } catch (Exception ex) { + log.warn("Failed to import artifact {} / {}: {}", entity.groupId, entity.artifactId, ex.getMessage()); + } + } @Override public void importArtifactVersion(ArtifactVersionEntity entity) { @@ -203,19 +212,12 @@ public void importComment(CommentEntity entity) { @Override protected void importBranch(BranchEntity entity) { -// try { -// var gav = entity.toGAV(); -// if (!gavDone.contains(gav)) { -// // The version hasn't been imported yet. Need to wait for it. -// artifactBranchesWaitingForVersion.computeIfAbsent(gav, _ignored -> new ArrayList<>()) -// .add(entity); -// } else { -// storage.importBranch(entity); -// log.debug("Artifact branch imported successfully: {}", entity); -// } -// } catch (Exception ex) { -// log.warn("Failed to import artifact branch {}: {}", entity, ex.getMessage()); -// } + try { + storage.importBranch(entity); + log.debug("Branch imported successfully: {}", entity); + } catch (Exception ex) { + log.warn("Failed to import branch {}: {}", entity, ex.getMessage()); + } } /** diff --git a/app/src/main/resources/io/apicurio/registry/storage/impl/sql/h2.ddl b/app/src/main/resources/io/apicurio/registry/storage/impl/sql/h2.ddl index 32a8e52d95..705d485872 100644 --- a/app/src/main/resources/io/apicurio/registry/storage/impl/sql/h2.ddl +++ b/app/src/main/resources/io/apicurio/registry/storage/impl/sql/h2.ddl @@ -66,7 +66,7 @@ ALTER TABLE artifact_rules ADD PRIMARY KEY (groupId, artifactId, type); -- The "versionOrder" field is needed to generate "version" when it is not provided. -- It contains the same information as the "branchOrder" in the "latest" branch, but we cannot use it because of a chicken-and-egg problem. -- At least it is no longer confusingly called "versionId". The "versionOrder" field should not be used for any other purpose. -CREATE TABLE versions (globalId BIGINT NOT NULL, groupId VARCHAR(512) NOT NULL, artifactId VARCHAR(512) NOT NULL, version VARCHAR(256), versionOrder INT NOT NULL, state VARCHAR(64) NOT NULL, name VARCHAR(512), description VARCHAR(1024), owner VARCHAR(256), createdOn TIMESTAMP WITHOUT TIME ZONE NOT NULL, labels TEXT, contentId BIGINT NOT NULL); +CREATE TABLE versions (globalId BIGINT NOT NULL, groupId VARCHAR(512) NOT NULL, artifactId VARCHAR(512) NOT NULL, version VARCHAR(256), versionOrder INT NOT NULL, state VARCHAR(64) NOT NULL, name VARCHAR(512), description VARCHAR(1024), owner VARCHAR(256), createdOn TIMESTAMP WITHOUT TIME ZONE NOT NULL, modifiedBy VARCHAR(256), modifiedOn TIMESTAMP WITHOUT TIME ZONE NOT NULL, labels TEXT, contentId BIGINT NOT NULL); ALTER TABLE versions ADD PRIMARY KEY (globalId); ALTER TABLE versions ADD CONSTRAINT UQ_versions_1 UNIQUE (groupId, artifactId, version); ALTER TABLE versions ADD CONSTRAINT UQ_versions_2 UNIQUE (globalId, versionOrder); diff --git a/app/src/main/resources/io/apicurio/registry/storage/impl/sql/mssql.ddl b/app/src/main/resources/io/apicurio/registry/storage/impl/sql/mssql.ddl index ebc7e17565..c176b945c7 100644 --- a/app/src/main/resources/io/apicurio/registry/storage/impl/sql/mssql.ddl +++ b/app/src/main/resources/io/apicurio/registry/storage/impl/sql/mssql.ddl @@ -66,7 +66,7 @@ ALTER TABLE artifact_rules ADD PRIMARY KEY (groupId, artifactId, type); -- The "versionOrder" field is needed to generate "version" when it is not provided. -- It contains the same information as the "branchOrder" in the "latest" branch, but we cannot use it because of a chicken-and-egg problem. -- At least it is no longer confusingly called "versionId". The "versionOrder" field should not be used for any other purpose. -CREATE TABLE versions (globalId BIGINT NOT NULL, groupId NVARCHAR(512) NOT NULL, artifactId NVARCHAR(512) NOT NULL, version NVARCHAR(256), versionOrder INT NOT NULL, state NVARCHAR(64) NOT NULL, name NVARCHAR(512), description NVARCHAR(1024), owner NVARCHAR(256), createdOn DATETIME2(6) NOT NULL, labels TEXT, contentId BIGINT NOT NULL); +CREATE TABLE versions (globalId BIGINT NOT NULL, groupId NVARCHAR(512) NOT NULL, artifactId NVARCHAR(512) NOT NULL, version NVARCHAR(256), versionOrder INT NOT NULL, state NVARCHAR(64) NOT NULL, name NVARCHAR(512), description NVARCHAR(1024), owner NVARCHAR(256), createdOn DATETIME2(6) NOT NULL, modifiedBy NVARCHAR(256), modifiedOn DATETIME2(6) NOT NULL, labels TEXT, contentId BIGINT NOT NULL); ALTER TABLE versions ADD PRIMARY KEY (globalId); ALTER TABLE versions ADD CONSTRAINT UQ_versions_1 UNIQUE (groupId, artifactId, version); ALTER TABLE versions ADD CONSTRAINT UQ_versions_2 UNIQUE (globalId, versionOrder); diff --git a/app/src/main/resources/io/apicurio/registry/storage/impl/sql/postgresql.ddl b/app/src/main/resources/io/apicurio/registry/storage/impl/sql/postgresql.ddl index 0c60cb6166..7d4894eed9 100644 --- a/app/src/main/resources/io/apicurio/registry/storage/impl/sql/postgresql.ddl +++ b/app/src/main/resources/io/apicurio/registry/storage/impl/sql/postgresql.ddl @@ -66,7 +66,7 @@ ALTER TABLE artifact_rules ADD PRIMARY KEY (groupId, artifactId, type); -- The "versionOrder" field is needed to generate "version" when it is not provided. -- It contains the same information as the "branchOrder" in the "latest" branch, but we cannot use it because of a chicken-and-egg problem. -- At least it is no longer confusingly called "versionId". The "versionOrder" field should not be used for any other purpose. -CREATE TABLE versions (globalId BIGINT NOT NULL, groupId VARCHAR(512) NOT NULL, artifactId VARCHAR(512) NOT NULL, version VARCHAR(256), versionOrder INT NOT NULL, state VARCHAR(64) NOT NULL, name VARCHAR(512), description VARCHAR(1024), owner VARCHAR(256), createdOn TIMESTAMP WITHOUT TIME ZONE NOT NULL, labels TEXT, contentId BIGINT NOT NULL); +CREATE TABLE versions (globalId BIGINT NOT NULL, groupId VARCHAR(512) NOT NULL, artifactId VARCHAR(512) NOT NULL, version VARCHAR(256), versionOrder INT NOT NULL, state VARCHAR(64) NOT NULL, name VARCHAR(512), description VARCHAR(1024), owner VARCHAR(256), createdOn TIMESTAMP WITHOUT TIME ZONE NOT NULL, modifiedBy VARCHAR(256), modifiedOn TIMESTAMP WITHOUT TIME ZONE NOT NULL, labels TEXT, contentId BIGINT NOT NULL); ALTER TABLE versions ADD PRIMARY KEY (globalId); ALTER TABLE versions ADD CONSTRAINT UQ_versions_1 UNIQUE (groupId, artifactId, version); ALTER TABLE versions ADD CONSTRAINT UQ_versions_2 UNIQUE (globalId, versionOrder); diff --git a/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/ImportExportTest.java b/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/ImportExportTest.java new file mode 100644 index 0000000000..26e40bcab4 --- /dev/null +++ b/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/ImportExportTest.java @@ -0,0 +1,314 @@ +package io.apicurio.registry.noprofile.rest.v3; + +import io.apicurio.registry.AbstractResourceTestBase; +import io.apicurio.registry.rest.client.models.ArtifactMetaData; +import io.apicurio.registry.rest.client.models.ArtifactSearchResults; +import io.apicurio.registry.rest.client.models.ArtifactSortBy; +import io.apicurio.registry.rest.client.models.BranchMetaData; +import io.apicurio.registry.rest.client.models.BranchSearchResults; +import io.apicurio.registry.rest.client.models.CreateArtifact; +import io.apicurio.registry.rest.client.models.CreateBranch; +import io.apicurio.registry.rest.client.models.CreateGroup; +import io.apicurio.registry.rest.client.models.CreateRule; +import io.apicurio.registry.rest.client.models.DownloadRef; +import io.apicurio.registry.rest.client.models.EditableArtifactMetaData; +import io.apicurio.registry.rest.client.models.EditableVersionMetaData; +import io.apicurio.registry.rest.client.models.GroupSearchResults; +import io.apicurio.registry.rest.client.models.GroupSortBy; +import io.apicurio.registry.rest.client.models.Labels; +import io.apicurio.registry.rest.client.models.Rule; +import io.apicurio.registry.rest.client.models.RuleType; +import io.apicurio.registry.rest.client.models.VersionMetaData; +import io.apicurio.registry.rest.client.models.VersionSearchResults; +import io.apicurio.registry.rules.integrity.IntegrityLevel; +import io.apicurio.registry.rules.validity.ValidityLevel; +import io.apicurio.registry.storage.RegistryStorage; +import io.apicurio.registry.types.ArtifactType; +import io.apicurio.registry.types.ContentTypes; +import io.apicurio.registry.types.Current; +import io.quarkus.test.junit.QuarkusTest; +import jakarta.inject.Inject; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.nio.file.Files; +import java.util.Enumeration; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; + +@QuarkusTest +public class ImportExportTest extends AbstractResourceTestBase { + + @Inject + @Current + RegistryStorage storage; + + @Test + public void testExportImport() throws Exception { + /** + * Delete all the data. + */ + storage.deleteAllUserData(); + + /** + * Populate with new data. + */ + + String groupId = "PrimaryTestGroup"; + + // Create the group + CreateGroup createGroup = new CreateGroup(); + createGroup.setGroupId(groupId); + createGroup.setDescription("The group for the export/import test."); + createGroup.setLabels(new Labels()); + createGroup.getLabels().setAdditionalData(Map.of("isPrimary", "true")); + clientV3.groups().post(createGroup); + + // Create another group + createGroup = new CreateGroup(); + createGroup.setGroupId("SecondaryTestGroup"); + createGroup.setDescription("Another test group that is empty."); + createGroup.setLabels(new Labels()); + createGroup.getLabels().setAdditionalData(Map.of("isPrimary", "false")); + clientV3.groups().post(createGroup); + + // Add an empty artifact + CreateArtifact createArtifact = new CreateArtifact(); + createArtifact.setArtifactId("EmptyArtifact"); + createArtifact.setArtifactType(ArtifactType.JSON); + createArtifact.setName("Empty artifact"); + createArtifact.setDescription("Empty artifact description"); + clientV3.groups().byGroupId(groupId).artifacts().post(createArtifact); + + // Add artifacts + for (int idx = 1; idx <= 10; idx++) { + String artifactId = "TestArtifact-" + idx; + createArtifact(groupId, artifactId, ArtifactType.JSON, "{}", ContentTypes.APPLICATION_JSON); + } + + // Set artifact metadata + for (int idx = 1; idx <= 10; idx++) { + String artifactId = "TestArtifact-" + idx; + EditableArtifactMetaData metaData = new EditableArtifactMetaData(); + metaData.setName("Artifact #" + idx); + metaData.setDescription("This is artifact number: " + idx); + metaData.setLabels(new Labels()); + metaData.getLabels().setAdditionalData(Map.of("artifact-number", "" + idx)); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).put(metaData); + } + + // Add versions to the artifacts + for (int idx = 1; idx <= 10; idx++) { + String artifactId = "TestArtifact-" + idx; + int numExtraVersions = idx - 1; + for (int jdx = 0; jdx < numExtraVersions; jdx++) { + createArtifactVersion(groupId, artifactId, "{\"title\": \"Version " + jdx + "\"}", ContentTypes.APPLICATION_JSON); + } + } + + // Set version metadata + for (int idx = 1; idx <= 10; idx++) { + String artifactId = "TestArtifact-" + idx; + for (int jdx = 0; jdx < idx; jdx++) { + EditableVersionMetaData metaData = new EditableVersionMetaData(); + metaData.setName("Version #" + jdx); + metaData.setDescription("This is version number: " + jdx); + metaData.setLabels(new Labels()); + metaData.getLabels().setAdditionalData(Map.of("artifact-number", "" + idx, "version-number", "" + jdx)); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().byVersionExpression(""+(jdx+1)).put(metaData); + } + } + + // Add some branches + String artifactIdWithBranches = "TestArtifact-5"; + + CreateBranch createBranch = new CreateBranch(); + createBranch.setBranchId("odds"); + createBranch.setDescription("Odd numbered versions"); + createBranch.setVersions(List.of("1", "3", "5")); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactIdWithBranches).branches().post(createBranch); + createBranch = new CreateBranch(); + createBranch.setBranchId("evens"); + createBranch.setDescription("Even numbered versions"); + createBranch.setVersions(List.of("2", "4")); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactIdWithBranches).branches().post(createBranch); + + // Configure some global rules + CreateRule createRule = new CreateRule(); + createRule.setRuleType(RuleType.VALIDITY); + createRule.setConfig(ValidityLevel.FULL.name()); + clientV3.admin().rules().post(createRule); + + // Configure some artifact rules + String artifactIdWithRules = "TestArtifact-7"; + + createRule = new CreateRule(); + createRule.setRuleType(RuleType.VALIDITY); + createRule.setConfig(ValidityLevel.SYNTAX_ONLY.name()); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactIdWithRules).rules().post(createRule); + createRule = new CreateRule(); + createRule.setRuleType(RuleType.INTEGRITY); + createRule.setConfig(IntegrityLevel.FULL.name()); + clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactIdWithRules).rules().post(createRule); + + // Add some comments + // TODO add comments + + /** + * Export the data! + */ + + DownloadRef downloadRef = clientV3.admin().export().get(); + String href = downloadRef.getHref(); + String urlString = String.format("http://localhost:%s%s", testPort, href); + URL url = new URL(urlString); + // TODO save to a file in the 'target' directory? + File tempFile = File.createTempFile(ImportExportTest.class.getSimpleName(), ".zip"); + System.out.println("Temp export file: " + tempFile.toPath()); + downloadTo(url, tempFile); + listFiles(tempFile); + + /** + * Delete all the data. + */ + storage.deleteAllUserData(); + + /** + * Import the data back into the (now empty) registry + */ + try (FileInputStream fis = new FileInputStream(tempFile)) { + clientV3.admin().importEscaped().post(fis, config -> { + config.headers.putIfAbsent("Content-Type", Set.of("application/zip")); + }); + // Clean up the temp file + Files.delete(tempFile.toPath()); + } + + /** + * Assertions! + */ + + // Assert groups + GroupSearchResults groups = clientV3.groups().get(config -> { + config.queryParameters.orderby = GroupSortBy.GroupId; + }); + Assertions.assertEquals(2, groups.getCount()); + Assertions.assertEquals("PrimaryTestGroup", groups.getGroups().get(0).getGroupId()); + Assertions.assertEquals("The group for the export/import test.", groups.getGroups().get(0).getDescription()); + Assertions.assertEquals("SecondaryTestGroup", groups.getGroups().get(1).getGroupId()); + Assertions.assertEquals("Another test group that is empty.", groups.getGroups().get(1).getDescription()); + + // TODO: check group labels (not returned by group search) + + // Assert empty artifact + ArtifactMetaData amd = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId("EmptyArtifact").get(); + Assertions.assertEquals(groupId, amd.getGroupId()); + Assertions.assertEquals("EmptyArtifact", amd.getArtifactId()); + Assertions.assertEquals("Empty artifact", amd.getName()); + Assertions.assertEquals("Empty artifact description", amd.getDescription()); + Assertions.assertEquals(ArtifactType.JSON, amd.getArtifactType()); + + // Assert artifacts + ArtifactSearchResults artifacts = clientV3.groups().byGroupId(groupId).artifacts().get(config -> { + config.queryParameters.orderby = ArtifactSortBy.ArtifactId; + }); + Assertions.assertEquals(11, artifacts.getCount()); + for (int idx = 1; idx <= 10; idx++) { + String artifactId = "TestArtifact-" + idx; + amd = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).get(); + Assertions.assertEquals(artifactId, amd.getArtifactId()); + Assertions.assertEquals("Artifact #" + idx, amd.getName()); + Assertions.assertEquals("This is artifact number: " + idx, amd.getDescription()); + Assertions.assertEquals(Map.of("artifact-number", "" + idx), amd.getLabels().getAdditionalData()); + Assertions.assertEquals(ArtifactType.JSON, amd.getArtifactType()); + } + + // Assert versions + for (int idx = 1; idx <= 10; idx++) { + String artifactId = "TestArtifact-" + idx; + int expectedNumberOfVersions = idx; + + // Check the artifact has the correct # of versions + VersionSearchResults versions = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().get(); + Assertions.assertEquals(expectedNumberOfVersions, versions.getCount()); + + // Check each version + for (int jdx = 0; jdx < idx; jdx++) { + String version = "" + (jdx + 1); + VersionMetaData vmd = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().byVersionExpression(version).get(); + Assertions.assertEquals(groupId, vmd.getGroupId()); + Assertions.assertEquals(artifactId, vmd.getArtifactId()); + Assertions.assertEquals(version, vmd.getVersion()); + Assertions.assertEquals("Version #" + jdx, vmd.getName()); + Assertions.assertEquals("This is version number: " + jdx, vmd.getDescription()); + } + } + + // Assert branches + BranchSearchResults branches = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactIdWithBranches).branches().get(); + Assertions.assertEquals(3, branches.getCount()); + Assertions.assertEquals("evens", branches.getBranches().get(0).getBranchId()); + Assertions.assertEquals("latest", branches.getBranches().get(1).getBranchId()); + Assertions.assertEquals("odds", branches.getBranches().get(2).getBranchId()); + + BranchMetaData branch = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactIdWithBranches).branches().byBranchId("evens").get(); + Assertions.assertEquals("evens", branch.getBranchId()); + Assertions.assertEquals("Even numbered versions", branch.getDescription()); + Assertions.assertEquals(true, branch.getUserDefined()); + + VersionSearchResults versions = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactIdWithBranches).branches().byBranchId("evens").versions().get(); + Assertions.assertEquals(2, versions.getCount()); + versions = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactIdWithBranches).branches().byBranchId("odds").versions().get(); + Assertions.assertEquals(3, versions.getCount()); + + // Assert global rules + List rules = clientV3.admin().rules().get(); + Assertions.assertEquals(1, rules.size()); + Rule rule = clientV3.admin().rules().byRuleType(RuleType.VALIDITY.name()).get(); + Assertions.assertEquals(ValidityLevel.FULL.name(), rule.getConfig()); + + // Assert artifact rules + rules = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactIdWithRules).rules().get(); + Assertions.assertEquals(2, rules.size()); + rule = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactIdWithRules).rules().byRuleType(RuleType.VALIDITY.name()).get(); + Assertions.assertEquals(ValidityLevel.SYNTAX_ONLY.name(), rule.getConfig()); + rule = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactIdWithRules).rules().byRuleType(RuleType.INTEGRITY.name()).get(); + Assertions.assertEquals(IntegrityLevel.FULL.name(), rule.getConfig()); + + // Assert artifact comments + // TODO add comments + + } + + private static void downloadTo(URL url, File tempFile) { + try (InputStream in = url.openStream()) { + Files.deleteIfExists(tempFile.toPath()); + Files.copy(in, tempFile.toPath()); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + private static void listFiles(File tempFile) { + System.out.println("--- Export ZIP File Listing ---"); + try (ZipFile zipFile = new ZipFile(tempFile)) { + Enumeration entries = zipFile.entries(); + while (entries.hasMoreElements()) { + ZipEntry entry = entries.nextElement(); + System.out.println(entry.getName()); + } + } catch (IOException e) { + e.printStackTrace(); + } + System.out.println("--- Export ZIP File Listing ---"); + } + +} diff --git a/app/src/test/java/io/apicurio/registry/storage/impl/readonly/ReadOnlyRegistryStorageTest.java b/app/src/test/java/io/apicurio/registry/storage/impl/readonly/ReadOnlyRegistryStorageTest.java index 8535505557..5bccdbe30a 100644 --- a/app/src/test/java/io/apicurio/registry/storage/impl/readonly/ReadOnlyRegistryStorageTest.java +++ b/app/src/test/java/io/apicurio/registry/storage/impl/readonly/ReadOnlyRegistryStorageTest.java @@ -104,6 +104,7 @@ public class ReadOnlyRegistryStorageTest { entry("getStaleConfigProperties1", new State(false, s -> s.getStaleConfigProperties(null))), entry("importBranch1", new State(true, s -> s.importBranch(null))), entry("importArtifactRule1", new State(true, s -> s.importArtifactRule(null))), + entry("importArtifact1", new State(true, s -> s.importArtifact(null))), entry("importArtifactVersion1", new State(true, s -> s.importArtifactVersion(null))), entry("importComment1", new State(true, s -> s.importComment(null))), entry("importContent1", new State(true, s -> s.importContent(null))), diff --git a/utils/exportConfluent/src/main/java/io/apicurio/registry/utils/export/Export.java b/utils/exportConfluent/src/main/java/io/apicurio/registry/utils/export/Export.java index 351fd83e39..6148a9abca 100644 --- a/utils/exportConfluent/src/main/java/io/apicurio/registry/utils/export/Export.java +++ b/utils/exportConfluent/src/main/java/io/apicurio/registry/utils/export/Export.java @@ -1,33 +1,13 @@ package io.apicurio.registry.utils.export; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.security.SecureRandom; -import java.util.Collection; -import java.util.Comparator; -import java.util.Date; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.zip.ZipOutputStream; - -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSocketFactory; -import javax.net.ssl.TrustManager; - -import org.apache.commons.codec.digest.DigestUtils; -import org.jboss.logging.Logger; - import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; - import io.apicurio.registry.rest.v3.beans.ArtifactReference; import io.apicurio.registry.types.RuleType; import io.apicurio.registry.types.VersionState; import io.apicurio.registry.utils.IoUtil; import io.apicurio.registry.utils.export.mappers.ArtifactReferenceMapper; +import io.apicurio.registry.utils.impexp.ArtifactEntity; import io.apicurio.registry.utils.impexp.ArtifactRuleEntity; import io.apicurio.registry.utils.impexp.ArtifactVersionEntity; import io.apicurio.registry.utils.impexp.ContentEntity; @@ -35,6 +15,7 @@ import io.apicurio.registry.utils.impexp.GlobalRuleEntity; import io.apicurio.registry.utils.impexp.ManifestEntity; import io.confluent.kafka.schemaregistry.client.CachedSchemaRegistryClient; +import io.confluent.kafka.schemaregistry.client.SchemaMetadata; import io.confluent.kafka.schemaregistry.client.SchemaRegistryClient; import io.confluent.kafka.schemaregistry.client.rest.RestService; import io.confluent.kafka.schemaregistry.client.rest.entities.Schema; @@ -44,6 +25,24 @@ import io.quarkus.runtime.QuarkusApplication; import io.quarkus.runtime.annotations.QuarkusMain; import jakarta.inject.Inject; +import org.apache.commons.codec.digest.DigestUtils; +import org.jboss.logging.Logger; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.security.SecureRandom; +import java.util.Collection; +import java.util.Comparator; +import java.util.Date; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.zip.ZipOutputStream; @QuarkusMain(name = "ConfluentExport") public class Export implements QuarkusApplication { @@ -102,6 +101,8 @@ public int run(String... args) throws Exception { // Export all subjects for (String subject : subjects) { + exportSubject(context, subject); + List versions = context.getSchemaRegistryClient().getAllVersions(subject); versions.sort(Comparator.naturalOrder()); @@ -165,6 +166,24 @@ public SSLSocketFactory getInsecureSSLSocketFactory() { return null; } + public void exportSubject(ExportContext context, String subject) throws RestClientException, IOException { + SchemaMetadata metadata = context.getSchemaRegistryClient().getSchemaMetadata(subject, 1); + + ArtifactEntity artifactEntity = new ArtifactEntity(); + artifactEntity.artifactId = subject; + artifactEntity.artifactType = metadata.getSchemaType(); + artifactEntity.owner = "export-confluent-utility"; + artifactEntity.createdOn = System.currentTimeMillis(); + artifactEntity.modifiedBy = "export-confluent-utility"; + artifactEntity.modifiedOn = System.currentTimeMillis(); + artifactEntity.description = null; + artifactEntity.groupId = null; + artifactEntity.labels = null; + artifactEntity.name = null; + + context.getWriter().writeEntity(artifactEntity); + } + public void exportSubjectVersionWithRefs(ExportContext context, String subject, Integer version) throws RestClientException, IOException { if (context.getExportedSubjectVersions().stream().anyMatch(subjectVersionPair -> subjectVersionPair.is(subject, version))) { return; @@ -210,7 +229,6 @@ public void exportSubjectVersionWithRefs(ExportContext context, String subject, ArtifactVersionEntity versionEntity = new ArtifactVersionEntity(); versionEntity.artifactId = subject; - versionEntity.artifactType = artifactType; versionEntity.contentId = contentId; versionEntity.owner = "export-confluent-utility"; versionEntity.createdOn = System.currentTimeMillis(); @@ -222,6 +240,8 @@ public void exportSubjectVersionWithRefs(ExportContext context, String subject, versionEntity.state = VersionState.ENABLED; versionEntity.version = String.valueOf(metadata.getVersion()); versionEntity.versionOrder = metadata.getVersion(); + versionEntity.modifiedBy = "export-confluent-utility"; + versionEntity.modifiedOn = System.currentTimeMillis(); context.getWriter().writeEntity(versionEntity); } diff --git a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/ArtifactEntity.java b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/ArtifactEntity.java new file mode 100644 index 0000000000..0a44879eb2 --- /dev/null +++ b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/ArtifactEntity.java @@ -0,0 +1,41 @@ +package io.apicurio.registry.utils.impexp; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import io.quarkus.runtime.annotations.RegisterForReflection; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.NoArgsConstructor; +import lombok.ToString; + +import java.util.Map; + +import static lombok.AccessLevel.PRIVATE; + +@Builder +@NoArgsConstructor +@AllArgsConstructor(access = PRIVATE) +@ToString +@RegisterForReflection +@JsonIgnoreProperties({"isLatest"}) +public class ArtifactEntity extends Entity { + + public String groupId; + public String artifactId; + public String artifactType; + public String name; + public String description; + public Map labels; + public String owner; + public long createdOn; + public String modifiedBy; + public long modifiedOn; + + /** + * @see Entity#getEntityType() + */ + @Override + public EntityType getEntityType() { + return EntityType.Artifact; + } + +} diff --git a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/ArtifactVersionEntity.java b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/ArtifactVersionEntity.java index 1dbbfaab6a..35b1d36913 100644 --- a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/ArtifactVersionEntity.java +++ b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/ArtifactVersionEntity.java @@ -1,12 +1,7 @@ package io.apicurio.registry.utils.impexp; -import static lombok.AccessLevel.PRIVATE; - -import java.util.Map; - import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; - import io.apicurio.registry.types.VersionState; import io.quarkus.runtime.annotations.RegisterForReflection; import lombok.AllArgsConstructor; @@ -14,6 +9,10 @@ import lombok.NoArgsConstructor; import lombok.ToString; +import java.util.Map; + +import static lombok.AccessLevel.PRIVATE; + @Builder @NoArgsConstructor @AllArgsConstructor(access = PRIVATE) @@ -30,13 +29,14 @@ public class ArtifactVersionEntity extends Entity { @JsonAlias({"versionId"}) public int versionOrder; - public String artifactType; public VersionState state; public String name; public String description; public String owner; - public long createdOn; public Map labels; + public long createdOn; + public String modifiedBy; + public long modifiedOn; public long contentId; /** diff --git a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityReader.java b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityReader.java index 632ea48236..bf9365951c 100644 --- a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityReader.java +++ b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityReader.java @@ -38,6 +38,8 @@ public Entity readEntity() throws IOException { EntityType entityType = parseEntityType(path); if (entityType != null) { switch (entityType) { + case Artifact: + return readArtifact(entry); case ArtifactRule: return readArtifactRule(entry); case ArtifactVersion: @@ -86,6 +88,10 @@ private GroupEntity readGroup(ZipEntry entry) throws IOException { return readEntry(entry, GroupEntity.class); } + private ArtifactEntity readArtifact(ZipEntry entry) throws IOException { + return this.readEntry(entry, ArtifactEntity.class); + } + private ArtifactVersionEntity readArtifactVersion(ZipEntry entry) throws IOException { return this.readEntry(entry, ArtifactVersionEntity.class); } diff --git a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityWriter.java b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityWriter.java index 257b8cc45e..224f246d87 100644 --- a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityWriter.java +++ b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/EntityWriter.java @@ -40,6 +40,9 @@ public void writeEntity(Entity entity) throws IOException { case Group: writeEntity((GroupEntity) entity); break; + case Artifact: + writeEntity((ArtifactEntity) entity); + break; case ArtifactVersion: writeEntity((ArtifactVersionEntity) entity); break; @@ -86,6 +89,11 @@ private void writeEntity(GroupEntity entity) throws IOException { write(mdEntry, entity, GroupEntity.class); } + private void writeEntity(ArtifactEntity entity) throws IOException { + ZipEntry mdEntry = createZipEntry(EntityType.Artifact, entity.groupId, entity.artifactId, "MetaData", "json"); + write(mdEntry, entity, ArtifactEntity.class); + } + private void writeEntity(ArtifactVersionEntity entity) throws IOException { ZipEntry mdEntry = createZipEntry(EntityType.ArtifactVersion, entity.groupId, entity.artifactId, entity.version, "json"); write(mdEntry, entity, ArtifactVersionEntity.class); diff --git a/utils/importexport/src/test/java/io/apicurio/registry/utils/impexp/EntityReaderTest.java b/utils/importexport/src/test/java/io/apicurio/registry/utils/impexp/EntityReaderTest.java deleted file mode 100644 index da1c88c279..0000000000 --- a/utils/importexport/src/test/java/io/apicurio/registry/utils/impexp/EntityReaderTest.java +++ /dev/null @@ -1,58 +0,0 @@ -package io.apicurio.registry.utils.impexp; - -import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import java.util.zip.ZipInputStream; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -class EntityReaderTest { - - /** - * Test method for {@link io.apicurio.registry.noprofile.rest.v3.impexp.EntityReader#readEntity()}. - */ - @Test - void testReadEntity() throws Exception { - try (InputStream data = resourceToInputStream("export.zip")) { - ZipInputStream zip = new ZipInputStream(data, StandardCharsets.UTF_8); - EntityReader reader = new EntityReader(zip); - Entity entity = null; - - int contentCounter = 0; - int versionCounter = 0; - int globalRuleCounter = 0; - int artyRuleCounter = 0; - - while ( (entity = reader.readEntity()) != null ) { - if (entity instanceof ContentEntity) { - contentCounter++; - } - if (entity instanceof ArtifactVersionEntity) { - versionCounter++; - } - if (entity instanceof ArtifactRuleEntity) { - artyRuleCounter++; - } - if (entity instanceof GlobalRuleEntity) { - globalRuleCounter++; - } - } - - Assertions.assertEquals(1003, contentCounter); - Assertions.assertEquals(5, versionCounter); - Assertions.assertEquals(1, artyRuleCounter); - Assertions.assertEquals(1, globalRuleCounter); - } - } - - /** - * Loads a resource as an input stream. - * @param resourceName the resource name - */ - protected final InputStream resourceToInputStream(String resourceName) { - InputStream stream = getClass().getResourceAsStream(resourceName); - Assertions.assertNotNull(stream, "Resource not found: " + resourceName); - return stream; - } -} diff --git a/utils/importexport/src/test/resources-unfiltered/io/apicurio/registry/utils/impexp/export.zip b/utils/importexport/src/test/resources-unfiltered/io/apicurio/registry/utils/impexp/export.zip deleted file mode 100644 index 4a9199f049824a76dacb17b9c582806ca7a404c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 889256 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

~ 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

0gd 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 From 37e5af95bc118e9392cbe0b092bdaa46a8496caa Mon Sep 17 00:00:00 2001 From: Eric Wittmann Date: Thu, 13 Jun 2024 13:56:21 -0400 Subject: [PATCH 07/11] Fix broken integration tests. --- .../GenerateCanonicalHashImportIT.java | 18 +++++++++++++++++- .../MigrationTestsDataInitializer.java | 16 +++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/integration-tests/src/test/java/io/apicurio/tests/migration/GenerateCanonicalHashImportIT.java b/integration-tests/src/test/java/io/apicurio/tests/migration/GenerateCanonicalHashImportIT.java index 94f3547b38..6ce86c6b02 100644 --- a/integration-tests/src/test/java/io/apicurio/tests/migration/GenerateCanonicalHashImportIT.java +++ b/integration-tests/src/test/java/io/apicurio/tests/migration/GenerateCanonicalHashImportIT.java @@ -7,6 +7,7 @@ import io.apicurio.registry.types.ContentTypes; import io.apicurio.registry.types.VersionState; import io.apicurio.registry.utils.IoUtil; +import io.apicurio.registry.utils.impexp.ArtifactEntity; import io.apicurio.registry.utils.impexp.ArtifactVersionEntity; import io.apicurio.registry.utils.impexp.BranchEntity; import io.apicurio.registry.utils.impexp.ContentEntity; @@ -111,12 +112,27 @@ public InputStream generateExportedZip(Map artifacts) { return contentEntity.contentId; }); + ArtifactEntity artifactEntity = new ArtifactEntity(); + artifactEntity.artifactId = artifactId; + artifactEntity.artifactType = artifactType; + artifactEntity.owner = "integration-tests"; + artifactEntity.createdOn = System.currentTimeMillis(); + artifactEntity.modifiedBy = "integration-tests"; + artifactEntity.modifiedOn = System.currentTimeMillis(); + artifactEntity.description = null; + artifactEntity.groupId = null; + artifactEntity.labels = null; + artifactEntity.name = null; + + writer.writeEntity(artifactEntity); + ArtifactVersionEntity versionEntity = new ArtifactVersionEntity(); versionEntity.artifactId = artifactId; - versionEntity.artifactType = artifactType; versionEntity.contentId = contentId; versionEntity.owner = "integration-tests"; versionEntity.createdOn = System.currentTimeMillis(); + versionEntity.modifiedBy = "integration-tests"; + versionEntity.modifiedOn = System.currentTimeMillis(); versionEntity.description = null; versionEntity.globalId = globalIdSeq.getAndIncrement(); versionEntity.groupId = null; diff --git a/integration-tests/src/test/java/io/apicurio/tests/migration/MigrationTestsDataInitializer.java b/integration-tests/src/test/java/io/apicurio/tests/migration/MigrationTestsDataInitializer.java index f0dad639fd..251f8b486b 100644 --- a/integration-tests/src/test/java/io/apicurio/tests/migration/MigrationTestsDataInitializer.java +++ b/integration-tests/src/test/java/io/apicurio/tests/migration/MigrationTestsDataInitializer.java @@ -10,6 +10,7 @@ import io.apicurio.registry.types.ContentTypes; import io.apicurio.registry.types.VersionState; import io.apicurio.registry.utils.IoUtil; +import io.apicurio.registry.utils.impexp.ArtifactEntity; import io.apicurio.registry.utils.impexp.ArtifactVersionEntity; import io.apicurio.registry.utils.impexp.ContentEntity; import io.apicurio.registry.utils.impexp.EntityWriter; @@ -187,9 +188,22 @@ public InputStream generateExportedZip(Map artifacts) { return contentEntity.contentId; }); + ArtifactEntity artifactEntity = new ArtifactEntity(); + artifactEntity.artifactId = artifactId; + artifactEntity.artifactType = artifactType; + artifactEntity.owner = "integration-tests"; + artifactEntity.createdOn = System.currentTimeMillis(); + artifactEntity.modifiedBy = "integration-tests"; + artifactEntity.modifiedOn = System.currentTimeMillis(); + artifactEntity.description = null; + artifactEntity.groupId = null; + artifactEntity.labels = null; + artifactEntity.name = null; + + writer.writeEntity(artifactEntity); + ArtifactVersionEntity versionEntity = new ArtifactVersionEntity(); versionEntity.artifactId = artifactId; - versionEntity.artifactType = artifactType; versionEntity.contentId = contentId; versionEntity.owner = "integration-tests"; versionEntity.createdOn = System.currentTimeMillis(); From 5f836756276d70af5d88151664b46799468feb30 Mon Sep 17 00:00:00 2001 From: Eric Wittmann Date: Thu, 13 Jun 2024 14:54:47 -0400 Subject: [PATCH 08/11] Rename userDefined to systemDefined for branches --- .../apicurio/registry/rest/v3/V3ApiUtil.java | 4 +-- .../storage/dto/BranchMetaDataDto.java | 2 +- .../storage/dto/SearchedBranchDto.java | 2 +- .../impl/sql/AbstractSqlRegistryStorage.java | 14 +++++----- .../storage/impl/sql/CommonSqlStatements.java | 2 +- .../impl/sql/mappers/BranchEntityMapper.java | 2 +- .../sql/mappers/BranchMetaDataDtoMapper.java | 2 +- .../sql/mappers/SearchedBranchMapper.java | 2 +- .../apicurio/registry/storage/impl/sql/h2.ddl | 2 +- .../registry/storage/impl/sql/mssql.ddl | 2 +- .../registry/storage/impl/sql/postgresql.ddl | 2 +- .../noprofile/rest/v3/BranchesTest.java | 2 ++ .../noprofile/rest/v3/ImportExportTest.java | 4 ++- .../src/main/resources/META-INF/openapi.json | 12 ++++----- go-sdk/pkg/registryclient-v3/kiota-lock.json | 2 +- .../models/branch_meta_data.go | 26 +++++++++---------- .../models/searched_branch.go | 26 +++++++++---------- .../registry/utils/impexp/BranchEntity.java | 2 +- 18 files changed, 57 insertions(+), 53 deletions(-) diff --git a/app/src/main/java/io/apicurio/registry/rest/v3/V3ApiUtil.java b/app/src/main/java/io/apicurio/registry/rest/v3/V3ApiUtil.java index 5828739774..fa12d1aefb 100644 --- a/app/src/main/java/io/apicurio/registry/rest/v3/V3ApiUtil.java +++ b/app/src/main/java/io/apicurio/registry/rest/v3/V3ApiUtil.java @@ -167,7 +167,7 @@ public static BranchSearchResults dtoToSearchResults(BranchSearchResultsDto dto) searchedBranch.setOwner(branch.getOwner()); searchedBranch.setCreatedOn(new Date(branch.getCreatedOn())); searchedBranch.setDescription(branch.getDescription()); - searchedBranch.setUserDefined(branch.isUserDefined()); + searchedBranch.setSystemDefined(branch.isSystemDefined()); searchedBranch.setBranchId(branch.getBranchId()); searchedBranch.setModifiedBy(branch.getModifiedBy()); searchedBranch.setModifiedOn(new Date(branch.getModifiedOn())); @@ -271,7 +271,7 @@ public static BranchMetaData dtoToBranchMetaData(BranchMetaDataDto branch) { .branchId(branch.getBranchId()) .description(branch.getDescription()) .owner(branch.getOwner()) - .userDefined(branch.isUserDefined()) + .systemDefined(branch.isSystemDefined()) .createdOn(new Date(branch.getCreatedOn())) .modifiedBy(branch.getModifiedBy()) .modifiedOn(new Date(branch.getModifiedOn())) diff --git a/app/src/main/java/io/apicurio/registry/storage/dto/BranchMetaDataDto.java b/app/src/main/java/io/apicurio/registry/storage/dto/BranchMetaDataDto.java index fb598ce718..f0b66c3103 100644 --- a/app/src/main/java/io/apicurio/registry/storage/dto/BranchMetaDataDto.java +++ b/app/src/main/java/io/apicurio/registry/storage/dto/BranchMetaDataDto.java @@ -23,7 +23,7 @@ public class BranchMetaDataDto implements Serializable { private String artifactId; private String branchId; private String description; - private boolean userDefined; + private boolean systemDefined; private String owner; private long createdOn; private String modifiedBy; diff --git a/app/src/main/java/io/apicurio/registry/storage/dto/SearchedBranchDto.java b/app/src/main/java/io/apicurio/registry/storage/dto/SearchedBranchDto.java index 1f19ba313b..7c87718025 100644 --- a/app/src/main/java/io/apicurio/registry/storage/dto/SearchedBranchDto.java +++ b/app/src/main/java/io/apicurio/registry/storage/dto/SearchedBranchDto.java @@ -22,7 +22,7 @@ public class SearchedBranchDto { private String artifactId; private String branchId; private String description; - private boolean userDefined; + private boolean systemDefined; private String owner; private long createdOn; private String modifiedBy; diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/AbstractSqlRegistryStorage.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/AbstractSqlRegistryStorage.java index c6ca90204e..52b940d02c 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/AbstractSqlRegistryStorage.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/AbstractSqlRegistryStorage.java @@ -595,7 +595,7 @@ private ArtifactVersionMetaDataDto createArtifactVersionRaw(Handle handle, boole .execute(); gav = new GAV(groupId, artifactId, finalVersion1); - createOrUpdateBranchRaw(handle, gav, BranchId.LATEST, false); + createOrUpdateBranchRaw(handle, gav, BranchId.LATEST, true); } else { handle.createUpdate(sqlStatements.insertVersion(false)) .bind(0, globalId) @@ -623,7 +623,7 @@ private ArtifactVersionMetaDataDto createArtifactVersionRaw(Handle handle, boole } gav = getGAVByGlobalId(globalId); - createOrUpdateBranchRaw(handle, gav, BranchId.LATEST, false); + createOrUpdateBranchRaw(handle, gav, BranchId.LATEST, true); } // Insert labels into the "version_labels" table @@ -641,7 +641,7 @@ private ArtifactVersionMetaDataDto createArtifactVersionRaw(Handle handle, boole if (branches != null && !branches.isEmpty()) { branches.forEach(branch -> { BranchId branchId = new BranchId(branch); - createOrUpdateBranchRaw(handle, gav, branchId, true); + createOrUpdateBranchRaw(handle, gav, branchId, false); }); } @@ -3331,7 +3331,7 @@ public BranchMetaDataDto createBranch(GA ga, BranchId branchId, String descripti .bind(1, ga.getRawArtifactId()) .bind(2, branchId.getRawBranchId()) .bind(3, description) - .bind(4, true) + .bind(4, false) .bind(5, user) .bind(6, now) .bind(7, user) @@ -3726,7 +3726,7 @@ public void replaceBranchVersions(GA ga, BranchId branchId, List vers * * IMPORTANT: Private methods can't be @Transactional. Callers MUST have started a transaction. */ - private void createOrUpdateBranchRaw(Handle handle, GAV gav, BranchId branchId, boolean userDefined) { + private void createOrUpdateBranchRaw(Handle handle, GAV gav, BranchId branchId, boolean systemDefined) { // First make sure the branch exists. try { String user = securityIdentity.getPrincipal().getName(); @@ -3737,7 +3737,7 @@ private void createOrUpdateBranchRaw(Handle handle, GAV gav, BranchId branchId, .bind(1, gav.getRawArtifactId()) .bind(2, branchId.getRawBranchId()) .bind(3, (String) null) - .bind(4, userDefined) + .bind(4, systemDefined) .bind(5, user) .bind(6, now) .bind(7, user) @@ -3832,7 +3832,7 @@ public void importBranch(BranchEntity entity) { .bind(1, ga.getRawArtifactId()) .bind(2, branchId.getRawBranchId()) .bind(3, entity.description) - .bind(4, entity.userDefined) + .bind(4, entity.systemDefined) .bind(5, entity.owner) .bind(6, new Date(entity.createdOn)) .bind(7, entity.modifiedBy) diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/CommonSqlStatements.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/CommonSqlStatements.java index da689a57e6..de01af8667 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/CommonSqlStatements.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/CommonSqlStatements.java @@ -1039,7 +1039,7 @@ public String selectGAVByGlobalId() { @Override public String insertBranch() { - return "INSERT INTO branches (groupId, artifactId, branchId, description, userDefined, owner, createdOn, modifiedBy, modifiedOn) " + + return "INSERT INTO branches (groupId, artifactId, branchId, description, systemDefined, owner, createdOn, modifiedBy, modifiedOn) " + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; } diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/BranchEntityMapper.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/BranchEntityMapper.java index b7688911d4..b5bc3ff33a 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/BranchEntityMapper.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/BranchEntityMapper.java @@ -23,7 +23,7 @@ public BranchEntity map(ResultSet rs) throws SQLException { .artifactId(rs.getString("artifactId")) .branchId(rs.getString("branchId")) .description(rs.getString("description")) - .userDefined(rs.getBoolean("userDefined")) + .systemDefined(rs.getBoolean("systemDefined")) .owner(rs.getString("owner")) .createdOn(rs.getTimestamp("createdOn").getTime()) .modifiedBy(rs.getString("modifiedBy")) diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/BranchMetaDataDtoMapper.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/BranchMetaDataDtoMapper.java index 6edffdea87..eadb47c2d7 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/BranchMetaDataDtoMapper.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/BranchMetaDataDtoMapper.java @@ -27,7 +27,7 @@ public BranchMetaDataDto map(ResultSet rs) throws SQLException { .artifactId(rs.getString("artifactId")) .branchId(rs.getString("branchId")) .description(rs.getString("description")) - .userDefined(rs.getBoolean("userDefined")) + .systemDefined(rs.getBoolean("systemDefined")) .owner(rs.getString("owner")) .createdOn(rs.getTimestamp("createdOn").getTime()) .modifiedBy(rs.getString("modifiedBy")) diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/SearchedBranchMapper.java b/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/SearchedBranchMapper.java index e6dbb14990..ec4a4d2906 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/SearchedBranchMapper.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/sql/mappers/SearchedBranchMapper.java @@ -27,7 +27,7 @@ public SearchedBranchDto map(ResultSet rs) throws SQLException { .artifactId(rs.getString("artifactId")) .branchId(rs.getString("branchId")) .description(rs.getString("description")) - .userDefined(rs.getBoolean("userDefined")) + .systemDefined(rs.getBoolean("systemDefined")) .owner(rs.getString("owner")) .createdOn(rs.getTimestamp("createdOn").getTime()) .modifiedBy(rs.getString("modifiedBy")) diff --git a/app/src/main/resources/io/apicurio/registry/storage/impl/sql/h2.ddl b/app/src/main/resources/io/apicurio/registry/storage/impl/sql/h2.ddl index 705d485872..d8bd6afc90 100644 --- a/app/src/main/resources/io/apicurio/registry/storage/impl/sql/h2.ddl +++ b/app/src/main/resources/io/apicurio/registry/storage/impl/sql/h2.ddl @@ -91,7 +91,7 @@ ALTER TABLE version_comments ADD CONSTRAINT FK_version_comments_1 FOREIGN KEY (g CREATE INDEX IDX_version_comments_1 ON version_comments(owner); -- This table is defined way down here because it has a FK to the artifacts table *and* the versions table -CREATE TABLE branches (groupId VARCHAR(512) NOT NULL, artifactId VARCHAR(512) NOT NULL, branchId VARCHAR(256) NOT NULL, description VARCHAR(1024), userDefined BOOLEAN NOT NULL, owner VARCHAR(256), createdOn TIMESTAMP WITHOUT TIME ZONE NOT NULL, modifiedBy VARCHAR(256), modifiedOn TIMESTAMP WITHOUT TIME ZONE NOT NULL); +CREATE TABLE branches (groupId VARCHAR(512) NOT NULL, artifactId VARCHAR(512) NOT NULL, branchId VARCHAR(256) NOT NULL, description VARCHAR(1024), systemDefined BOOLEAN NOT NULL, owner VARCHAR(256), createdOn TIMESTAMP WITHOUT TIME ZONE NOT NULL, modifiedBy VARCHAR(256), modifiedOn TIMESTAMP WITHOUT TIME ZONE NOT NULL); ALTER TABLE branches ADD PRIMARY KEY (groupId, artifactId, branchId); ALTER TABLE branches ADD CONSTRAINT FK_branches_1 FOREIGN KEY (groupId, artifactId) REFERENCES artifacts(groupId, artifactId) ON DELETE CASCADE; diff --git a/app/src/main/resources/io/apicurio/registry/storage/impl/sql/mssql.ddl b/app/src/main/resources/io/apicurio/registry/storage/impl/sql/mssql.ddl index c176b945c7..2cdf641162 100644 --- a/app/src/main/resources/io/apicurio/registry/storage/impl/sql/mssql.ddl +++ b/app/src/main/resources/io/apicurio/registry/storage/impl/sql/mssql.ddl @@ -91,7 +91,7 @@ ALTER TABLE version_comments ADD CONSTRAINT FK_version_comments_1 FOREIGN KEY (g CREATE INDEX IDX_version_comments_1 ON version_comments(owner); -- This table is defined way down here because it has a FK to the artifacts table *and* the versions table -CREATE TABLE branches (groupId NVARCHAR(512) NOT NULL, artifactId NVARCHAR(512) NOT NULL, branchId NVARCHAR(256) NOT NULL, description NVARCHAR(1024), userDefined BIT NOT NULL, owner NVARCHAR(256), createdOn DATETIME2(6) NOT NULL, modifiedBy NVARCHAR(256), modifiedOn DATETIME2(6) NOT NULL); +CREATE TABLE branches (groupId NVARCHAR(512) NOT NULL, artifactId NVARCHAR(512) NOT NULL, branchId NVARCHAR(256) NOT NULL, description NVARCHAR(1024), systemDefined BIT NOT NULL, owner NVARCHAR(256), createdOn DATETIME2(6) NOT NULL, modifiedBy NVARCHAR(256), modifiedOn DATETIME2(6) NOT NULL); ALTER TABLE branches ADD PRIMARY KEY (groupId, artifactId, branchId); ALTER TABLE branches ADD CONSTRAINT FK_branches_1 FOREIGN KEY (groupId, artifactId) REFERENCES artifacts(groupId, artifactId) ON DELETE CASCADE; diff --git a/app/src/main/resources/io/apicurio/registry/storage/impl/sql/postgresql.ddl b/app/src/main/resources/io/apicurio/registry/storage/impl/sql/postgresql.ddl index 7d4894eed9..b94dbbd7b8 100644 --- a/app/src/main/resources/io/apicurio/registry/storage/impl/sql/postgresql.ddl +++ b/app/src/main/resources/io/apicurio/registry/storage/impl/sql/postgresql.ddl @@ -91,7 +91,7 @@ ALTER TABLE version_comments ADD CONSTRAINT FK_version_comments_1 FOREIGN KEY (g CREATE INDEX IDX_version_comments_1 ON version_comments(owner); -- This table is defined way down here because it has a FK to the artifacts table *and* the versions table -CREATE TABLE branches (groupId VARCHAR(512) NOT NULL, artifactId VARCHAR(512) NOT NULL, branchId VARCHAR(256) NOT NULL, description VARCHAR(1024), userDefined BOOLEAN NOT NULL, owner VARCHAR(256), createdOn TIMESTAMP WITHOUT TIME ZONE NOT NULL, modifiedBy VARCHAR(256), modifiedOn TIMESTAMP WITHOUT TIME ZONE NOT NULL); +CREATE TABLE branches (groupId VARCHAR(512) NOT NULL, artifactId VARCHAR(512) NOT NULL, branchId VARCHAR(256) NOT NULL, description VARCHAR(1024), systemDefined BOOLEAN NOT NULL, owner VARCHAR(256), createdOn TIMESTAMP WITHOUT TIME ZONE NOT NULL, modifiedBy VARCHAR(256), modifiedOn TIMESTAMP WITHOUT TIME ZONE NOT NULL); ALTER TABLE branches ADD PRIMARY KEY (groupId, artifactId, branchId); ALTER TABLE branches ADD CONSTRAINT FK_branches_1 FOREIGN KEY (groupId, artifactId) REFERENCES artifacts(groupId, artifactId) ON DELETE CASCADE; diff --git a/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/BranchesTest.java b/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/BranchesTest.java index 293bc9aa41..00229c2c1c 100644 --- a/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/BranchesTest.java +++ b/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/BranchesTest.java @@ -33,6 +33,7 @@ public void testLatestBranch() throws Exception { BranchMetaData latest = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("latest").get(); Assertions.assertNotNull(latest); Assertions.assertEquals("latest", latest.getBranchId()); + Assertions.assertEquals(true, latest.getSystemDefined()); VersionSearchResults versions = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).branches().byBranchId("latest").versions().get(); Assertions.assertEquals(2, versions.getCount()); @@ -55,6 +56,7 @@ public void testCreateBranch() throws Exception { Assertions.assertEquals(artifactId, branch.getArtifactId()); Assertions.assertEquals("1.x", branch.getBranchId()); Assertions.assertEquals("Version 1.x", branch.getDescription()); + Assertions.assertEquals(false, branch.getSystemDefined()); } @Test diff --git a/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/ImportExportTest.java b/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/ImportExportTest.java index 26e40bcab4..c208bbc7f8 100644 --- a/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/ImportExportTest.java +++ b/app/src/test/java/io/apicurio/registry/noprofile/rest/v3/ImportExportTest.java @@ -262,7 +262,9 @@ public void testExportImport() throws Exception { BranchMetaData branch = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactIdWithBranches).branches().byBranchId("evens").get(); Assertions.assertEquals("evens", branch.getBranchId()); Assertions.assertEquals("Even numbered versions", branch.getDescription()); - Assertions.assertEquals(true, branch.getUserDefined()); + Assertions.assertEquals(false, branch.getSystemDefined()); + branch = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactIdWithBranches).branches().byBranchId("latest").get(); + Assertions.assertEquals(true, branch.getSystemDefined()); VersionSearchResults versions = clientV3.groups().byGroupId(groupId).artifacts().byArtifactId(artifactIdWithBranches).branches().byBranchId("evens").versions().get(); Assertions.assertEquals(2, versions.getCount()); diff --git a/common/src/main/resources/META-INF/openapi.json b/common/src/main/resources/META-INF/openapi.json index 5b16de12be..183cad2c79 100644 --- a/common/src/main/resources/META-INF/openapi.json +++ b/common/src/main/resources/META-INF/openapi.json @@ -4189,7 +4189,7 @@ "modifiedOn", "modifiedBy", "owner", - "userDefined" + "systemDefined" ], "type": "object", "properties": { @@ -4224,7 +4224,7 @@ "description": "", "type": "string" }, - "userDefined": { + "systemDefined": { "description": "", "type": "boolean" } @@ -4234,7 +4234,7 @@ "artifactId": "ExampleArtifact", "branchId": "1.0.x", "description": "Just an example branch.", - "userDefined": true, + "systemDefined": false, "createdOn": "2018-02-10T09:30Z", "modifiedBy": "user1", "modifiedOn": "2020-02-10T09:30Z", @@ -4744,7 +4744,7 @@ "owner", "modifiedBy", "modifiedOn", - "userDefined" + "systemDefined" ], "type": "object", "properties": { @@ -4782,7 +4782,7 @@ "description": "", "type": "string" }, - "userDefined": { + "systemDefined": { "description": "", "type": "boolean" } @@ -4792,7 +4792,7 @@ "artifactId": "ExampleArtifact", "branchId": "1.0.x", "description": "A really nice branch.", - "userDefined": true, + "systemDefined": false, "createdOn": "2018-02-10T09:30Z", "owner": "user1", "modifiedOn": "2019-03-11T09:30Z", diff --git a/go-sdk/pkg/registryclient-v3/kiota-lock.json b/go-sdk/pkg/registryclient-v3/kiota-lock.json index 71a7caf7bb..27f7c81930 100644 --- a/go-sdk/pkg/registryclient-v3/kiota-lock.json +++ b/go-sdk/pkg/registryclient-v3/kiota-lock.json @@ -1,5 +1,5 @@ { - "descriptionHash": "165CB28362B12D7C5F9A8CA280FCC90F78811CB61857DB9467AF62D3973806A641B4EA8F5E66ABE71FBDA60E9BEE143C833AF373D82FA39AD461505AC5C40608", + "descriptionHash": "E09CC67C76497F1018A2E92618ADFA6F667C280644027CBCB55587F3942D873739E6A438C095E6F7FC41B5B573E1D9E462053338964821E478326575CCAAB743", "descriptionLocation": "../../v3.json", "lockFileVersion": "1.0.0", "kiotaVersion": "1.10.1", diff --git a/go-sdk/pkg/registryclient-v3/models/branch_meta_data.go b/go-sdk/pkg/registryclient-v3/models/branch_meta_data.go index 3fcd206fc8..9326737922 100644 --- a/go-sdk/pkg/registryclient-v3/models/branch_meta_data.go +++ b/go-sdk/pkg/registryclient-v3/models/branch_meta_data.go @@ -25,8 +25,8 @@ type BranchMetaData struct { modifiedOn *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time // The owner property owner *string - // The userDefined property - userDefined *bool + // The systemDefined property + systemDefined *bool } // NewBranchMetaData instantiates a new BranchMetaData and sets the default values. @@ -149,13 +149,13 @@ func (m *BranchMetaData) GetFieldDeserializers() map[string]func(i878a80d2330e89 } return nil } - res["userDefined"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + res["systemDefined"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { val, err := n.GetBoolValue() if err != nil { return err } if val != nil { - m.SetUserDefined(val) + m.SetSystemDefined(val) } return nil } @@ -182,9 +182,9 @@ func (m *BranchMetaData) GetOwner() *string { return m.owner } -// GetUserDefined gets the userDefined property value. The userDefined property -func (m *BranchMetaData) GetUserDefined() *bool { - return m.userDefined +// GetSystemDefined gets the systemDefined property value. The systemDefined property +func (m *BranchMetaData) GetSystemDefined() *bool { + return m.systemDefined } // Serialize serializes information the current object @@ -238,7 +238,7 @@ func (m *BranchMetaData) Serialize(writer i878a80d2330e89d26896388a3f487eef27b0a } } { - err := writer.WriteBoolValue("userDefined", m.GetUserDefined()) + err := writer.WriteBoolValue("systemDefined", m.GetSystemDefined()) if err != nil { return err } @@ -297,9 +297,9 @@ func (m *BranchMetaData) SetOwner(value *string) { m.owner = value } -// SetUserDefined sets the userDefined property value. The userDefined property -func (m *BranchMetaData) SetUserDefined(value *bool) { - m.userDefined = value +// SetSystemDefined sets the systemDefined property value. The systemDefined property +func (m *BranchMetaData) SetSystemDefined(value *bool) { + m.systemDefined = value } // BranchMetaDataable @@ -314,7 +314,7 @@ type BranchMetaDataable interface { GetModifiedBy() *string GetModifiedOn() *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time GetOwner() *string - GetUserDefined() *bool + GetSystemDefined() *bool SetArtifactId(value *string) SetBranchId(value *string) SetCreatedOn(value *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time) @@ -323,5 +323,5 @@ type BranchMetaDataable interface { SetModifiedBy(value *string) SetModifiedOn(value *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time) SetOwner(value *string) - SetUserDefined(value *bool) + SetSystemDefined(value *bool) } diff --git a/go-sdk/pkg/registryclient-v3/models/searched_branch.go b/go-sdk/pkg/registryclient-v3/models/searched_branch.go index a1f100144c..4e24183feb 100644 --- a/go-sdk/pkg/registryclient-v3/models/searched_branch.go +++ b/go-sdk/pkg/registryclient-v3/models/searched_branch.go @@ -25,8 +25,8 @@ type SearchedBranch struct { modifiedOn *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time // The owner property owner *string - // The userDefined property - userDefined *bool + // The systemDefined property + systemDefined *bool } // NewSearchedBranch instantiates a new SearchedBranch and sets the default values. @@ -149,13 +149,13 @@ func (m *SearchedBranch) GetFieldDeserializers() map[string]func(i878a80d2330e89 } return nil } - res["userDefined"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { + res["systemDefined"] = func(n i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode) error { val, err := n.GetBoolValue() if err != nil { return err } if val != nil { - m.SetUserDefined(val) + m.SetSystemDefined(val) } return nil } @@ -182,9 +182,9 @@ func (m *SearchedBranch) GetOwner() *string { return m.owner } -// GetUserDefined gets the userDefined property value. The userDefined property -func (m *SearchedBranch) GetUserDefined() *bool { - return m.userDefined +// GetSystemDefined gets the systemDefined property value. The systemDefined property +func (m *SearchedBranch) GetSystemDefined() *bool { + return m.systemDefined } // Serialize serializes information the current object @@ -238,7 +238,7 @@ func (m *SearchedBranch) Serialize(writer i878a80d2330e89d26896388a3f487eef27b0a } } { - err := writer.WriteBoolValue("userDefined", m.GetUserDefined()) + err := writer.WriteBoolValue("systemDefined", m.GetSystemDefined()) if err != nil { return err } @@ -297,9 +297,9 @@ func (m *SearchedBranch) SetOwner(value *string) { m.owner = value } -// SetUserDefined sets the userDefined property value. The userDefined property -func (m *SearchedBranch) SetUserDefined(value *bool) { - m.userDefined = value +// SetSystemDefined sets the systemDefined property value. The systemDefined property +func (m *SearchedBranch) SetSystemDefined(value *bool) { + m.systemDefined = value } // SearchedBranchable @@ -314,7 +314,7 @@ type SearchedBranchable interface { GetModifiedBy() *string GetModifiedOn() *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time GetOwner() *string - GetUserDefined() *bool + GetSystemDefined() *bool SetArtifactId(value *string) SetBranchId(value *string) SetCreatedOn(value *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time) @@ -323,5 +323,5 @@ type SearchedBranchable interface { SetModifiedBy(value *string) SetModifiedOn(value *i336074805fc853987abe6f7fe3ad97a6a6f3077a16391fec744f671a015fbd7e.Time) SetOwner(value *string) - SetUserDefined(value *bool) + SetSystemDefined(value *bool) } diff --git a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/BranchEntity.java b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/BranchEntity.java index 5fc286d774..8306b3bf73 100644 --- a/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/BranchEntity.java +++ b/utils/importexport/src/main/java/io/apicurio/registry/utils/impexp/BranchEntity.java @@ -23,7 +23,7 @@ public class BranchEntity extends Entity { public String artifactId; public String branchId; public String description; - public boolean userDefined; + public boolean systemDefined; public String owner; public long createdOn; public String modifiedBy; From 7e5a6fb06b71eb3fe32ad6dbe2027a8948c1da10 Mon Sep 17 00:00:00 2001 From: Eric Wittmann Date: Fri, 14 Jun 2024 08:42:17 -0400 Subject: [PATCH 09/11] Tweak the canonical hash import test --- .../migration/GenerateCanonicalHashImportIT.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/integration-tests/src/test/java/io/apicurio/tests/migration/GenerateCanonicalHashImportIT.java b/integration-tests/src/test/java/io/apicurio/tests/migration/GenerateCanonicalHashImportIT.java index 6ce86c6b02..7bda38c024 100644 --- a/integration-tests/src/test/java/io/apicurio/tests/migration/GenerateCanonicalHashImportIT.java +++ b/integration-tests/src/test/java/io/apicurio/tests/migration/GenerateCanonicalHashImportIT.java @@ -3,6 +3,7 @@ import io.apicurio.registry.client.auth.VertXAuthFactory; import io.apicurio.registry.model.BranchId; import io.apicurio.registry.rest.client.RegistryClient; +import io.apicurio.registry.rest.client.models.Error; import io.apicurio.registry.types.ArtifactType; import io.apicurio.registry.types.ContentTypes; import io.apicurio.registry.types.VersionState; @@ -69,9 +70,16 @@ public void testGeneratingCanonicalHashOnImport() throws Exception { The only way is to generate canonical hash and then search artifact by it. But that needs apicurio-registry-app module as dependency. */ - var registryContent = client.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().byVersionExpression("1").content().get(); - assertNotNull(registryContent); - assertEquals(content, IoUtil.toString(registryContent)); + try { + var registryContent = client.groups().byGroupId(groupId).artifacts().byArtifactId(artifactId).versions().byVersionExpression("1.0").content().get(); + assertNotNull(registryContent); + assertEquals(content, IoUtil.toString(registryContent)); + } catch (Error e) { + System.out.println("---"); + System.out.println("REST CLIENT ERROR>> " + e.getDetail()); + System.out.println("---"); + throw e; + } } } @@ -139,7 +147,7 @@ public InputStream generateExportedZip(Map artifacts) { versionEntity.labels = null; versionEntity.name = null; versionEntity.state = VersionState.ENABLED; - versionEntity.version = "1"; + versionEntity.version = "1.0"; versionEntity.versionOrder = 1; writer.writeEntity(versionEntity); From 22c5ef800db375d640beee02db0b2fba0a43659b Mon Sep 17 00:00:00 2001 From: Eric Wittmann Date: Fri, 14 Jun 2024 10:08:14 -0400 Subject: [PATCH 10/11] Fix missing classes in the kafkasql message index --- .../kafkasql/serde/KafkaSqlMessageIndex.java | 63 +++++++++++++++++-- .../GenerateCanonicalHashImportIT.java | 2 +- 2 files changed, 59 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/serde/KafkaSqlMessageIndex.java b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/serde/KafkaSqlMessageIndex.java index 64ed84f2eb..c41977694a 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/serde/KafkaSqlMessageIndex.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/serde/KafkaSqlMessageIndex.java @@ -1,7 +1,56 @@ package io.apicurio.registry.storage.impl.kafkasql.serde; import io.apicurio.registry.storage.impl.kafkasql.KafkaSqlMessage; -import io.apicurio.registry.storage.impl.kafkasql.messages.*; +import io.apicurio.registry.storage.impl.kafkasql.messages.AppendVersionToBranch3Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.ConsumeDownload1Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.CreateArtifact8Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.CreateArtifactVersion7Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.CreateArtifactVersionComment4Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.CreateBranch4Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.CreateDownload1Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.CreateGlobalRule2Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.CreateGroup1Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.CreateRoleMapping3Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.CreateSnapshot1Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.DeleteAllExpiredDownloads0Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.DeleteAllUserData0Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.DeleteArtifact2Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.DeleteArtifactRule3Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.DeleteArtifactRules2Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.DeleteArtifactVersion3Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.DeleteArtifactVersionComment4Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.DeleteArtifacts1Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.DeleteBranch2Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.DeleteConfigProperty1Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.DeleteGlobalRule1Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.DeleteGlobalRules0Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.DeleteGroup1Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.DeleteRoleMapping1Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.ImportArtifact1Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.ImportArtifactRule1Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.ImportArtifactVersion1Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.ImportBranch1Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.ImportComment1Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.ImportContent1Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.ImportGlobalRule1Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.ImportGroup1Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.NextCommentId0Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.NextContentId0Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.NextGlobalId0Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.ReplaceBranchVersions3Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.ResetCommentId0Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.ResetContentId0Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.ResetGlobalId0Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.SetConfigProperty1Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.UpdateArtifactMetaData3Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.UpdateArtifactRule4Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.UpdateArtifactVersionComment5Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.UpdateArtifactVersionMetaData4Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.UpdateBranchMetaData3Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.UpdateContentCanonicalHash3Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.UpdateGlobalRule2Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.UpdateGroupMetaData2Message; +import io.apicurio.registry.storage.impl.kafkasql.messages.UpdateRoleMapping2Message; import jakarta.enterprise.context.ApplicationScoped; import java.util.HashMap; @@ -22,33 +71,35 @@ private static void indexMessageClasses(Class ... mcl } static { indexMessageClasses( + AppendVersionToBranch3Message.class, ConsumeDownload1Message.class, CreateArtifact8Message.class, CreateArtifactVersion7Message.class, CreateArtifactVersionComment4Message.class, - CreateArtifact8Message.class, + CreateBranch4Message.class, CreateDownload1Message.class, - CreateSnapshot1Message.class, CreateGlobalRule2Message.class, CreateGroup1Message.class, CreateRoleMapping3Message.class, + CreateSnapshot1Message.class, DeleteAllExpiredDownloads0Message.class, DeleteAllUserData0Message.class, DeleteArtifact2Message.class, - DeleteBranch2Message.class, DeleteArtifactRule3Message.class, DeleteArtifactRules2Message.class, DeleteArtifacts1Message.class, DeleteArtifactVersion3Message.class, DeleteArtifactVersionComment4Message.class, + DeleteBranch2Message.class, DeleteConfigProperty1Message.class, DeleteGlobalRule1Message.class, DeleteGlobalRules0Message.class, DeleteGroup1Message.class, DeleteRoleMapping1Message.class, - ImportBranch1Message.class, + ImportArtifact1Message.class, ImportArtifactRule1Message.class, ImportArtifactVersion1Message.class, + ImportBranch1Message.class, ImportComment1Message.class, ImportContent1Message.class, ImportGlobalRule1Message.class, @@ -56,6 +107,7 @@ private static void indexMessageClasses(Class ... mcl NextCommentId0Message.class, NextContentId0Message.class, NextGlobalId0Message.class, + ReplaceBranchVersions3Message.class, ResetCommentId0Message.class, ResetContentId0Message.class, ResetGlobalId0Message.class, @@ -64,6 +116,7 @@ private static void indexMessageClasses(Class ... mcl UpdateArtifactRule4Message.class, UpdateArtifactVersionComment5Message.class, UpdateArtifactVersionMetaData4Message.class, + UpdateBranchMetaData3Message.class, UpdateContentCanonicalHash3Message.class, UpdateGlobalRule2Message.class, UpdateGroupMetaData2Message.class, diff --git a/integration-tests/src/test/java/io/apicurio/tests/migration/GenerateCanonicalHashImportIT.java b/integration-tests/src/test/java/io/apicurio/tests/migration/GenerateCanonicalHashImportIT.java index 7bda38c024..b1c9838967 100644 --- a/integration-tests/src/test/java/io/apicurio/tests/migration/GenerateCanonicalHashImportIT.java +++ b/integration-tests/src/test/java/io/apicurio/tests/migration/GenerateCanonicalHashImportIT.java @@ -53,7 +53,7 @@ public void testGeneratingCanonicalHashOnImport() throws Exception { JsonSchemaMsgFactory jsonSchema = new JsonSchemaMsgFactory(); for (int i = 0; i < 20; i++) { String artifactId = i + "-" + UUID.randomUUID(); - String content = IoUtil.toString(jsonSchema.getSchemaStream()); + String content = jsonSchema.getSchemaString(); artifacts.put(artifactId, content); } var importReq = client.admin().importEscaped().toPostRequestInformation(generateExportedZip(artifacts)); From 980b119ebdd0985ad1830360db69ed5378fa5a4b Mon Sep 17 00:00:00 2001 From: Eric Wittmann Date: Fri, 14 Jun 2024 10:11:00 -0400 Subject: [PATCH 11/11] Improved error reporting in kafkasql value deserializer --- .../serde/KafkaSqlValueDeserializer.java | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/serde/KafkaSqlValueDeserializer.java b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/serde/KafkaSqlValueDeserializer.java index da67f68658..7215195528 100644 --- a/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/serde/KafkaSqlValueDeserializer.java +++ b/app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/serde/KafkaSqlValueDeserializer.java @@ -1,17 +1,15 @@ package io.apicurio.registry.storage.impl.kafkasql.serde; -import java.util.Optional; - +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import io.apicurio.registry.storage.impl.kafkasql.KafkaSqlMessage; import org.apache.kafka.common.header.Header; import org.apache.kafka.common.header.Headers; import org.apache.kafka.common.serialization.Deserializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; - -import io.apicurio.registry.storage.impl.kafkasql.KafkaSqlMessage; +import java.util.Optional; /** * Kafka deserializer responsible for deserializing the value of a KSQL Kafka message. @@ -31,7 +29,7 @@ public class KafkaSqlValueDeserializer implements Deserializer */ @Override public KafkaSqlMessage deserialize(String topic, byte[] data) { - // Not supported - must deserializer with headers. + // Not supported - must deserialize with headers. return null; } @@ -48,13 +46,13 @@ public KafkaSqlMessage deserialize(String topic, Headers headers, byte[] data) { try { String messageType = extractMessageType(headers); if (messageType == null) { - log.error("Message missing required header: mt"); + log.error("Message missing required message type header: mt"); return null; } Class msgClass = KafkaSqlMessageIndex.lookup(messageType); if (msgClass == null) { - throw new Exception("Unknown KafkaSql message class: " + msgClass); + throw new Exception("Unknown KafkaSql message class for '" + messageType + "'"); } KafkaSqlMessage message = mapper.readValue(data, msgClass); return message; @@ -66,8 +64,6 @@ public KafkaSqlMessage deserialize(String topic, Headers headers, byte[] data) { /** * Extracts the UUID from the message. The UUID should be found in a message header. - * - * @param record */ private static String extractMessageType(Headers headers) { return Optional.ofNullable(headers.headers("mt"))