diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 9733d56b..47f031d3 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -128,15 +128,15 @@ jobs:
uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 # v5.5.1
with:
images: ${{ matrix.image }}
- # Automatically prepare image tags; See action docs for more examples.
- # semver patter will generate tags like these for example :1 :1.2 :1.2.3
+ # Automatically prepare image tags; See action docs for more examples.
+ # semver patter will generate tags like these for example :1 :1.2 :1.2.3
tags: |
- type=ref,event=branch
- type=ref,event=pr
- type=raw,value=latest
- type=semver,pattern={{version}},value=${{ needs.release-helm-chart.outputs.app-version }}
- type=semver,pattern={{major}},value=${{ needs.release-helm-chart.outputs.app-version }}
- type=semver,pattern={{major}}.{{minor}},value=${{ needs.release-helm-chart.outputs.app-version }}
+ type=ref,event=branch
+ type=ref,event=pr
+ type=raw,value=latest
+ type=semver,pattern={{version}},value=${{ needs.release-helm-chart.outputs.app-version }}
+ type=semver,pattern={{major}},value=${{ needs.release-helm-chart.outputs.app-version }}
+ type=semver,pattern={{major}}.{{minor}},value=${{ needs.release-helm-chart.outputs.app-version }}
- name: Build and push Docker images
uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7394d46d..29e9f7cd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,24 @@
# Changelog
+## [1.0.0-rc.4](https://github.com/eclipse-tractusx/ssi-credential-issuer/compare/v1.0.0-rc.3...v1.0.0-rc.4) (2024-05-13)
+
+
+### Bug Fixes
+
+* adjust multiple ssi detail handling ([#116](https://github.com/eclipse-tractusx/ssi-credential-issuer/issues/116)) ([7e8df9d](https://github.com/eclipse-tractusx/ssi-credential-issuer/commit/7e8df9dd35953fc5ed3c199dbd6357cc574feec4))
+* **approval:** send mail and notification to requester ([#101](https://github.com/eclipse-tractusx/ssi-credential-issuer/issues/101)) ([0fe249c](https://github.com/eclipse-tractusx/ssi-credential-issuer/commit/0fe249ceb5728be69055320718ff9b3deb7a3f52))
+* **credential:** remove duplicate credential ([#113](https://github.com/eclipse-tractusx/ssi-credential-issuer/issues/113)) ([f2cc13d](https://github.com/eclipse-tractusx/ssi-credential-issuer/commit/f2cc13dd810970095c3969a7996c4f00d22f967a))
+* **credentials:** remove quality credential ([#97](https://github.com/eclipse-tractusx/ssi-credential-issuer/issues/97)) ([e6a817d](https://github.com/eclipse-tractusx/ssi-credential-issuer/commit/e6a817d61ac8a713b9be623a361a26e2e4354964)), closes [#95](https://github.com/eclipse-tractusx/ssi-credential-issuer/issues/95)
+* **notification:** adjust notification creation url ([#98](https://github.com/eclipse-tractusx/ssi-credential-issuer/issues/98)) ([ae966e9](https://github.com/eclipse-tractusx/ssi-credential-issuer/commit/ae966e97395a38e56d88e5479e34c0dac6bc3914))
+* **qualityCredential:** re add quality credential ([#114](https://github.com/eclipse-tractusx/ssi-credential-issuer/issues/114)) ([d962baf](https://github.com/eclipse-tractusx/ssi-credential-issuer/commit/d962bafd9df92dd5cbaf12a5aa93fa37c4ec29f7)), closes [#107](https://github.com/eclipse-tractusx/ssi-credential-issuer/issues/107)
+* return pending credentials ([#117](https://github.com/eclipse-tractusx/ssi-credential-issuer/issues/117)) ([21defc7](https://github.com/eclipse-tractusx/ssi-credential-issuer/commit/21defc7ab1238c0dd250c0f69cd3c55cc1cf47cf)), closes [#109](https://github.com/eclipse-tractusx/ssi-credential-issuer/issues/109)
+* **seeding:** set consortia to seeding paths ([#96](https://github.com/eclipse-tractusx/ssi-credential-issuer/issues/96)) ([8e16f04](https://github.com/eclipse-tractusx/ssi-credential-issuer/commit/8e16f04ee8310318149d27318cbdf1c1dd4bf8c8))
+
+
+### Miscellaneous Chores
+
+* release 1.0.0-rc.4 ([f159102](https://github.com/eclipse-tractusx/ssi-credential-issuer/commit/f1591024624317e403fab442539a1b7a332a4c16))
+
## [1.0.0-rc.3](https://github.com/eclipse-tractusx/ssi-credential-issuer/compare/v1.0.0-rc.1...v1.0.0-rc.3) (2024-04-30)
diff --git a/consortia/environments/values-beta.yaml b/consortia/environments/values-beta.yaml
index 435aae17..a4385c09 100644
--- a/consortia/environments/values-beta.yaml
+++ b/consortia/environments/values-beta.yaml
@@ -57,6 +57,8 @@ issuer:
issuermigrations:
logging:
default: "Debug"
+ seeding:
+ testDataEnvironments: "consortia"
processesworker:
logging:
diff --git a/consortia/environments/values-dev.yaml b/consortia/environments/values-dev.yaml
index a9cfa18c..5f51b906 100644
--- a/consortia/environments/values-dev.yaml
+++ b/consortia/environments/values-dev.yaml
@@ -63,6 +63,8 @@ issuermigrations:
imagePullPolicy: "Always"
logging:
default: "Debug"
+ seeding:
+ testDataEnvironments: "consortia"
processesworker:
image:
diff --git a/consortia/environments/values-int.yaml b/consortia/environments/values-int.yaml
index 81c0a05b..9730caf2 100644
--- a/consortia/environments/values-int.yaml
+++ b/consortia/environments/values-int.yaml
@@ -57,6 +57,8 @@ issuer:
issuermigrations:
logging:
default: "Debug"
+ seeding:
+ testDataEnvironments: "consortia"
processesworker:
logging:
diff --git a/consortia/environments/values-pen.yaml b/consortia/environments/values-pen.yaml
index 1b747209..8a4a40c4 100644
--- a/consortia/environments/values-pen.yaml
+++ b/consortia/environments/values-pen.yaml
@@ -57,6 +57,8 @@ issuer:
issuermigrations:
logging:
default: "Debug"
+ seeding:
+ testDataEnvironments: "consortia"
processesworker:
logging:
diff --git a/consortia/environments/values-rc.yaml b/consortia/environments/values-rc.yaml
index e8e66e94..9718ca63 100644
--- a/consortia/environments/values-rc.yaml
+++ b/consortia/environments/values-rc.yaml
@@ -63,6 +63,8 @@ issuermigrations:
imagePullPolicy: "Always"
logging:
default: "Debug"
+ seeding:
+ testDataEnvironments: "consortia"
processesworker:
image:
diff --git a/docs/architecture/Security_Assessment.md b/docs/architecture/Security_Assessment.md
new file mode 100644
index 00000000..b3bf3f99
--- /dev/null
+++ b/docs/architecture/Security_Assessment.md
@@ -0,0 +1,114 @@
+# Security Assessment SSI Credential Issuer
+
+| | |
+| ------------------------- | ---------------------------------------------------------------------------------------------- |
+| Contact for product | [@evegufy](https://github.com/evegufy)
[@jjeroch](https://github.com/jjeroch) |
+| Security responsible | tbd |
+| Version number of product | 1.0.0 |
+| Dates of assessment | tbd: Assessment |
+| Status of assessment | Assessment Report |
+
+## Product Description
+
+The SSI Credential Issuer product is an REST API project with two Process Worker processes, so a pure backend component (without implementation of an user interface).
+
+The main purpose of the product is to provide authenticated CX Users the possibility to create credentials inside the issuer and holder wallet. Furthermore, it handles the revocation and expiry handling for credentials.
+
+The SSI Credential Issuer comprises the technical foundation for functional interaction, monitoring, auditing and further functionalities.
+
+The product can be run anywhere: it can be deployed as a docker image, e.g. on Kubernetes (platform-independent, cloud, on prem or local).
+
+The SSI Credential Issuer is using following key frameworks:
+
+- .Net
+- Entity Framework
+[Development Concept](/Development%20Concept.md)
+
+## Data Flow Diagram
+
+```mermaid
+flowchart LR
+
+ CU(Company user or Service Account)
+ K("Keycloak (REST API)")
+ IS(Issuer Service)
+ CS(Credential Service)
+ RS(Revocation Service)
+ EW(Expiry Worker)
+ IW(Issuer Wallet)
+ HW(3rd Party Holder Wallets)
+ P(Portal Backend)
+ PHD[(Issuer DB \n Postgres \n EF Core for mapping \n objects to SQL)]
+
+ subgraph centralidp[centralidp Keycloak]
+ K
+ end
+
+ subgraph companyrealm[SharedIdP Keycloak or ownIdP]
+ CU
+ end
+
+ subgraph SSI-Issuer-Component Product
+ IS
+ CS
+ RS
+ EW
+ PHD
+ end
+
+ subgraph External Systems
+ P
+ IW
+ HW
+ end
+
+ K-->|"Authentication & Authorization Data \n (Using JWT)"|IS
+ K-->|"Authentication & Authorization Data \n (Using JWT)"|CS
+ K-->|"Authentication & Authorization Data \n (Using JWT)"|RS
+ CU-->|"Consumption of central, read-only REST API \n [HTTPS]"|IS
+ CU-->|"Consumption of central, read-only REST API \n [HTTPS]"|CS
+ CU-->|"Consumption of central, read-only REST API \n [HTTPS]"|RS
+ IS-->|"Read and write credentials"|PHD
+ IS-->|"Read and write credentials"|IW
+ IS-->|"Read and write credentials"|HW
+ EW-->|"Read and write credentials"|IW
+ RS-->|"Read and write credentials"|IW
+ P-->|"Create and revoke credentials"|IS
+ IS-->|"Create notifications and mails"|P
+ CS-->|"Read credentials and document"|PHD
+ RS-->|"Read and update credential data"|PHD
+ CU-->|"IAM with OIDC \n [HTTPS]"|K
+```
+
+### Changes compared to last Security Assessment
+
+N/A
+
+### Features for Upcoming Versions
+
+N/A
+
+## Threats & Risks
+
+TBD
+
+### Mitigated Threats
+
+N/A
+
+### Performed Security Checks
+
+- Static Application Security Testing (SAST) - CodeQL
+- Software Composition Analysis (SCA) - Dependabot
+- Container Scan conducted - Trivy
+- Infrastructure as Code - KICS
+- Secret Scanning - GitGuardian
+- Dynamic Application Security Testing (DAST) - OWASP ZAP (Unauthenticated)
+
+## NOTICE
+
+This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0).
+
+- SPDX-License-Identifier: Apache-2.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/ssi-credential-issuer
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index 4f32e8a4..fc27ea0c 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -20,6 +20,6 @@
1.0.0
- rc.3
+ rc.4
diff --git a/src/database/SsiCredentialIssuer.DbAccess/Models/SsiApprovalData.cs b/src/database/SsiCredentialIssuer.DbAccess/Models/SsiApprovalData.cs
index 0daf4b1a..31feff78 100644
--- a/src/database/SsiCredentialIssuer.DbAccess/Models/SsiApprovalData.cs
+++ b/src/database/SsiCredentialIssuer.DbAccess/Models/SsiApprovalData.cs
@@ -27,7 +27,8 @@ public record SsiApprovalData(
VerifiedCredentialTypeId Type,
Guid? ProcessId,
VerifiedCredentialTypeKindId? Kind,
- string? Bpn,
+ string Bpn,
+ string UserId,
JsonDocument? Schema,
DetailData? DetailData
);
diff --git a/src/database/SsiCredentialIssuer.DbAccess/Models/SsiCertificateTransferData.cs b/src/database/SsiCredentialIssuer.DbAccess/Models/SsiCertificateTransferData.cs
deleted file mode 100644
index 9b92cb09..00000000
--- a/src/database/SsiCredentialIssuer.DbAccess/Models/SsiCertificateTransferData.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2024 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0.
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- ********************************************************************************/
-
-using Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Enums;
-
-namespace Org.Eclipse.TractusX.SsiCredentialIssuer.DBAccess.Models;
-
-public record SsiCertificateTransferData
-(
- VerifiedCredentialTypeId CredentialType,
- IEnumerable Credentials
-);
-
-public record SsiCertificateExternalTypeDetailTransferData
-(
- ExternalTypeDetailData ExternalDetailData,
- IEnumerable SsiDetailData
-);
diff --git a/src/issuer/SsiCredentialIssuer.Service/Models/UseCaseParticipationData.cs b/src/database/SsiCredentialIssuer.DbAccess/Models/UseCaseParticipationData.cs
similarity index 86%
rename from src/issuer/SsiCredentialIssuer.Service/Models/UseCaseParticipationData.cs
rename to src/database/SsiCredentialIssuer.DbAccess/Models/UseCaseParticipationData.cs
index e50c222a..ecb5c375 100644
--- a/src/issuer/SsiCredentialIssuer.Service/Models/UseCaseParticipationData.cs
+++ b/src/database/SsiCredentialIssuer.DbAccess/Models/UseCaseParticipationData.cs
@@ -17,10 +17,9 @@
* SPDX-License-Identifier: Apache-2.0
********************************************************************************/
-using Org.Eclipse.TractusX.SsiCredentialIssuer.DBAccess.Models;
using Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Enums;
-namespace Org.Eclipse.TractusX.SsiCredentialIssuer.Service.Models;
+namespace Org.Eclipse.TractusX.SsiCredentialIssuer.DBAccess.Models;
public record UseCaseParticipationData
(
@@ -33,13 +32,13 @@ IEnumerable VerifiedCredentials
public record CertificateParticipationData
(
VerifiedCredentialTypeId CredentialType,
- IEnumerable VerifiedCredentials
+ IEnumerable Credentials
);
public record CompanySsiExternalTypeDetailData
(
ExternalTypeDetailData ExternalDetailData,
- CompanySsiDetailData? SsiDetailData
+ IEnumerable SsiDetailData
);
public record CompanySsiDetailData
diff --git a/src/database/SsiCredentialIssuer.DbAccess/Models/UseCaseParticipationTransferData.cs b/src/database/SsiCredentialIssuer.DbAccess/Models/UseCaseParticipationTransferData.cs
deleted file mode 100644
index 18f61106..00000000
--- a/src/database/SsiCredentialIssuer.DbAccess/Models/UseCaseParticipationTransferData.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2024 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0.
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- ********************************************************************************/
-
-using Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Enums;
-
-namespace Org.Eclipse.TractusX.SsiCredentialIssuer.DBAccess.Models;
-
-public record UseCaseParticipationTransferData
-(
- string? UseCase,
- string? Description,
- VerifiedCredentialTypeId CredentialType,
- IEnumerable VerifiedCredentials
-);
-
-public record CompanySsiExternalTypeDetailTransferData
-(
- ExternalTypeDetailData ExternalDetailData,
- IEnumerable SsiDetailData
-);
-
-public record CompanySsiDetailTransferData
-(
- Guid CredentialId,
- CompanySsiDetailStatusId ParticipationStatus,
- DateTimeOffset? ExpiryDate,
- IEnumerable Documents
-);
diff --git a/src/database/SsiCredentialIssuer.DbAccess/Repositories/CompanySsiDetailsRepository.cs b/src/database/SsiCredentialIssuer.DbAccess/Repositories/CompanySsiDetailsRepository.cs
index 6bbdb837..128f46c9 100644
--- a/src/database/SsiCredentialIssuer.DbAccess/Repositories/CompanySsiDetailsRepository.cs
+++ b/src/database/SsiCredentialIssuer.DbAccess/Repositories/CompanySsiDetailsRepository.cs
@@ -40,7 +40,7 @@ public CompanySsiDetailsRepository(IssuerDbContext dbContext)
}
///
- public IAsyncEnumerable GetUseCaseParticipationForCompany(string bpnl, DateTimeOffset minExpiry) =>
+ public IAsyncEnumerable GetUseCaseParticipationForCompany(string bpnl, DateTimeOffset minExpiry) =>
_context.VerifiedCredentialTypes
.Where(t => t.VerifiedCredentialTypeAssignedKind!.VerifiedCredentialTypeKindId == VerifiedCredentialTypeKindId.FRAMEWORK)
.Select(t => new
@@ -49,13 +49,13 @@ public IAsyncEnumerable GetUseCaseParticipatio
TypeId = t.Id,
ExternalTypeDetails = t.VerifiedCredentialTypeAssignedExternalType!.VerifiedCredentialExternalType!.VerifiedCredentialExternalTypeDetailVersions
})
- .Select(x => new UseCaseParticipationTransferData(
+ .Select(x => new UseCaseParticipationData(
x.UseCase!.Name,
x.UseCase.Shortname,
x.TypeId,
x.ExternalTypeDetails
.Select(e =>
- new CompanySsiExternalTypeDetailTransferData(
+ new CompanySsiExternalTypeDetailData(
new ExternalTypeDetailData(
e.Id,
e.VerifiedCredentialExternalTypeId,
@@ -67,11 +67,11 @@ public IAsyncEnumerable GetUseCaseParticipatio
.Where(ssi =>
ssi.Bpnl == bpnl &&
ssi.VerifiedCredentialTypeId == x.TypeId &&
- ssi.CompanySsiDetailStatusId != CompanySsiDetailStatusId.INACTIVE &&
+ (ssi.CompanySsiDetailStatusId == CompanySsiDetailStatusId.ACTIVE || ssi.CompanySsiDetailStatusId == CompanySsiDetailStatusId.PENDING) &&
ssi.VerifiedCredentialExternalTypeDetailVersionId == e.Id &&
- ssi.ExpiryDate > minExpiry)
+ (ssi.ExpiryDate == null || ssi.ExpiryDate > minExpiry))
.Select(ssi =>
- new CompanySsiDetailTransferData(
+ new CompanySsiDetailData(
ssi.Id,
ssi.CompanySsiDetailStatusId,
ssi.ExpiryDate,
@@ -79,13 +79,12 @@ public IAsyncEnumerable GetUseCaseParticipatio
d.Id,
d.DocumentName,
d.DocumentTypeId))))
- .Take(2)
))
))
.ToAsyncEnumerable();
///
- public IAsyncEnumerable GetSsiCertificates(string bpnl, DateTimeOffset minExpiry) =>
+ public IAsyncEnumerable GetSsiCertificates(string bpnl, DateTimeOffset minExpiry) =>
_context.VerifiedCredentialTypes
.Where(types => types.VerifiedCredentialTypeAssignedKind != null && types.VerifiedCredentialTypeAssignedKind!.VerifiedCredentialTypeKindId != VerifiedCredentialTypeKindId.FRAMEWORK)
.Select(t => new
@@ -93,11 +92,11 @@ public IAsyncEnumerable GetSsiCertificates(string bp
TypeId = t.Id,
ExternalTypeDetails = t.VerifiedCredentialTypeAssignedExternalType!.VerifiedCredentialExternalType!.VerifiedCredentialExternalTypeDetailVersions
})
- .Select(x => new SsiCertificateTransferData(
+ .Select(x => new CertificateParticipationData(
x.TypeId,
x.ExternalTypeDetails
.Select(e =>
- new SsiCertificateExternalTypeDetailTransferData(
+ new CompanySsiExternalTypeDetailData(
new ExternalTypeDetailData(
e.Id,
e.VerifiedCredentialExternalTypeId,
@@ -109,10 +108,10 @@ public IAsyncEnumerable GetSsiCertificates(string bp
.Where(ssi =>
ssi.Bpnl == bpnl &&
ssi.VerifiedCredentialTypeId == x.TypeId &&
- ssi.CompanySsiDetailStatusId != CompanySsiDetailStatusId.INACTIVE &&
- ssi.ExpiryDate > minExpiry)
+ (ssi.CompanySsiDetailStatusId == CompanySsiDetailStatusId.ACTIVE || ssi.CompanySsiDetailStatusId == CompanySsiDetailStatusId.PENDING) &&
+ (ssi.ExpiryDate == null || ssi.ExpiryDate > minExpiry))
.Select(ssi =>
- new CompanySsiDetailTransferData(
+ new CompanySsiDetailData(
ssi.Id,
ssi.CompanySsiDetailStatusId,
ssi.ExpiryDate,
@@ -120,7 +119,6 @@ public IAsyncEnumerable GetSsiCertificates(string bp
d.Id,
d.DocumentName,
d.DocumentTypeId))))
- .Take(2)
))
))
.ToAsyncEnumerable();
@@ -144,17 +142,18 @@ public Task CheckSsiDetailsExistsForCompany(string bpnl, VerifiedCredentia
(verifiedCredentialExternalTypeUseCaseDetailId == null || x.VerifiedCredentialExternalTypeDetailVersionId == verifiedCredentialExternalTypeUseCaseDetailId));
///
- public Task<(bool Exists, string? Version, string? Template, IEnumerable ExternalTypeIds, DateTimeOffset Expiry)> CheckCredentialTypeIdExistsForExternalTypeDetailVersionId(Guid verifiedCredentialExternalTypeUseCaseDetailId, VerifiedCredentialTypeId verifiedCredentialTypeId) =>
+ public Task<(bool Exists, string? Version, string? Template, IEnumerable ExternalTypeIds, DateTimeOffset Expiry, bool PendingCredentialRequestExists)> CheckCredentialTypeIdExistsForExternalTypeDetailVersionId(Guid verifiedCredentialExternalTypeUseCaseDetailId, VerifiedCredentialTypeId verifiedCredentialTypeId, string bpnl) =>
_context.VerifiedCredentialExternalTypeDetailVersions
.Where(x =>
x.Id == verifiedCredentialExternalTypeUseCaseDetailId &&
x.VerifiedCredentialExternalType!.VerifiedCredentialTypeAssignedExternalTypes.Any(y => y.VerifiedCredentialTypeId == verifiedCredentialTypeId))
- .Select(x => new ValueTuple, DateTimeOffset>(
+ .Select(x => new ValueTuple, DateTimeOffset, bool>(
true,
x.Version,
x.Template,
x.VerifiedCredentialExternalType!.VerifiedCredentialTypeAssignedExternalTypes.Select(y => y.VerifiedCredentialExternalTypeId),
- x.Expiry))
+ x.Expiry,
+ x.CompanySsiDetails.Any(ssi => ssi.Bpnl == bpnl && ssi.CompanySsiDetailStatusId == CompanySsiDetailStatusId.PENDING)))
.SingleOrDefaultAsync();
///
@@ -199,6 +198,7 @@ public IAsyncEnumerable GetOwnCredentialDetails(str
x.ProcessId,
x.VerifiedCredentialType!.VerifiedCredentialTypeAssignedKind == null ? null : x.VerifiedCredentialType!.VerifiedCredentialTypeAssignedKind!.VerifiedCredentialTypeKindId,
x.Bpnl,
+ x.CreatorUserId,
x.CompanySsiProcessData!.Schema,
x.VerifiedCredentialExternalTypeDetailVersion == null ?
null :
@@ -213,13 +213,14 @@ public IAsyncEnumerable GetOwnCredentialDetails(str
.SingleOrDefaultAsync();
///
- public Task<(bool Exists, CompanySsiDetailStatusId Status, VerifiedCredentialTypeId Type, Guid? ProcessId, IEnumerable ProcessStepIds)> GetSsiRejectionData(Guid credentialId) =>
+ public Task<(bool Exists, CompanySsiDetailStatusId Status, VerifiedCredentialTypeId Type, string UserId, Guid? ProcessId, IEnumerable ProcessStepIds)> GetSsiRejectionData(Guid credentialId) =>
_context.CompanySsiDetails
.Where(x => x.Id == credentialId)
- .Select(x => new ValueTuple>(
+ .Select(x => new ValueTuple>(
true,
x.CompanySsiDetailStatusId,
x.VerifiedCredentialTypeId,
+ x.CreatorUserId,
x.ProcessId,
x.Process!.ProcessSteps.Where(ps => ps.ProcessStepStatusId == ProcessStepStatusId.TODO).Select(p => p.Id)
))
diff --git a/src/database/SsiCredentialIssuer.DbAccess/Repositories/ICompanySsiDetailsRepository.cs b/src/database/SsiCredentialIssuer.DbAccess/Repositories/ICompanySsiDetailsRepository.cs
index 1f96bc84..8d6ee8a4 100644
--- a/src/database/SsiCredentialIssuer.DbAccess/Repositories/ICompanySsiDetailsRepository.cs
+++ b/src/database/SsiCredentialIssuer.DbAccess/Repositories/ICompanySsiDetailsRepository.cs
@@ -32,7 +32,7 @@ public interface ICompanySsiDetailsRepository
/// Bpnl of the company
/// The minimum datetime the expiry date should have
/// AsyncEnumerable of UseCaseParticipation
- IAsyncEnumerable GetUseCaseParticipationForCompany(string bpnl, DateTimeOffset minExpiry);
+ IAsyncEnumerable GetUseCaseParticipationForCompany(string bpnl, DateTimeOffset minExpiry);
///
/// Gets the company credential details for the given company id
@@ -40,7 +40,7 @@ public interface ICompanySsiDetailsRepository
/// Bpnl of the company
/// The minimum datetime the expiry date should have
/// AsyncEnumerable of SsiCertificateData
- IAsyncEnumerable GetSsiCertificates(string bpnl, DateTimeOffset minExpiry);
+ IAsyncEnumerable GetSsiCertificates(string bpnl, DateTimeOffset minExpiry);
///
/// Creates the credential details
@@ -69,8 +69,9 @@ public interface ICompanySsiDetailsRepository
///
/// Id of vc external type use case detail id
/// Id of the vc type
+ /// The business partner number of the current user
/// Returns a valueTuple with identifiers if the externalTypeUseCaseDetailId exists and the corresponding credentialTypeId
- Task<(bool Exists, string? Version, string? Template, IEnumerable ExternalTypeIds, DateTimeOffset Expiry)> CheckCredentialTypeIdExistsForExternalTypeDetailVersionId(Guid verifiedCredentialExternalTypeUseCaseDetailId, VerifiedCredentialTypeId verifiedCredentialTypeId);
+ Task<(bool Exists, string? Version, string? Template, IEnumerable ExternalTypeIds, DateTimeOffset Expiry, bool PendingCredentialRequestExists)> CheckCredentialTypeIdExistsForExternalTypeDetailVersionId(Guid verifiedCredentialExternalTypeUseCaseDetailId, VerifiedCredentialTypeId verifiedCredentialTypeId, string bpnl);
///
/// Checks whether the given credentialTypeId is a Certificate
@@ -94,7 +95,7 @@ public interface ICompanySsiDetailsRepository
IAsyncEnumerable GetOwnCredentialDetails(string bpnl);
Task<(bool exists, SsiApprovalData data)> GetSsiApprovalData(Guid credentialId);
- Task<(bool Exists, CompanySsiDetailStatusId Status, VerifiedCredentialTypeId Type, Guid? ProcessId, IEnumerable ProcessStepIds)> GetSsiRejectionData(Guid credentialId);
+ Task<(bool Exists, CompanySsiDetailStatusId Status, VerifiedCredentialTypeId Type, string UserId, Guid? ProcessId, IEnumerable ProcessStepIds)> GetSsiRejectionData(Guid credentialId);
void AttachAndModifyCompanySsiDetails(Guid id, Action? initialize, Action updateFields);
IAsyncEnumerable GetCertificateTypes(string bpnl);
IAsyncEnumerable GetExpiryData(DateTimeOffset now, DateTimeOffset inactiveVcsToDelete, DateTimeOffset expiredVcsToDelete);
diff --git a/src/database/SsiCredentialIssuer.Migrations/Migrations/20240503142547_1.0.0-rc.4.Designer.cs b/src/database/SsiCredentialIssuer.Migrations/Migrations/20240503142547_1.0.0-rc.4.Designer.cs
new file mode 100644
index 00000000..e7ca785a
--- /dev/null
+++ b/src/database/SsiCredentialIssuer.Migrations/Migrations/20240503142547_1.0.0-rc.4.Designer.cs
@@ -0,0 +1,1630 @@
+/********************************************************************************
+ * Copyright (c) 2024 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Apache License, Version 2.0 which is available at
+ * https://www.apache.org/licenses/LICENSE-2.0.
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ ********************************************************************************/
+
+//
+using System;
+using System.Text.Json;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+using Org.Eclipse.TractusX.SsiCredentialIssuer.Entities;
+
+#nullable disable
+
+namespace Org.Eclipse.TractusX.SsiCredentialIssuer.Migrations.Migrations
+{
+ [DbContext(typeof(IssuerDbContext))]
+ [Migration("20240503142547_1.0.0-rc.4")]
+ partial class _100rc4
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasDefaultSchema("issuer")
+ .UseCollation("en_US.utf8")
+ .HasAnnotation("ProductVersion", "8.0.4")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.AuditEntities.AuditCompanySsiDetail20240228", b =>
+ {
+ b.Property("AuditV1Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1id");
+
+ b.Property("AuditV1DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v1date_last_changed");
+
+ b.Property("AuditV1LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1last_editor_id");
+
+ b.Property("AuditV1OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v1operation_id");
+
+ b.Property("Bpnl")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("bpnl");
+
+ b.Property("CompanySsiDetailStatusId")
+ .HasColumnType("integer")
+ .HasColumnName("company_ssi_detail_status_id");
+
+ b.Property("CreatorUserId")
+ .HasColumnType("uuid")
+ .HasColumnName("creator_user_id");
+
+ b.Property("Credential")
+ .HasColumnType("text")
+ .HasColumnName("credential");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("ExpiryCheckTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("expiry_check_type_id");
+
+ b.Property("ExpiryDate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("expiry_date");
+
+ b.Property("ExternalCredentialId")
+ .HasColumnType("uuid")
+ .HasColumnName("external_credential_id");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("IssuerBpn")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("issuer_bpn");
+
+ b.Property("LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_editor_id");
+
+ b.Property("ProcessId")
+ .HasColumnType("uuid")
+ .HasColumnName("process_id");
+
+ b.Property("VerifiedCredentialExternalTypeDetailVersionId")
+ .HasColumnType("uuid")
+ .HasColumnName("verified_credential_external_type_detail_version_id");
+
+ b.Property("VerifiedCredentialTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("verified_credential_type_id");
+
+ b.HasKey("AuditV1Id")
+ .HasName("pk_audit_company_ssi_detail20240228");
+
+ b.ToTable("audit_company_ssi_detail20240228", "issuer");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.AuditEntities.AuditCompanySsiDetail20240419", b =>
+ {
+ b.Property("AuditV2Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v2id");
+
+ b.Property("AuditV2DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v2date_last_changed");
+
+ b.Property("AuditV2LastEditorId")
+ .HasColumnType("text")
+ .HasColumnName("audit_v2last_editor_id");
+
+ b.Property("AuditV2OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v2operation_id");
+
+ b.Property("Bpnl")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("bpnl");
+
+ b.Property("CompanySsiDetailStatusId")
+ .HasColumnType("integer")
+ .HasColumnName("company_ssi_detail_status_id");
+
+ b.Property("CreatorUserId")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("creator_user_id");
+
+ b.Property("Credential")
+ .HasColumnType("text")
+ .HasColumnName("credential");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("ExpiryCheckTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("expiry_check_type_id");
+
+ b.Property("ExpiryDate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("expiry_date");
+
+ b.Property("ExternalCredentialId")
+ .HasColumnType("uuid")
+ .HasColumnName("external_credential_id");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("IssuerBpn")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("issuer_bpn");
+
+ b.Property("LastEditorId")
+ .HasColumnType("text")
+ .HasColumnName("last_editor_id");
+
+ b.Property("ProcessId")
+ .HasColumnType("uuid")
+ .HasColumnName("process_id");
+
+ b.Property("VerifiedCredentialExternalTypeDetailVersionId")
+ .HasColumnType("uuid")
+ .HasColumnName("verified_credential_external_type_detail_version_id");
+
+ b.Property("VerifiedCredentialTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("verified_credential_type_id");
+
+ b.HasKey("AuditV2Id")
+ .HasName("pk_audit_company_ssi_detail20240419");
+
+ b.ToTable("audit_company_ssi_detail20240419", "issuer");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.AuditEntities.AuditDocument20240305", b =>
+ {
+ b.Property("AuditV1Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1id");
+
+ b.Property("AuditV1DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v1date_last_changed");
+
+ b.Property("AuditV1LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1last_editor_id");
+
+ b.Property("AuditV1OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v1operation_id");
+
+ b.Property("CompanyUserId")
+ .HasColumnType("uuid")
+ .HasColumnName("company_user_id");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("DocumentContent")
+ .HasColumnType("bytea")
+ .HasColumnName("document_content");
+
+ b.Property("DocumentHash")
+ .HasColumnType("bytea")
+ .HasColumnName("document_hash");
+
+ b.Property("DocumentName")
+ .HasColumnType("text")
+ .HasColumnName("document_name");
+
+ b.Property("DocumentStatusId")
+ .HasColumnType("integer")
+ .HasColumnName("document_status_id");
+
+ b.Property("DocumentTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("document_type_id");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_editor_id");
+
+ b.Property("MediaTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("media_type_id");
+
+ b.HasKey("AuditV1Id")
+ .HasName("pk_audit_document20240305");
+
+ b.ToTable("audit_document20240305", "issuer");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.AuditEntities.AuditDocument20240419", b =>
+ {
+ b.Property("AuditV2Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v2id");
+
+ b.Property("AuditV2DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v2date_last_changed");
+
+ b.Property("AuditV2LastEditorId")
+ .HasColumnType("text")
+ .HasColumnName("audit_v2last_editor_id");
+
+ b.Property("AuditV2OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v2operation_id");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("DocumentContent")
+ .HasColumnType("bytea")
+ .HasColumnName("document_content");
+
+ b.Property("DocumentHash")
+ .HasColumnType("bytea")
+ .HasColumnName("document_hash");
+
+ b.Property("DocumentName")
+ .HasColumnType("text")
+ .HasColumnName("document_name");
+
+ b.Property("DocumentStatusId")
+ .HasColumnType("integer")
+ .HasColumnName("document_status_id");
+
+ b.Property("DocumentTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("document_type_id");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("IdentityId")
+ .HasColumnType("text")
+ .HasColumnName("identity_id");
+
+ b.Property("LastEditorId")
+ .HasColumnType("text")
+ .HasColumnName("last_editor_id");
+
+ b.Property("MediaTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("media_type_id");
+
+ b.HasKey("AuditV2Id")
+ .HasName("pk_audit_document20240419");
+
+ b.ToTable("audit_document20240419", "issuer");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.CompanySsiDetail", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("Bpnl")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("bpnl");
+
+ b.Property("CompanySsiDetailStatusId")
+ .HasColumnType("integer")
+ .HasColumnName("company_ssi_detail_status_id");
+
+ b.Property("CreatorUserId")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("creator_user_id");
+
+ b.Property("Credential")
+ .HasColumnType("text")
+ .HasColumnName("credential");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("ExpiryCheckTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("expiry_check_type_id");
+
+ b.Property("ExpiryDate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("expiry_date");
+
+ b.Property("ExternalCredentialId")
+ .HasColumnType("uuid")
+ .HasColumnName("external_credential_id");
+
+ b.Property("IssuerBpn")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("issuer_bpn");
+
+ b.Property("LastEditorId")
+ .HasColumnType("text")
+ .HasColumnName("last_editor_id");
+
+ b.Property("ProcessId")
+ .HasColumnType("uuid")
+ .HasColumnName("process_id");
+
+ b.Property("VerifiedCredentialExternalTypeDetailVersionId")
+ .HasColumnType("uuid")
+ .HasColumnName("verified_credential_external_type_detail_version_id");
+
+ b.Property("VerifiedCredentialTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("verified_credential_type_id");
+
+ b.HasKey("Id")
+ .HasName("pk_company_ssi_details");
+
+ b.HasIndex("CompanySsiDetailStatusId")
+ .HasDatabaseName("ix_company_ssi_details_company_ssi_detail_status_id");
+
+ b.HasIndex("ExpiryCheckTypeId")
+ .HasDatabaseName("ix_company_ssi_details_expiry_check_type_id");
+
+ b.HasIndex("ProcessId")
+ .HasDatabaseName("ix_company_ssi_details_process_id");
+
+ b.HasIndex("VerifiedCredentialExternalTypeDetailVersionId")
+ .HasDatabaseName("ix_company_ssi_details_verified_credential_external_type_detai");
+
+ b.HasIndex("VerifiedCredentialTypeId")
+ .HasDatabaseName("ix_company_ssi_details_verified_credential_type_id");
+
+ b.ToTable("company_ssi_details", "issuer", t =>
+ {
+ t.HasTrigger("LC_TRIGGER_AFTER_INSERT_COMPANYSSIDETAIL");
+
+ t.HasTrigger("LC_TRIGGER_AFTER_UPDATE_COMPANYSSIDETAIL");
+ });
+
+ b
+ .HasAnnotation("LC_TRIGGER_AFTER_INSERT_COMPANYSSIDETAIL", "CREATE FUNCTION \"issuer\".\"LC_TRIGGER_AFTER_INSERT_COMPANYSSIDETAIL\"() RETURNS trigger as $LC_TRIGGER_AFTER_INSERT_COMPANYSSIDETAIL$\r\nBEGIN\r\n INSERT INTO \"issuer\".\"audit_company_ssi_detail20240419\" (\"id\", \"bpnl\", \"issuer_bpn\", \"verified_credential_type_id\", \"company_ssi_detail_status_id\", \"date_created\", \"creator_user_id\", \"expiry_date\", \"verified_credential_external_type_detail_version_id\", \"expiry_check_type_id\", \"process_id\", \"external_credential_id\", \"credential\", \"date_last_changed\", \"last_editor_id\", \"audit_v2id\", \"audit_v2operation_id\", \"audit_v2date_last_changed\", \"audit_v2last_editor_id\") SELECT NEW.\"id\", \r\n NEW.\"bpnl\", \r\n NEW.\"issuer_bpn\", \r\n NEW.\"verified_credential_type_id\", \r\n NEW.\"company_ssi_detail_status_id\", \r\n NEW.\"date_created\", \r\n NEW.\"creator_user_id\", \r\n NEW.\"expiry_date\", \r\n NEW.\"verified_credential_external_type_detail_version_id\", \r\n NEW.\"expiry_check_type_id\", \r\n NEW.\"process_id\", \r\n NEW.\"external_credential_id\", \r\n NEW.\"credential\", \r\n NEW.\"date_last_changed\", \r\n NEW.\"last_editor_id\", \r\n gen_random_uuid(), \r\n 1, \r\n CURRENT_TIMESTAMP, \r\n NEW.\"last_editor_id\";\r\nRETURN NEW;\r\nEND;\r\n$LC_TRIGGER_AFTER_INSERT_COMPANYSSIDETAIL$ LANGUAGE plpgsql;\r\nCREATE TRIGGER LC_TRIGGER_AFTER_INSERT_COMPANYSSIDETAIL AFTER INSERT\r\nON \"issuer\".\"company_ssi_details\"\r\nFOR EACH ROW EXECUTE PROCEDURE \"issuer\".\"LC_TRIGGER_AFTER_INSERT_COMPANYSSIDETAIL\"();")
+ .HasAnnotation("LC_TRIGGER_AFTER_UPDATE_COMPANYSSIDETAIL", "CREATE FUNCTION \"issuer\".\"LC_TRIGGER_AFTER_UPDATE_COMPANYSSIDETAIL\"() RETURNS trigger as $LC_TRIGGER_AFTER_UPDATE_COMPANYSSIDETAIL$\r\nBEGIN\r\n INSERT INTO \"issuer\".\"audit_company_ssi_detail20240419\" (\"id\", \"bpnl\", \"issuer_bpn\", \"verified_credential_type_id\", \"company_ssi_detail_status_id\", \"date_created\", \"creator_user_id\", \"expiry_date\", \"verified_credential_external_type_detail_version_id\", \"expiry_check_type_id\", \"process_id\", \"external_credential_id\", \"credential\", \"date_last_changed\", \"last_editor_id\", \"audit_v2id\", \"audit_v2operation_id\", \"audit_v2date_last_changed\", \"audit_v2last_editor_id\") SELECT NEW.\"id\", \r\n NEW.\"bpnl\", \r\n NEW.\"issuer_bpn\", \r\n NEW.\"verified_credential_type_id\", \r\n NEW.\"company_ssi_detail_status_id\", \r\n NEW.\"date_created\", \r\n NEW.\"creator_user_id\", \r\n NEW.\"expiry_date\", \r\n NEW.\"verified_credential_external_type_detail_version_id\", \r\n NEW.\"expiry_check_type_id\", \r\n NEW.\"process_id\", \r\n NEW.\"external_credential_id\", \r\n NEW.\"credential\", \r\n NEW.\"date_last_changed\", \r\n NEW.\"last_editor_id\", \r\n gen_random_uuid(), \r\n 2, \r\n CURRENT_TIMESTAMP, \r\n NEW.\"last_editor_id\";\r\nRETURN NEW;\r\nEND;\r\n$LC_TRIGGER_AFTER_UPDATE_COMPANYSSIDETAIL$ LANGUAGE plpgsql;\r\nCREATE TRIGGER LC_TRIGGER_AFTER_UPDATE_COMPANYSSIDETAIL AFTER UPDATE\r\nON \"issuer\".\"company_ssi_details\"\r\nFOR EACH ROW EXECUTE PROCEDURE \"issuer\".\"LC_TRIGGER_AFTER_UPDATE_COMPANYSSIDETAIL\"();");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.CompanySsiDetailAssignedDocument", b =>
+ {
+ b.Property("DocumentId")
+ .HasColumnType("uuid")
+ .HasColumnName("document_id");
+
+ b.Property("CompanySsiDetailId")
+ .HasColumnType("uuid")
+ .HasColumnName("company_ssi_detail_id");
+
+ b.HasKey("DocumentId", "CompanySsiDetailId")
+ .HasName("pk_company_ssi_detail_assigned_documents");
+
+ b.HasIndex("CompanySsiDetailId")
+ .HasDatabaseName("ix_company_ssi_detail_assigned_documents_company_ssi_detail_id");
+
+ b.ToTable("company_ssi_detail_assigned_documents", "issuer");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.CompanySsiDetailStatus", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ b.Property("Label")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("label");
+
+ b.HasKey("Id")
+ .HasName("pk_company_ssi_detail_statuses");
+
+ b.ToTable("company_ssi_detail_statuses", "issuer");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Label = "PENDING"
+ },
+ new
+ {
+ Id = 2,
+ Label = "ACTIVE"
+ },
+ new
+ {
+ Id = 3,
+ Label = "REVOKED"
+ },
+ new
+ {
+ Id = 4,
+ Label = "INACTIVE"
+ });
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.CompanySsiProcessData", b =>
+ {
+ b.Property("CompanySsiDetailId")
+ .HasColumnType("uuid")
+ .HasColumnName("company_ssi_detail_id");
+
+ b.Property("CallbackUrl")
+ .HasColumnType("text")
+ .HasColumnName("callback_url");
+
+ b.Property("ClientId")
+ .HasColumnType("text")
+ .HasColumnName("client_id");
+
+ b.Property("ClientSecret")
+ .HasColumnType("bytea")
+ .HasColumnName("client_secret");
+
+ b.Property("CredentialTypeKindId")
+ .HasColumnType("integer")
+ .HasColumnName("credential_type_kind_id");
+
+ b.Property("EncryptionMode")
+ .HasColumnType("integer")
+ .HasColumnName("encryption_mode");
+
+ b.Property("HolderWalletUrl")
+ .HasColumnType("text")
+ .HasColumnName("holder_wallet_url");
+
+ b.Property("InitializationVector")
+ .HasColumnType("bytea")
+ .HasColumnName("initialization_vector");
+
+ b.Property("Schema")
+ .IsRequired()
+ .HasColumnType("jsonb")
+ .HasColumnName("schema");
+
+ b.HasKey("CompanySsiDetailId")
+ .HasName("pk_company_ssi_process_data");
+
+ b.HasIndex("CredentialTypeKindId")
+ .HasDatabaseName("ix_company_ssi_process_data_credential_type_kind_id");
+
+ b.ToTable("company_ssi_process_data", "issuer");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.Document", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("DocumentContent")
+ .IsRequired()
+ .HasColumnType("bytea")
+ .HasColumnName("document_content");
+
+ b.Property("DocumentHash")
+ .IsRequired()
+ .HasColumnType("bytea")
+ .HasColumnName("document_hash");
+
+ b.Property("DocumentName")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("document_name");
+
+ b.Property("DocumentStatusId")
+ .HasColumnType("integer")
+ .HasColumnName("document_status_id");
+
+ b.Property("DocumentTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("document_type_id");
+
+ b.Property("IdentityId")
+ .HasColumnType("text")
+ .HasColumnName("identity_id");
+
+ b.Property("LastEditorId")
+ .HasColumnType("text")
+ .HasColumnName("last_editor_id");
+
+ b.Property("MediaTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("media_type_id");
+
+ b.HasKey("Id")
+ .HasName("pk_documents");
+
+ b.HasIndex("DocumentStatusId")
+ .HasDatabaseName("ix_documents_document_status_id");
+
+ b.HasIndex("DocumentTypeId")
+ .HasDatabaseName("ix_documents_document_type_id");
+
+ b.HasIndex("MediaTypeId")
+ .HasDatabaseName("ix_documents_media_type_id");
+
+ b.ToTable("documents", "issuer", t =>
+ {
+ t.HasTrigger("LC_TRIGGER_AFTER_INSERT_DOCUMENT");
+
+ t.HasTrigger("LC_TRIGGER_AFTER_UPDATE_DOCUMENT");
+ });
+
+ b
+ .HasAnnotation("LC_TRIGGER_AFTER_INSERT_DOCUMENT", "CREATE FUNCTION \"issuer\".\"LC_TRIGGER_AFTER_INSERT_DOCUMENT\"() RETURNS trigger as $LC_TRIGGER_AFTER_INSERT_DOCUMENT$\r\nBEGIN\r\n INSERT INTO \"issuer\".\"audit_document20240419\" (\"id\", \"date_created\", \"document_hash\", \"document_content\", \"document_name\", \"media_type_id\", \"document_type_id\", \"document_status_id\", \"identity_id\", \"date_last_changed\", \"last_editor_id\", \"audit_v2id\", \"audit_v2operation_id\", \"audit_v2date_last_changed\", \"audit_v2last_editor_id\") SELECT NEW.\"id\", \r\n NEW.\"date_created\", \r\n NEW.\"document_hash\", \r\n NEW.\"document_content\", \r\n NEW.\"document_name\", \r\n NEW.\"media_type_id\", \r\n NEW.\"document_type_id\", \r\n NEW.\"document_status_id\", \r\n NEW.\"identity_id\", \r\n NEW.\"date_last_changed\", \r\n NEW.\"last_editor_id\", \r\n gen_random_uuid(), \r\n 1, \r\n CURRENT_TIMESTAMP, \r\n NEW.\"last_editor_id\";\r\nRETURN NEW;\r\nEND;\r\n$LC_TRIGGER_AFTER_INSERT_DOCUMENT$ LANGUAGE plpgsql;\r\nCREATE TRIGGER LC_TRIGGER_AFTER_INSERT_DOCUMENT AFTER INSERT\r\nON \"issuer\".\"documents\"\r\nFOR EACH ROW EXECUTE PROCEDURE \"issuer\".\"LC_TRIGGER_AFTER_INSERT_DOCUMENT\"();")
+ .HasAnnotation("LC_TRIGGER_AFTER_UPDATE_DOCUMENT", "CREATE FUNCTION \"issuer\".\"LC_TRIGGER_AFTER_UPDATE_DOCUMENT\"() RETURNS trigger as $LC_TRIGGER_AFTER_UPDATE_DOCUMENT$\r\nBEGIN\r\n INSERT INTO \"issuer\".\"audit_document20240419\" (\"id\", \"date_created\", \"document_hash\", \"document_content\", \"document_name\", \"media_type_id\", \"document_type_id\", \"document_status_id\", \"identity_id\", \"date_last_changed\", \"last_editor_id\", \"audit_v2id\", \"audit_v2operation_id\", \"audit_v2date_last_changed\", \"audit_v2last_editor_id\") SELECT NEW.\"id\", \r\n NEW.\"date_created\", \r\n NEW.\"document_hash\", \r\n NEW.\"document_content\", \r\n NEW.\"document_name\", \r\n NEW.\"media_type_id\", \r\n NEW.\"document_type_id\", \r\n NEW.\"document_status_id\", \r\n NEW.\"identity_id\", \r\n NEW.\"date_last_changed\", \r\n NEW.\"last_editor_id\", \r\n gen_random_uuid(), \r\n 2, \r\n CURRENT_TIMESTAMP, \r\n NEW.\"last_editor_id\";\r\nRETURN NEW;\r\nEND;\r\n$LC_TRIGGER_AFTER_UPDATE_DOCUMENT$ LANGUAGE plpgsql;\r\nCREATE TRIGGER LC_TRIGGER_AFTER_UPDATE_DOCUMENT AFTER UPDATE\r\nON \"issuer\".\"documents\"\r\nFOR EACH ROW EXECUTE PROCEDURE \"issuer\".\"LC_TRIGGER_AFTER_UPDATE_DOCUMENT\"();");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.DocumentStatus", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ b.Property("Label")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("label");
+
+ b.HasKey("Id")
+ .HasName("pk_document_status");
+
+ b.ToTable("document_status", "issuer");
+
+ b.HasData(
+ new
+ {
+ Id = 2,
+ Label = "ACTIVE"
+ },
+ new
+ {
+ Id = 3,
+ Label = "INACTIVE"
+ });
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.DocumentType", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ b.Property("Label")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("label");
+
+ b.HasKey("Id")
+ .HasName("pk_document_types");
+
+ b.ToTable("document_types", "issuer");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Label = "PRESENTATION"
+ },
+ new
+ {
+ Id = 2,
+ Label = "CREDENTIAL"
+ },
+ new
+ {
+ Id = 3,
+ Label = "VERIFIED_CREDENTIAL"
+ });
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.ExpiryCheckType", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ b.Property("Label")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("label");
+
+ b.HasKey("Id")
+ .HasName("pk_expiry_check_types");
+
+ b.ToTable("expiry_check_types", "issuer");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Label = "ONE_MONTH"
+ },
+ new
+ {
+ Id = 2,
+ Label = "TWO_WEEKS"
+ },
+ new
+ {
+ Id = 3,
+ Label = "ONE_DAY"
+ });
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.MediaType", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ b.Property("Label")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("label");
+
+ b.HasKey("Id")
+ .HasName("pk_media_types");
+
+ b.ToTable("media_types", "issuer");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Label = "JPEG"
+ },
+ new
+ {
+ Id = 2,
+ Label = "GIF"
+ },
+ new
+ {
+ Id = 3,
+ Label = "PNG"
+ },
+ new
+ {
+ Id = 4,
+ Label = "SVG"
+ },
+ new
+ {
+ Id = 5,
+ Label = "TIFF"
+ },
+ new
+ {
+ Id = 6,
+ Label = "PDF"
+ },
+ new
+ {
+ Id = 7,
+ Label = "JSON"
+ },
+ new
+ {
+ Id = 8,
+ Label = "PEM"
+ },
+ new
+ {
+ Id = 9,
+ Label = "CA_CERT"
+ },
+ new
+ {
+ Id = 10,
+ Label = "PKX_CER"
+ },
+ new
+ {
+ Id = 11,
+ Label = "OCTET"
+ });
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.Process", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("LockExpiryDate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("lock_expiry_date");
+
+ b.Property("ProcessTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("process_type_id");
+
+ b.Property("Version")
+ .IsConcurrencyToken()
+ .HasColumnType("uuid")
+ .HasColumnName("version");
+
+ b.HasKey("Id")
+ .HasName("pk_processes");
+
+ b.HasIndex("ProcessTypeId")
+ .HasDatabaseName("ix_processes_process_type_id");
+
+ b.ToTable("processes", "issuer");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.ProcessStep", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("Message")
+ .HasColumnType("text")
+ .HasColumnName("message");
+
+ b.Property("ProcessId")
+ .HasColumnType("uuid")
+ .HasColumnName("process_id");
+
+ b.Property("ProcessStepStatusId")
+ .HasColumnType("integer")
+ .HasColumnName("process_step_status_id");
+
+ b.Property("ProcessStepTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("process_step_type_id");
+
+ b.HasKey("Id")
+ .HasName("pk_process_steps");
+
+ b.HasIndex("ProcessId")
+ .HasDatabaseName("ix_process_steps_process_id");
+
+ b.HasIndex("ProcessStepStatusId")
+ .HasDatabaseName("ix_process_steps_process_step_status_id");
+
+ b.HasIndex("ProcessStepTypeId")
+ .HasDatabaseName("ix_process_steps_process_step_type_id");
+
+ b.ToTable("process_steps", "issuer");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.ProcessStepStatus", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ b.Property("Label")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("label");
+
+ b.HasKey("Id")
+ .HasName("pk_process_step_statuses");
+
+ b.ToTable("process_step_statuses", "issuer");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Label = "TODO"
+ },
+ new
+ {
+ Id = 2,
+ Label = "DONE"
+ },
+ new
+ {
+ Id = 3,
+ Label = "SKIPPED"
+ },
+ new
+ {
+ Id = 4,
+ Label = "FAILED"
+ },
+ new
+ {
+ Id = 5,
+ Label = "DUPLICATE"
+ });
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.ProcessStepType", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ b.Property("Label")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("label");
+
+ b.HasKey("Id")
+ .HasName("pk_process_step_types");
+
+ b.ToTable("process_step_types", "issuer");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Label = "CREATE_CREDENTIAL"
+ },
+ new
+ {
+ Id = 2,
+ Label = "SIGN_CREDENTIAL"
+ },
+ new
+ {
+ Id = 3,
+ Label = "SAVE_CREDENTIAL_DOCUMENT"
+ },
+ new
+ {
+ Id = 4,
+ Label = "CREATE_CREDENTIAL_FOR_HOLDER"
+ },
+ new
+ {
+ Id = 5,
+ Label = "TRIGGER_CALLBACK"
+ },
+ new
+ {
+ Id = 100,
+ Label = "REVOKE_CREDENTIAL"
+ },
+ new
+ {
+ Id = 101,
+ Label = "TRIGGER_NOTIFICATION"
+ },
+ new
+ {
+ Id = 102,
+ Label = "TRIGGER_MAIL"
+ });
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.ProcessType", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ b.Property("Label")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("label");
+
+ b.HasKey("Id")
+ .HasName("pk_process_types");
+
+ b.ToTable("process_types", "issuer");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Label = "CREATE_CREDENTIAL"
+ },
+ new
+ {
+ Id = 2,
+ Label = "DECLINE_CREDENTIAL"
+ });
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.UseCase", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("name");
+
+ b.Property("Shortname")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("shortname");
+
+ b.HasKey("Id")
+ .HasName("pk_use_cases");
+
+ b.ToTable("use_cases", "issuer");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialExternalType", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ b.Property("Label")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("label");
+
+ b.HasKey("Id")
+ .HasName("pk_verified_credential_external_types");
+
+ b.ToTable("verified_credential_external_types", "issuer");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Label = "TRACEABILITY_CREDENTIAL"
+ },
+ new
+ {
+ Id = 2,
+ Label = "PCF_CREDENTIAL"
+ },
+ new
+ {
+ Id = 3,
+ Label = "BEHAVIOR_TWIN_CREDENTIAL"
+ },
+ new
+ {
+ Id = 4,
+ Label = "VEHICLE_DISMANTLE"
+ },
+ new
+ {
+ Id = 5,
+ Label = "CIRCULAR_ECONOMY"
+ },
+ new
+ {
+ Id = 7,
+ Label = "BUSINESS_PARTNER_NUMBER"
+ },
+ new
+ {
+ Id = 8,
+ Label = "DEMAND_AND_CAPACITY_MANAGEMENT"
+ },
+ new
+ {
+ Id = 9,
+ Label = "DEMAND_AND_CAPACITY_MANAGEMENT_PURIS"
+ },
+ new
+ {
+ Id = 10,
+ Label = "BUSINESS_PARTNER_DATA_MANAGEMENT"
+ });
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialExternalTypeDetailVersion", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("Expiry")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("expiry");
+
+ b.Property("Template")
+ .HasColumnType("text")
+ .HasColumnName("template");
+
+ b.Property("ValidFrom")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("valid_from");
+
+ b.Property("VerifiedCredentialExternalTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("verified_credential_external_type_id");
+
+ b.Property("Version")
+ .HasColumnType("text")
+ .HasColumnName("version");
+
+ b.HasKey("Id")
+ .HasName("pk_verified_credential_external_type_detail_versions");
+
+ b.HasIndex("VerifiedCredentialExternalTypeId", "Version")
+ .IsUnique()
+ .HasDatabaseName("ix_verified_credential_external_type_detail_versions_verified_");
+
+ b.ToTable("verified_credential_external_type_detail_versions", "issuer");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialType", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ b.Property("Label")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("label");
+
+ b.HasKey("Id")
+ .HasName("pk_verified_credential_types");
+
+ b.ToTable("verified_credential_types", "issuer");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Label = "TRACEABILITY_FRAMEWORK"
+ },
+ new
+ {
+ Id = 2,
+ Label = "PCF_FRAMEWORK"
+ },
+ new
+ {
+ Id = 3,
+ Label = "BEHAVIOR_TWIN_FRAMEWORK"
+ },
+ new
+ {
+ Id = 4,
+ Label = "DISMANTLER_CERTIFICATE"
+ },
+ new
+ {
+ Id = 5,
+ Label = "CIRCULAR_ECONOMY"
+ },
+ new
+ {
+ Id = 7,
+ Label = "BUSINESS_PARTNER_NUMBER"
+ },
+ new
+ {
+ Id = 8,
+ Label = "DEMAND_AND_CAPACITY_MANAGEMENT"
+ },
+ new
+ {
+ Id = 9,
+ Label = "DEMAND_AND_CAPACITY_MANAGEMENT_PURIS"
+ },
+ new
+ {
+ Id = 10,
+ Label = "BUSINESS_PARTNER_DATA_MANAGEMENT"
+ });
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialTypeAssignedExternalType", b =>
+ {
+ b.Property("VerifiedCredentialTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("verified_credential_type_id");
+
+ b.Property("VerifiedCredentialExternalTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("verified_credential_external_type_id");
+
+ b.HasKey("VerifiedCredentialTypeId", "VerifiedCredentialExternalTypeId")
+ .HasName("pk_verified_credential_type_assigned_external_types");
+
+ b.HasIndex("VerifiedCredentialExternalTypeId")
+ .HasDatabaseName("ix_verified_credential_type_assigned_external_types_verified_c");
+
+ b.HasIndex("VerifiedCredentialTypeId")
+ .IsUnique()
+ .HasDatabaseName("ix_verified_credential_type_assigned_external_types_verified_c1");
+
+ b.ToTable("verified_credential_type_assigned_external_types", "issuer");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialTypeAssignedKind", b =>
+ {
+ b.Property("VerifiedCredentialTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("verified_credential_type_id");
+
+ b.Property("VerifiedCredentialTypeKindId")
+ .HasColumnType("integer")
+ .HasColumnName("verified_credential_type_kind_id");
+
+ b.HasKey("VerifiedCredentialTypeId", "VerifiedCredentialTypeKindId")
+ .HasName("pk_verified_credential_type_assigned_kinds");
+
+ b.HasIndex("VerifiedCredentialTypeId")
+ .HasDatabaseName("ix_verified_credential_type_assigned_kinds_verified_credential");
+
+ b.HasIndex("VerifiedCredentialTypeKindId")
+ .HasDatabaseName("ix_verified_credential_type_assigned_kinds_verified_credential1");
+
+ b.ToTable("verified_credential_type_assigned_kinds", "issuer");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialTypeAssignedUseCase", b =>
+ {
+ b.Property("VerifiedCredentialTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("verified_credential_type_id");
+
+ b.Property("UseCaseId")
+ .HasColumnType("uuid")
+ .HasColumnName("use_case_id");
+
+ b.HasKey("VerifiedCredentialTypeId", "UseCaseId")
+ .HasName("pk_verified_credential_type_assigned_use_cases");
+
+ b.HasIndex("UseCaseId")
+ .IsUnique()
+ .HasDatabaseName("ix_verified_credential_type_assigned_use_cases_use_case_id");
+
+ b.HasIndex("VerifiedCredentialTypeId")
+ .IsUnique()
+ .HasDatabaseName("ix_verified_credential_type_assigned_use_cases_verified_creden");
+
+ b.ToTable("verified_credential_type_assigned_use_cases", "issuer");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialTypeKind", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ b.Property("Label")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("label");
+
+ b.HasKey("Id")
+ .HasName("pk_verified_credential_type_kinds");
+
+ b.ToTable("verified_credential_type_kinds", "issuer");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Label = "FRAMEWORK"
+ },
+ new
+ {
+ Id = 2,
+ Label = "MEMBERSHIP"
+ },
+ new
+ {
+ Id = 3,
+ Label = "BPN"
+ });
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.CompanySsiDetail", b =>
+ {
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.CompanySsiDetailStatus", "CompanySsiDetailStatus")
+ .WithMany("CompanySsiDetails")
+ .HasForeignKey("CompanySsiDetailStatusId")
+ .IsRequired()
+ .HasConstraintName("fk_company_ssi_details_company_ssi_detail_statuses_company_ssi");
+
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.ExpiryCheckType", "ExpiryCheckType")
+ .WithMany("CompanySsiDetails")
+ .HasForeignKey("ExpiryCheckTypeId")
+ .HasConstraintName("fk_company_ssi_details_expiry_check_types_expiry_check_type_id");
+
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.Process", "Process")
+ .WithMany("CompanySsiDetails")
+ .HasForeignKey("ProcessId")
+ .HasConstraintName("fk_company_ssi_details_processes_process_id");
+
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialExternalTypeDetailVersion", "VerifiedCredentialExternalTypeDetailVersion")
+ .WithMany("CompanySsiDetails")
+ .HasForeignKey("VerifiedCredentialExternalTypeDetailVersionId")
+ .HasConstraintName("fk_company_ssi_details_verified_credential_external_type_detai");
+
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialType", "VerifiedCredentialType")
+ .WithMany("CompanySsiDetails")
+ .HasForeignKey("VerifiedCredentialTypeId")
+ .IsRequired()
+ .HasConstraintName("fk_company_ssi_details_verified_credential_types_verified_cred");
+
+ b.Navigation("CompanySsiDetailStatus");
+
+ b.Navigation("ExpiryCheckType");
+
+ b.Navigation("Process");
+
+ b.Navigation("VerifiedCredentialExternalTypeDetailVersion");
+
+ b.Navigation("VerifiedCredentialType");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.CompanySsiDetailAssignedDocument", b =>
+ {
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.CompanySsiDetail", "CompanySsiDetail")
+ .WithMany()
+ .HasForeignKey("CompanySsiDetailId")
+ .IsRequired()
+ .HasConstraintName("fk_company_ssi_detail_assigned_documents_company_ssi_details_c");
+
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.Document", "Document")
+ .WithMany()
+ .HasForeignKey("DocumentId")
+ .IsRequired()
+ .HasConstraintName("fk_company_ssi_detail_assigned_documents_documents_document_id");
+
+ b.Navigation("CompanySsiDetail");
+
+ b.Navigation("Document");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.CompanySsiProcessData", b =>
+ {
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.CompanySsiDetail", "CompanySsiDetail")
+ .WithOne("CompanySsiProcessData")
+ .HasForeignKey("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.CompanySsiProcessData", "CompanySsiDetailId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("fk_company_ssi_process_data_company_ssi_details_company_ssi_de");
+
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialTypeKind", "CredentialTypeKind")
+ .WithMany("CompanySsiProcessData")
+ .HasForeignKey("CredentialTypeKindId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("fk_company_ssi_process_data_verified_credential_type_kinds_cre");
+
+ b.Navigation("CompanySsiDetail");
+
+ b.Navigation("CredentialTypeKind");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.Document", b =>
+ {
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.DocumentStatus", "DocumentStatus")
+ .WithMany("Documents")
+ .HasForeignKey("DocumentStatusId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("fk_documents_document_status_document_status_id");
+
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.DocumentType", "DocumentType")
+ .WithMany("Documents")
+ .HasForeignKey("DocumentTypeId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("fk_documents_document_types_document_type_id");
+
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.MediaType", "MediaType")
+ .WithMany("Documents")
+ .HasForeignKey("MediaTypeId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("fk_documents_media_types_media_type_id");
+
+ b.Navigation("DocumentStatus");
+
+ b.Navigation("DocumentType");
+
+ b.Navigation("MediaType");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.Process", b =>
+ {
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.ProcessType", "ProcessType")
+ .WithMany("Processes")
+ .HasForeignKey("ProcessTypeId")
+ .IsRequired()
+ .HasConstraintName("fk_processes_process_types_process_type_id");
+
+ b.Navigation("ProcessType");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.ProcessStep", b =>
+ {
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.Process", "Process")
+ .WithMany("ProcessSteps")
+ .HasForeignKey("ProcessId")
+ .IsRequired()
+ .HasConstraintName("fk_process_steps_processes_process_id");
+
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.ProcessStepStatus", "ProcessStepStatus")
+ .WithMany("ProcessSteps")
+ .HasForeignKey("ProcessStepStatusId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("fk_process_steps_process_step_statuses_process_step_status_id");
+
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.ProcessStepType", "ProcessStepType")
+ .WithMany("ProcessSteps")
+ .HasForeignKey("ProcessStepTypeId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("fk_process_steps_process_step_types_process_step_type_id");
+
+ b.Navigation("Process");
+
+ b.Navigation("ProcessStepStatus");
+
+ b.Navigation("ProcessStepType");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialExternalTypeDetailVersion", b =>
+ {
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialExternalType", "VerifiedCredentialExternalType")
+ .WithMany("VerifiedCredentialExternalTypeDetailVersions")
+ .HasForeignKey("VerifiedCredentialExternalTypeId")
+ .IsRequired()
+ .HasConstraintName("fk_verified_credential_external_type_detail_versions_verified_");
+
+ b.Navigation("VerifiedCredentialExternalType");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialTypeAssignedExternalType", b =>
+ {
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialExternalType", "VerifiedCredentialExternalType")
+ .WithMany("VerifiedCredentialTypeAssignedExternalTypes")
+ .HasForeignKey("VerifiedCredentialExternalTypeId")
+ .IsRequired()
+ .HasConstraintName("fk_verified_credential_type_assigned_external_types_verified_c");
+
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialType", "VerifiedCredentialType")
+ .WithOne("VerifiedCredentialTypeAssignedExternalType")
+ .HasForeignKey("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialTypeAssignedExternalType", "VerifiedCredentialTypeId")
+ .IsRequired()
+ .HasConstraintName("fk_verified_credential_type_assigned_external_types_verified_c1");
+
+ b.Navigation("VerifiedCredentialExternalType");
+
+ b.Navigation("VerifiedCredentialType");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialTypeAssignedKind", b =>
+ {
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialType", "VerifiedCredentialType")
+ .WithOne("VerifiedCredentialTypeAssignedKind")
+ .HasForeignKey("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialTypeAssignedKind", "VerifiedCredentialTypeId")
+ .IsRequired()
+ .HasConstraintName("fk_verified_credential_type_assigned_kinds_verified_credential");
+
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialTypeKind", "VerifiedCredentialTypeKind")
+ .WithMany("VerifiedCredentialTypeAssignedKinds")
+ .HasForeignKey("VerifiedCredentialTypeKindId")
+ .IsRequired()
+ .HasConstraintName("fk_verified_credential_type_assigned_kinds_verified_credential1");
+
+ b.Navigation("VerifiedCredentialType");
+
+ b.Navigation("VerifiedCredentialTypeKind");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialTypeAssignedUseCase", b =>
+ {
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.UseCase", "UseCase")
+ .WithOne("VerifiedCredentialAssignedUseCase")
+ .HasForeignKey("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialTypeAssignedUseCase", "UseCaseId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("fk_verified_credential_type_assigned_use_cases_use_cases_use_c");
+
+ b.HasOne("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialType", "VerifiedCredentialType")
+ .WithOne("VerifiedCredentialTypeAssignedUseCase")
+ .HasForeignKey("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialTypeAssignedUseCase", "VerifiedCredentialTypeId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("fk_verified_credential_type_assigned_use_cases_verified_creden");
+
+ b.Navigation("UseCase");
+
+ b.Navigation("VerifiedCredentialType");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.CompanySsiDetail", b =>
+ {
+ b.Navigation("CompanySsiProcessData");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.CompanySsiDetailStatus", b =>
+ {
+ b.Navigation("CompanySsiDetails");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.DocumentStatus", b =>
+ {
+ b.Navigation("Documents");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.DocumentType", b =>
+ {
+ b.Navigation("Documents");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.ExpiryCheckType", b =>
+ {
+ b.Navigation("CompanySsiDetails");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.MediaType", b =>
+ {
+ b.Navigation("Documents");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.Process", b =>
+ {
+ b.Navigation("CompanySsiDetails");
+
+ b.Navigation("ProcessSteps");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.ProcessStepStatus", b =>
+ {
+ b.Navigation("ProcessSteps");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.ProcessStepType", b =>
+ {
+ b.Navigation("ProcessSteps");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.ProcessType", b =>
+ {
+ b.Navigation("Processes");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.UseCase", b =>
+ {
+ b.Navigation("VerifiedCredentialAssignedUseCase");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialExternalType", b =>
+ {
+ b.Navigation("VerifiedCredentialExternalTypeDetailVersions");
+
+ b.Navigation("VerifiedCredentialTypeAssignedExternalTypes");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialExternalTypeDetailVersion", b =>
+ {
+ b.Navigation("CompanySsiDetails");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialType", b =>
+ {
+ b.Navigation("CompanySsiDetails");
+
+ b.Navigation("VerifiedCredentialTypeAssignedExternalType");
+
+ b.Navigation("VerifiedCredentialTypeAssignedKind");
+
+ b.Navigation("VerifiedCredentialTypeAssignedUseCase");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities.VerifiedCredentialTypeKind", b =>
+ {
+ b.Navigation("CompanySsiProcessData");
+
+ b.Navigation("VerifiedCredentialTypeAssignedKinds");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/src/database/SsiCredentialIssuer.Migrations/Migrations/20240503142547_1.0.0-rc.4.cs b/src/database/SsiCredentialIssuer.Migrations/Migrations/20240503142547_1.0.0-rc.4.cs
new file mode 100644
index 00000000..c6348805
--- /dev/null
+++ b/src/database/SsiCredentialIssuer.Migrations/Migrations/20240503142547_1.0.0-rc.4.cs
@@ -0,0 +1,87 @@
+/********************************************************************************
+ * Copyright (c) 2024 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Apache License, Version 2.0 which is available at
+ * https://www.apache.org/licenses/LICENSE-2.0.
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ ********************************************************************************/
+
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace Org.Eclipse.TractusX.SsiCredentialIssuer.Migrations.Migrations
+{
+ ///
+ public partial class _100rc4 : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.Sql("DROP FUNCTION \"issuer\".\"LC_TRIGGER_AFTER_INSERT_COMPANYSSIDETAIL\"() CASCADE;");
+ migrationBuilder.Sql("DROP FUNCTION \"issuer\".\"LC_TRIGGER_AFTER_UPDATE_COMPANYSSIDETAIL\"() CASCADE;");
+ migrationBuilder.Sql("DROP FUNCTION \"issuer\".\"LC_TRIGGER_AFTER_INSERT_DOCUMENT\"() CASCADE;");
+ migrationBuilder.Sql("DROP FUNCTION \"issuer\".\"LC_TRIGGER_AFTER_UPDATE_DOCUMENT\"() CASCADE;");
+
+ migrationBuilder.Sql("delete from issuer.verified_credential_type_assigned_use_cases where verified_credential_type_id = 6");
+ migrationBuilder.Sql("delete from issuer.verified_credential_type_assigned_external_types where verified_credential_type_id = 6");
+ migrationBuilder.Sql("delete from issuer.verified_credential_type_assigned_kinds where verified_credential_type_id = 6");
+ migrationBuilder.Sql("delete from issuer.verified_credential_external_type_detail_versions where id = '37aa6259-b452-4d50-b09e-827929dcfa15'");
+ migrationBuilder.Sql("delete from issuer.use_cases where id = 'c065a349-f649-47f8-94d5-1a504a855419'");
+
+ migrationBuilder.DeleteData(
+ schema: "issuer",
+ table: "verified_credential_external_types",
+ keyColumn: "id",
+ keyValue: 6);
+
+ migrationBuilder.DeleteData(
+ schema: "issuer",
+ table: "verified_credential_types",
+ keyColumn: "id",
+ keyValue: 6);
+
+ migrationBuilder.Sql("CREATE FUNCTION \"issuer\".\"LC_TRIGGER_AFTER_INSERT_COMPANYSSIDETAIL\"() RETURNS trigger as $LC_TRIGGER_AFTER_INSERT_COMPANYSSIDETAIL$\r\nBEGIN\r\n INSERT INTO \"issuer\".\"audit_company_ssi_detail20240419\" (\"id\", \"bpnl\", \"issuer_bpn\", \"verified_credential_type_id\", \"company_ssi_detail_status_id\", \"date_created\", \"creator_user_id\", \"expiry_date\", \"verified_credential_external_type_detail_version_id\", \"expiry_check_type_id\", \"process_id\", \"external_credential_id\", \"credential\", \"date_last_changed\", \"last_editor_id\", \"audit_v2id\", \"audit_v2operation_id\", \"audit_v2date_last_changed\", \"audit_v2last_editor_id\") SELECT NEW.\"id\", \r\n NEW.\"bpnl\", \r\n NEW.\"issuer_bpn\", \r\n NEW.\"verified_credential_type_id\", \r\n NEW.\"company_ssi_detail_status_id\", \r\n NEW.\"date_created\", \r\n NEW.\"creator_user_id\", \r\n NEW.\"expiry_date\", \r\n NEW.\"verified_credential_external_type_detail_version_id\", \r\n NEW.\"expiry_check_type_id\", \r\n NEW.\"process_id\", \r\n NEW.\"external_credential_id\", \r\n NEW.\"credential\", \r\n NEW.\"date_last_changed\", \r\n NEW.\"last_editor_id\", \r\n gen_random_uuid(), \r\n 1, \r\n CURRENT_TIMESTAMP, \r\n NEW.\"last_editor_id\";\r\nRETURN NEW;\r\nEND;\r\n$LC_TRIGGER_AFTER_INSERT_COMPANYSSIDETAIL$ LANGUAGE plpgsql;\r\nCREATE TRIGGER LC_TRIGGER_AFTER_INSERT_COMPANYSSIDETAIL AFTER INSERT\r\nON \"issuer\".\"company_ssi_details\"\r\nFOR EACH ROW EXECUTE PROCEDURE \"issuer\".\"LC_TRIGGER_AFTER_INSERT_COMPANYSSIDETAIL\"();");
+ migrationBuilder.Sql("CREATE FUNCTION \"issuer\".\"LC_TRIGGER_AFTER_UPDATE_COMPANYSSIDETAIL\"() RETURNS trigger as $LC_TRIGGER_AFTER_UPDATE_COMPANYSSIDETAIL$\r\nBEGIN\r\n INSERT INTO \"issuer\".\"audit_company_ssi_detail20240419\" (\"id\", \"bpnl\", \"issuer_bpn\", \"verified_credential_type_id\", \"company_ssi_detail_status_id\", \"date_created\", \"creator_user_id\", \"expiry_date\", \"verified_credential_external_type_detail_version_id\", \"expiry_check_type_id\", \"process_id\", \"external_credential_id\", \"credential\", \"date_last_changed\", \"last_editor_id\", \"audit_v2id\", \"audit_v2operation_id\", \"audit_v2date_last_changed\", \"audit_v2last_editor_id\") SELECT NEW.\"id\", \r\n NEW.\"bpnl\", \r\n NEW.\"issuer_bpn\", \r\n NEW.\"verified_credential_type_id\", \r\n NEW.\"company_ssi_detail_status_id\", \r\n NEW.\"date_created\", \r\n NEW.\"creator_user_id\", \r\n NEW.\"expiry_date\", \r\n NEW.\"verified_credential_external_type_detail_version_id\", \r\n NEW.\"expiry_check_type_id\", \r\n NEW.\"process_id\", \r\n NEW.\"external_credential_id\", \r\n NEW.\"credential\", \r\n NEW.\"date_last_changed\", \r\n NEW.\"last_editor_id\", \r\n gen_random_uuid(), \r\n 2, \r\n CURRENT_TIMESTAMP, \r\n NEW.\"last_editor_id\";\r\nRETURN NEW;\r\nEND;\r\n$LC_TRIGGER_AFTER_UPDATE_COMPANYSSIDETAIL$ LANGUAGE plpgsql;\r\nCREATE TRIGGER LC_TRIGGER_AFTER_UPDATE_COMPANYSSIDETAIL AFTER UPDATE\r\nON \"issuer\".\"company_ssi_details\"\r\nFOR EACH ROW EXECUTE PROCEDURE \"issuer\".\"LC_TRIGGER_AFTER_UPDATE_COMPANYSSIDETAIL\"();");
+ migrationBuilder.Sql("CREATE FUNCTION \"issuer\".\"LC_TRIGGER_AFTER_INSERT_DOCUMENT\"() RETURNS trigger as $LC_TRIGGER_AFTER_INSERT_DOCUMENT$\r\nBEGIN\r\n INSERT INTO \"issuer\".\"audit_document20240419\" (\"id\", \"date_created\", \"document_hash\", \"document_content\", \"document_name\", \"media_type_id\", \"document_type_id\", \"document_status_id\", \"identity_id\", \"date_last_changed\", \"last_editor_id\", \"audit_v2id\", \"audit_v2operation_id\", \"audit_v2date_last_changed\", \"audit_v2last_editor_id\") SELECT NEW.\"id\", \r\n NEW.\"date_created\", \r\n NEW.\"document_hash\", \r\n NEW.\"document_content\", \r\n NEW.\"document_name\", \r\n NEW.\"media_type_id\", \r\n NEW.\"document_type_id\", \r\n NEW.\"document_status_id\", \r\n NEW.\"identity_id\", \r\n NEW.\"date_last_changed\", \r\n NEW.\"last_editor_id\", \r\n gen_random_uuid(), \r\n 1, \r\n CURRENT_TIMESTAMP, \r\n NEW.\"last_editor_id\";\r\nRETURN NEW;\r\nEND;\r\n$LC_TRIGGER_AFTER_INSERT_DOCUMENT$ LANGUAGE plpgsql;\r\nCREATE TRIGGER LC_TRIGGER_AFTER_INSERT_DOCUMENT AFTER INSERT\r\nON \"issuer\".\"documents\"\r\nFOR EACH ROW EXECUTE PROCEDURE \"issuer\".\"LC_TRIGGER_AFTER_INSERT_DOCUMENT\"();");
+ migrationBuilder.Sql("CREATE FUNCTION \"issuer\".\"LC_TRIGGER_AFTER_UPDATE_DOCUMENT\"() RETURNS trigger as $LC_TRIGGER_AFTER_UPDATE_DOCUMENT$\r\nBEGIN\r\n INSERT INTO \"issuer\".\"audit_document20240419\" (\"id\", \"date_created\", \"document_hash\", \"document_content\", \"document_name\", \"media_type_id\", \"document_type_id\", \"document_status_id\", \"identity_id\", \"date_last_changed\", \"last_editor_id\", \"audit_v2id\", \"audit_v2operation_id\", \"audit_v2date_last_changed\", \"audit_v2last_editor_id\") SELECT NEW.\"id\", \r\n NEW.\"date_created\", \r\n NEW.\"document_hash\", \r\n NEW.\"document_content\", \r\n NEW.\"document_name\", \r\n NEW.\"media_type_id\", \r\n NEW.\"document_type_id\", \r\n NEW.\"document_status_id\", \r\n NEW.\"identity_id\", \r\n NEW.\"date_last_changed\", \r\n NEW.\"last_editor_id\", \r\n gen_random_uuid(), \r\n 2, \r\n CURRENT_TIMESTAMP, \r\n NEW.\"last_editor_id\";\r\nRETURN NEW;\r\nEND;\r\n$LC_TRIGGER_AFTER_UPDATE_DOCUMENT$ LANGUAGE plpgsql;\r\nCREATE TRIGGER LC_TRIGGER_AFTER_UPDATE_DOCUMENT AFTER UPDATE\r\nON \"issuer\".\"documents\"\r\nFOR EACH ROW EXECUTE PROCEDURE \"issuer\".\"LC_TRIGGER_AFTER_UPDATE_DOCUMENT\"();");
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.Sql("DROP FUNCTION \"issuer\".\"LC_TRIGGER_AFTER_INSERT_COMPANYSSIDETAIL\"() CASCADE;");
+ migrationBuilder.Sql("DROP FUNCTION \"issuer\".\"LC_TRIGGER_AFTER_UPDATE_COMPANYSSIDETAIL\"() CASCADE;");
+ migrationBuilder.Sql("DROP FUNCTION \"issuer\".\"LC_TRIGGER_AFTER_INSERT_DOCUMENT\"() CASCADE;");
+ migrationBuilder.Sql("DROP FUNCTION \"issuer\".\"LC_TRIGGER_AFTER_UPDATE_DOCUMENT\"() CASCADE;");
+
+ migrationBuilder.InsertData(
+ schema: "issuer",
+ table: "verified_credential_external_types",
+ columns: new[] { "id", "label" },
+ values: new object[] { 6, "QUALITY_CREDENTIAL" });
+
+ migrationBuilder.InsertData(
+ schema: "issuer",
+ table: "verified_credential_types",
+ columns: new[] { "id", "label" },
+ values: new object[] { 6, "FRAMEWORK_AGREEMENT_QUALITY" });
+
+ migrationBuilder.Sql("CREATE FUNCTION \"issuer\".\"LC_TRIGGER_AFTER_INSERT_COMPANYSSIDETAIL\"() RETURNS trigger as $LC_TRIGGER_AFTER_INSERT_COMPANYSSIDETAIL$\r\nBEGIN\r\n INSERT INTO \"issuer\".\"audit_company_ssi_detail20240419\" (\"id\", \"bpnl\", \"issuer_bpn\", \"verified_credential_type_id\", \"company_ssi_detail_status_id\", \"date_created\", \"creator_user_id\", \"expiry_date\", \"verified_credential_external_type_detail_version_id\", \"expiry_check_type_id\", \"process_id\", \"external_credential_id\", \"credential\", \"date_last_changed\", \"last_editor_id\", \"audit_v2id\", \"audit_v2operation_id\", \"audit_v2date_last_changed\", \"audit_v2last_editor_id\") SELECT NEW.\"id\", \r\n NEW.\"bpnl\", \r\n NEW.\"issuer_bpn\", \r\n NEW.\"verified_credential_type_id\", \r\n NEW.\"company_ssi_detail_status_id\", \r\n NEW.\"date_created\", \r\n NEW.\"creator_user_id\", \r\n NEW.\"expiry_date\", \r\n NEW.\"verified_credential_external_type_detail_version_id\", \r\n NEW.\"expiry_check_type_id\", \r\n NEW.\"process_id\", \r\n NEW.\"external_credential_id\", \r\n NEW.\"credential\", \r\n NEW.\"date_last_changed\", \r\n NEW.\"last_editor_id\", \r\n gen_random_uuid(), \r\n 1, \r\n CURRENT_DATE, \r\n NEW.\"last_editor_id\";\r\nRETURN NEW;\r\nEND;\r\n$LC_TRIGGER_AFTER_INSERT_COMPANYSSIDETAIL$ LANGUAGE plpgsql;\r\nCREATE TRIGGER LC_TRIGGER_AFTER_INSERT_COMPANYSSIDETAIL AFTER INSERT\r\nON \"issuer\".\"company_ssi_details\"\r\nFOR EACH ROW EXECUTE PROCEDURE \"issuer\".\"LC_TRIGGER_AFTER_INSERT_COMPANYSSIDETAIL\"();");
+ migrationBuilder.Sql("CREATE FUNCTION \"issuer\".\"LC_TRIGGER_AFTER_UPDATE_COMPANYSSIDETAIL\"() RETURNS trigger as $LC_TRIGGER_AFTER_UPDATE_COMPANYSSIDETAIL$\r\nBEGIN\r\n INSERT INTO \"issuer\".\"audit_company_ssi_detail20240419\" (\"id\", \"bpnl\", \"issuer_bpn\", \"verified_credential_type_id\", \"company_ssi_detail_status_id\", \"date_created\", \"creator_user_id\", \"expiry_date\", \"verified_credential_external_type_detail_version_id\", \"expiry_check_type_id\", \"process_id\", \"external_credential_id\", \"credential\", \"date_last_changed\", \"last_editor_id\", \"audit_v2id\", \"audit_v2operation_id\", \"audit_v2date_last_changed\", \"audit_v2last_editor_id\") SELECT NEW.\"id\", \r\n NEW.\"bpnl\", \r\n NEW.\"issuer_bpn\", \r\n NEW.\"verified_credential_type_id\", \r\n NEW.\"company_ssi_detail_status_id\", \r\n NEW.\"date_created\", \r\n NEW.\"creator_user_id\", \r\n NEW.\"expiry_date\", \r\n NEW.\"verified_credential_external_type_detail_version_id\", \r\n NEW.\"expiry_check_type_id\", \r\n NEW.\"process_id\", \r\n NEW.\"external_credential_id\", \r\n NEW.\"credential\", \r\n NEW.\"date_last_changed\", \r\n NEW.\"last_editor_id\", \r\n gen_random_uuid(), \r\n 2, \r\n CURRENT_DATE, \r\n NEW.\"last_editor_id\";\r\nRETURN NEW;\r\nEND;\r\n$LC_TRIGGER_AFTER_UPDATE_COMPANYSSIDETAIL$ LANGUAGE plpgsql;\r\nCREATE TRIGGER LC_TRIGGER_AFTER_UPDATE_COMPANYSSIDETAIL AFTER UPDATE\r\nON \"issuer\".\"company_ssi_details\"\r\nFOR EACH ROW EXECUTE PROCEDURE \"issuer\".\"LC_TRIGGER_AFTER_UPDATE_COMPANYSSIDETAIL\"();");
+ migrationBuilder.Sql("CREATE FUNCTION \"issuer\".\"LC_TRIGGER_AFTER_INSERT_DOCUMENT\"() RETURNS trigger as $LC_TRIGGER_AFTER_INSERT_DOCUMENT$\r\nBEGIN\r\n INSERT INTO \"issuer\".\"audit_document20240419\" (\"id\", \"date_created\", \"document_hash\", \"document_content\", \"document_name\", \"media_type_id\", \"document_type_id\", \"document_status_id\", \"identity_id\", \"date_last_changed\", \"last_editor_id\", \"audit_v2id\", \"audit_v2operation_id\", \"audit_v2date_last_changed\", \"audit_v2last_editor_id\") SELECT NEW.\"id\", \r\n NEW.\"date_created\", \r\n NEW.\"document_hash\", \r\n NEW.\"document_content\", \r\n NEW.\"document_name\", \r\n NEW.\"media_type_id\", \r\n NEW.\"document_type_id\", \r\n NEW.\"document_status_id\", \r\n NEW.\"identity_id\", \r\n NEW.\"date_last_changed\", \r\n NEW.\"last_editor_id\", \r\n gen_random_uuid(), \r\n 1, \r\n CURRENT_DATE, \r\n NEW.\"last_editor_id\";\r\nRETURN NEW;\r\nEND;\r\n$LC_TRIGGER_AFTER_INSERT_DOCUMENT$ LANGUAGE plpgsql;\r\nCREATE TRIGGER LC_TRIGGER_AFTER_INSERT_DOCUMENT AFTER INSERT\r\nON \"issuer\".\"documents\"\r\nFOR EACH ROW EXECUTE PROCEDURE \"issuer\".\"LC_TRIGGER_AFTER_INSERT_DOCUMENT\"();");
+ migrationBuilder.Sql("CREATE FUNCTION \"issuer\".\"LC_TRIGGER_AFTER_UPDATE_DOCUMENT\"() RETURNS trigger as $LC_TRIGGER_AFTER_UPDATE_DOCUMENT$\r\nBEGIN\r\n INSERT INTO \"issuer\".\"audit_document20240419\" (\"id\", \"date_created\", \"document_hash\", \"document_content\", \"document_name\", \"media_type_id\", \"document_type_id\", \"document_status_id\", \"identity_id\", \"date_last_changed\", \"last_editor_id\", \"audit_v2id\", \"audit_v2operation_id\", \"audit_v2date_last_changed\", \"audit_v2last_editor_id\") SELECT NEW.\"id\", \r\n NEW.\"date_created\", \r\n NEW.\"document_hash\", \r\n NEW.\"document_content\", \r\n NEW.\"document_name\", \r\n NEW.\"media_type_id\", \r\n NEW.\"document_type_id\", \r\n NEW.\"document_status_id\", \r\n NEW.\"identity_id\", \r\n NEW.\"date_last_changed\", \r\n NEW.\"last_editor_id\", \r\n gen_random_uuid(), \r\n 2, \r\n CURRENT_DATE, \r\n NEW.\"last_editor_id\";\r\nRETURN NEW;\r\nEND;\r\n$LC_TRIGGER_AFTER_UPDATE_DOCUMENT$ LANGUAGE plpgsql;\r\nCREATE TRIGGER LC_TRIGGER_AFTER_UPDATE_DOCUMENT AFTER UPDATE\r\nON \"issuer\".\"documents\"\r\nFOR EACH ROW EXECUTE PROCEDURE \"issuer\".\"LC_TRIGGER_AFTER_UPDATE_DOCUMENT\"();");
+ }
+ }
+}
diff --git a/src/database/SsiCredentialIssuer.Migrations/Migrations/20240513151757_1.0.0-rc.4.2.Designer.cs b/src/database/SsiCredentialIssuer.Migrations/Migrations/20240513151757_1.0.0-rc.4.2.Designer.cs
new file mode 100644
index 00000000..7452e613
--- /dev/null
+++ b/src/database/SsiCredentialIssuer.Migrations/Migrations/20240513151757_1.0.0-rc.4.2.Designer.cs
@@ -0,0 +1,1640 @@
+/********************************************************************************
+ * Copyright (c) 2024 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Apache License, Version 2.0 which is available at
+ * https://www.apache.org/licenses/LICENSE-2.0.
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ ********************************************************************************/
+
+//
+using System;
+using System.Text.Json;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+using Org.Eclipse.TractusX.SsiCredentialIssuer.Entities;
+
+#nullable disable
+
+namespace Org.Eclipse.TractusX.SsiCredentialIssuer.Migrations.Migrations
+{
+ [DbContext(typeof(IssuerDbContext))]
+ [Migration("20240513151757_1.0.0-rc.4.2")]
+ partial class _100rc42
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasDefaultSchema("issuer")
+ .UseCollation("en_US.utf8")
+ .HasAnnotation("ProductVersion", "8.0.4")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.AuditEntities.AuditCompanySsiDetail20240228", b =>
+ {
+ b.Property("AuditV1Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1id");
+
+ b.Property("AuditV1DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v1date_last_changed");
+
+ b.Property("AuditV1LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1last_editor_id");
+
+ b.Property("AuditV1OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v1operation_id");
+
+ b.Property("Bpnl")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("bpnl");
+
+ b.Property("CompanySsiDetailStatusId")
+ .HasColumnType("integer")
+ .HasColumnName("company_ssi_detail_status_id");
+
+ b.Property("CreatorUserId")
+ .HasColumnType("uuid")
+ .HasColumnName("creator_user_id");
+
+ b.Property("Credential")
+ .HasColumnType("text")
+ .HasColumnName("credential");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("ExpiryCheckTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("expiry_check_type_id");
+
+ b.Property("ExpiryDate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("expiry_date");
+
+ b.Property("ExternalCredentialId")
+ .HasColumnType("uuid")
+ .HasColumnName("external_credential_id");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("IssuerBpn")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("issuer_bpn");
+
+ b.Property("LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_editor_id");
+
+ b.Property("ProcessId")
+ .HasColumnType("uuid")
+ .HasColumnName("process_id");
+
+ b.Property("VerifiedCredentialExternalTypeDetailVersionId")
+ .HasColumnType("uuid")
+ .HasColumnName("verified_credential_external_type_detail_version_id");
+
+ b.Property("VerifiedCredentialTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("verified_credential_type_id");
+
+ b.HasKey("AuditV1Id")
+ .HasName("pk_audit_company_ssi_detail20240228");
+
+ b.ToTable("audit_company_ssi_detail20240228", "issuer");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.AuditEntities.AuditCompanySsiDetail20240419", b =>
+ {
+ b.Property("AuditV2Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v2id");
+
+ b.Property("AuditV2DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v2date_last_changed");
+
+ b.Property("AuditV2LastEditorId")
+ .HasColumnType("text")
+ .HasColumnName("audit_v2last_editor_id");
+
+ b.Property("AuditV2OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v2operation_id");
+
+ b.Property("Bpnl")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("bpnl");
+
+ b.Property("CompanySsiDetailStatusId")
+ .HasColumnType("integer")
+ .HasColumnName("company_ssi_detail_status_id");
+
+ b.Property("CreatorUserId")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("creator_user_id");
+
+ b.Property("Credential")
+ .HasColumnType("text")
+ .HasColumnName("credential");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("ExpiryCheckTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("expiry_check_type_id");
+
+ b.Property("ExpiryDate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("expiry_date");
+
+ b.Property("ExternalCredentialId")
+ .HasColumnType("uuid")
+ .HasColumnName("external_credential_id");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("IssuerBpn")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("issuer_bpn");
+
+ b.Property("LastEditorId")
+ .HasColumnType("text")
+ .HasColumnName("last_editor_id");
+
+ b.Property("ProcessId")
+ .HasColumnType("uuid")
+ .HasColumnName("process_id");
+
+ b.Property("VerifiedCredentialExternalTypeDetailVersionId")
+ .HasColumnType("uuid")
+ .HasColumnName("verified_credential_external_type_detail_version_id");
+
+ b.Property("VerifiedCredentialTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("verified_credential_type_id");
+
+ b.HasKey("AuditV2Id")
+ .HasName("pk_audit_company_ssi_detail20240419");
+
+ b.ToTable("audit_company_ssi_detail20240419", "issuer");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.AuditEntities.AuditDocument20240305", b =>
+ {
+ b.Property("AuditV1Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1id");
+
+ b.Property("AuditV1DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v1date_last_changed");
+
+ b.Property("AuditV1LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1last_editor_id");
+
+ b.Property("AuditV1OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v1operation_id");
+
+ b.Property("CompanyUserId")
+ .HasColumnType("uuid")
+ .HasColumnName("company_user_id");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("DocumentContent")
+ .HasColumnType("bytea")
+ .HasColumnName("document_content");
+
+ b.Property("DocumentHash")
+ .HasColumnType("bytea")
+ .HasColumnName("document_hash");
+
+ b.Property("DocumentName")
+ .HasColumnType("text")
+ .HasColumnName("document_name");
+
+ b.Property("DocumentStatusId")
+ .HasColumnType("integer")
+ .HasColumnName("document_status_id");
+
+ b.Property("DocumentTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("document_type_id");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_editor_id");
+
+ b.Property("MediaTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("media_type_id");
+
+ b.HasKey("AuditV1Id")
+ .HasName("pk_audit_document20240305");
+
+ b.ToTable("audit_document20240305", "issuer");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.AuditEntities.AuditDocument20240419", b =>
+ {
+ b.Property("AuditV2Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v2id");
+
+ b.Property("AuditV2DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v2date_last_changed");
+
+ b.Property("AuditV2LastEditorId")
+ .HasColumnType("text")
+ .HasColumnName("audit_v2last_editor_id");
+
+ b.Property