From 2cf4e9d6f19205334e4304da35d21513da43c3bf Mon Sep 17 00:00:00 2001 From: "L. Ellenbeck" <ellenbeck@itc.rwth-aachen.de> Date: Tue, 29 Oct 2024 12:26:51 +0100 Subject: [PATCH] Update: Updated database --- GitVersion.yml | 2 +- src/Database.Actions/Database.Actions.csproj | 2 +- src/Database.Tests/Database.Tests.csproj | 2 +- src/Database/Database.csproj | 14 ++--- src/Database/Models/UserModel.cs | 2 - src/Database/ReturnObjects/UserObject.cs | 5 +- .../DataModel/ExternalAuthenticator.cs | 1 - src/Scaffolding/DataModel/ExternalId.cs | 1 - src/Scaffolding/DataModel/Model.cs | 54 ++++++++++++++----- src/Scaffolding/DataModel/Project.cs | 2 + .../DataModel/ProjectPublicationRequest.cs | 25 +++++++++ src/Scaffolding/DataModel/Resource.cs | 3 ++ src/Scaffolding/DataModel/User.cs | 4 +- src/Scaffolding/Scaffolding.csproj | 4 +- 14 files changed, 87 insertions(+), 34 deletions(-) create mode 100644 src/Scaffolding/DataModel/ProjectPublicationRequest.cs diff --git a/GitVersion.yml b/GitVersion.yml index 1bdc0fe..5a11139 100644 --- a/GitVersion.yml +++ b/GitVersion.yml @@ -1,5 +1,5 @@ mode: ContinuousDeployment -next-version: 1.0.0 +next-version: 2.22.0 major-version-bump-message: 'Breaking:' minor-version-bump-message: '(Update|New):' patch-version-bump-message: 'Fix:' diff --git a/src/Database.Actions/Database.Actions.csproj b/src/Database.Actions/Database.Actions.csproj index 28142ce..318d986 100644 --- a/src/Database.Actions/Database.Actions.csproj +++ b/src/Database.Actions/Database.Actions.csproj @@ -4,7 +4,7 @@ <RootNamespace>Coscine.Database.Actions</RootNamespace> <AssemblyName>Coscine.Database.Actions</AssemblyName> <TargetFramework>net6.0</TargetFramework> - <Version>2.20.0</Version> + <Version>2.21.0</Version> </PropertyGroup> <ItemGroup> diff --git a/src/Database.Tests/Database.Tests.csproj b/src/Database.Tests/Database.Tests.csproj index 953c5b5..cc816e6 100644 --- a/src/Database.Tests/Database.Tests.csproj +++ b/src/Database.Tests/Database.Tests.csproj @@ -5,7 +5,7 @@ <AssemblyName>Coscine.Database.Tests</AssemblyName> <TargetFramework>net6.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> - <Version>2.20.0</Version> + <Version>2.21.0</Version> </PropertyGroup> <ItemGroup> diff --git a/src/Database/Database.csproj b/src/Database/Database.csproj index bddb13c..523494d 100644 --- a/src/Database/Database.csproj +++ b/src/Database/Database.csproj @@ -4,9 +4,9 @@ <RootNamespace>Coscine.Database</RootNamespace> <AssemblyName>Coscine.Database</AssemblyName> <TargetFramework>net6.0</TargetFramework> - <Version>2.20.0</Version> + <Version>2.21.0</Version> </PropertyGroup> - + <PropertyGroup> <Authors>RWTH Aachen University</Authors> <Company>IT Center, RWTH Aachen University</Company> @@ -16,23 +16,23 @@ <PackageProjectUrl>https://git.rwth-aachen.de/coscine/backend/libraries/database</PackageProjectUrl> <PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance> </PropertyGroup> - + <PropertyGroup> <SignAssembly>true</SignAssembly> <AssemblyOriginatorKeyFile>Coscine.Database.Key.snk</AssemblyOriginatorKeyFile> </PropertyGroup> - + <ItemGroup> <None Include="Coscine.Database.Key.snk" /> <Reference Include="System.Web" Condition="'$(TargetFramework)' == 'net461'" /> </ItemGroup> - + <ItemGroup> <Compile Include="..\Scaffolding\DataModel\*.*"> <Link>DataModel\%(Filename)%(Extension)</Link> </Compile> </ItemGroup> - + <ItemGroup> <PackageReference Include="Coscine.Configuration" Version="*-*" /> <PackageReference Include="LinqKit" Version="1.2.3" /> @@ -40,7 +40,7 @@ <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.11" PrivateAssets="all" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.11" /> </ItemGroup> - + <PropertyGroup> <LangVersion>Preview</LangVersion> </PropertyGroup> diff --git a/src/Database/Models/UserModel.cs b/src/Database/Models/UserModel.cs index a4f0efc..71043d8 100644 --- a/src/Database/Models/UserModel.cs +++ b/src/Database/Models/UserModel.cs @@ -65,7 +65,6 @@ namespace Coscine.Database.Models user.Title == null ? null : new TitleObject(user.Title.Id, user.Title.DisplayName), user.Language == null ? null : new LanguageObject(user.Language.Id, user.Language.DisplayName, user.Language.Abbreviation), user.Organization, - user.Institute, disciplines, false, externalAuthenticators); @@ -78,7 +77,6 @@ namespace Coscine.Database.Models user.Surname = userObject.Surname; user.DisplayName = userObject.DisplayName; user.Organization = userObject.Organization; - user.Institute = userObject.Institute; user.LanguageId = userObject.Language?.Id; SetDisciplines(user, userObject.Disciplines); return Update(user); diff --git a/src/Database/ReturnObjects/UserObject.cs b/src/Database/ReturnObjects/UserObject.cs index 9592856..daa9f42 100644 --- a/src/Database/ReturnObjects/UserObject.cs +++ b/src/Database/ReturnObjects/UserObject.cs @@ -24,15 +24,13 @@ namespace Coscine.Database.ReturnObjects public string Organization { get; set; } - public string Institute { get; set; } - public IEnumerable<DisciplineObject> Disciplines { get; set; } public bool IsRegistered { get; set; } public IEnumerable<ExternalAuthenticatorsObject> ExternalAuthenticators { get; set; } - public UserObject(Guid id, string displayName, string givenname, string surname, string emailAddress, bool hasProjectRole = false, TitleObject title = null, LanguageObject language = null, string organization = "", string institute = "", IEnumerable<DisciplineObject> disciplines = null, bool isRegistered = false, IEnumerable<ExternalAuthenticatorsObject> externalAuthenticators = null) + public UserObject(Guid id, string displayName, string givenname, string surname, string emailAddress, bool hasProjectRole = false, TitleObject title = null, LanguageObject language = null, string organization = "", IEnumerable<DisciplineObject> disciplines = null, bool isRegistered = false, IEnumerable<ExternalAuthenticatorsObject> externalAuthenticators = null) { Id = id; DisplayName = displayName; @@ -43,7 +41,6 @@ namespace Coscine.Database.ReturnObjects Title = title; Language = language; Organization = organization; - Institute = institute; Disciplines = disciplines; HasProjectRole = hasProjectRole; diff --git a/src/Scaffolding/DataModel/ExternalAuthenticator.cs b/src/Scaffolding/DataModel/ExternalAuthenticator.cs index f629158..61115f1 100644 --- a/src/Scaffolding/DataModel/ExternalAuthenticator.cs +++ b/src/Scaffolding/DataModel/ExternalAuthenticator.cs @@ -12,7 +12,6 @@ namespace Coscine.Database.DataModel public Guid Id { get; set; } public string DisplayName { get; set; } - public string IssuerUri { get; set; } public virtual ICollection<ExternalId> ExternalIds { get; set; } } diff --git a/src/Scaffolding/DataModel/ExternalId.cs b/src/Scaffolding/DataModel/ExternalId.cs index e85c137..b25c56d 100644 --- a/src/Scaffolding/DataModel/ExternalId.cs +++ b/src/Scaffolding/DataModel/ExternalId.cs @@ -10,7 +10,6 @@ namespace Coscine.Database.DataModel public Guid ExternalAuthenticatorId { get; set; } public string ExternalId1 { get; set; } public string Organization { get; set; } - public string IssuerUri { get; set; } public virtual ExternalAuthenticator ExternalAuthenticator { get; set; } public virtual User User { get; set; } diff --git a/src/Scaffolding/DataModel/Model.cs b/src/Scaffolding/DataModel/Model.cs index 9a2dde6..7197679 100644 --- a/src/Scaffolding/DataModel/Model.cs +++ b/src/Scaffolding/DataModel/Model.cs @@ -36,6 +36,7 @@ namespace Coscine.Database.DataModel public virtual DbSet<Project> Projects { get; set; } public virtual DbSet<ProjectDiscipline> ProjectDisciplines { get; set; } public virtual DbSet<ProjectInstitute> ProjectInstitutes { get; set; } + public virtual DbSet<ProjectPublicationRequest> ProjectPublicationRequests { get; set; } public virtual DbSet<ProjectQuota> ProjectQuotas { get; set; } public virtual DbSet<ProjectResource> ProjectResources { get; set; } public virtual DbSet<ProjectRole> ProjectRoles { get; set; } @@ -168,15 +169,11 @@ namespace Coscine.Database.DataModel modelBuilder.Entity<ExternalAuthenticator>(entity => { - entity.HasIndex(e => e.IssuerUri, "IX_IssuerUri"); - entity.Property(e => e.Id).HasDefaultValueSql("(newid())"); entity.Property(e => e.DisplayName) .IsRequired() .HasMaxLength(50); - - entity.Property(e => e.IssuerUri).HasMaxLength(255); }); modelBuilder.Entity<ExternalId>(entity => @@ -187,8 +184,6 @@ namespace Coscine.Database.DataModel entity.HasIndex(e => e.UserId, "IX_ExternalIds_UserId"); - entity.HasIndex(e => e.IssuerUri, "IX_IssuerUri"); - entity.Property(e => e.RelationId).HasDefaultValueSql("(newid())"); entity.Property(e => e.ExternalId1) @@ -196,11 +191,6 @@ namespace Coscine.Database.DataModel .HasMaxLength(255) .HasColumnName("ExternalId"); - entity.Property(e => e.IssuerUri) - .IsRequired() - .HasMaxLength(255) - .HasDefaultValueSql("(N'')"); - entity.Property(e => e.Organization).HasMaxLength(255); entity.HasOne(d => d.ExternalAuthenticator) @@ -478,6 +468,46 @@ namespace Coscine.Database.DataModel .HasConstraintName("FK_ProjectInstitute_ProjectId_Projects_Id"); }); + modelBuilder.Entity<ProjectPublicationRequest>(entity => + { + entity.HasIndex(e => e.CreatorId, "IX_ProjectPublicationRequests_CreatorId"); + + entity.HasIndex(e => e.ProjectId, "IX_ProjectPublicationRequests_ProjectId"); + + entity.Property(e => e.Id).ValueGeneratedNever(); + + entity.Property(e => e.DateCreated) + .HasColumnType("datetime") + .HasDefaultValueSql("(getutcdate())"); + + entity.Property(e => e.PublicationServiceRorId).IsRequired(); + + entity.HasOne(d => d.Creator) + .WithMany(p => p.ProjectPublicationRequests) + .HasForeignKey(d => d.CreatorId) + .OnDelete(DeleteBehavior.ClientSetNull); + + entity.HasOne(d => d.Project) + .WithMany(p => p.ProjectPublicationRequests) + .HasForeignKey(d => d.ProjectId) + .OnDelete(DeleteBehavior.ClientSetNull); + + entity.HasMany(d => d.Resources) + .WithMany(p => p.PublicationRequests) + .UsingEntity<Dictionary<string, object>>( + "ProjectPublicationRequestResource", + l => l.HasOne<Resource>().WithMany().HasForeignKey("ResourcesId"), + r => r.HasOne<ProjectPublicationRequest>().WithMany().HasForeignKey("PublicationRequestsId"), + j => + { + j.HasKey("PublicationRequestsId", "ResourcesId"); + + j.ToTable("ProjectPublicationRequestResource"); + + j.HasIndex(new[] { "ResourcesId" }, "IX_ProjectPublicationRequestResource_ResourcesId"); + }); + }); + modelBuilder.Entity<ProjectQuota>(entity => { entity.HasKey(e => e.RelationId); @@ -854,8 +884,6 @@ namespace Coscine.Database.DataModel entity.Property(e => e.Givenname).HasMaxLength(200); - entity.Property(e => e.Institute).HasMaxLength(200); - entity.Property(e => e.LatestActivity) .HasColumnType("datetime") .HasDefaultValueSql("(getutcdate())"); diff --git a/src/Scaffolding/DataModel/Project.cs b/src/Scaffolding/DataModel/Project.cs index 24f0af4..8e31fa9 100644 --- a/src/Scaffolding/DataModel/Project.cs +++ b/src/Scaffolding/DataModel/Project.cs @@ -11,6 +11,7 @@ namespace Coscine.Database.DataModel Invitations = new HashSet<Invitation>(); ProjectDisciplines = new HashSet<ProjectDiscipline>(); ProjectInstitutes = new HashSet<ProjectInstitute>(); + ProjectPublicationRequests = new HashSet<ProjectPublicationRequest>(); ProjectQuotas = new HashSet<ProjectQuota>(); ProjectResources = new HashSet<ProjectResource>(); ProjectRoles = new HashSet<ProjectRole>(); @@ -38,6 +39,7 @@ namespace Coscine.Database.DataModel public virtual ICollection<Invitation> Invitations { get; set; } public virtual ICollection<ProjectDiscipline> ProjectDisciplines { get; set; } public virtual ICollection<ProjectInstitute> ProjectInstitutes { get; set; } + public virtual ICollection<ProjectPublicationRequest> ProjectPublicationRequests { get; set; } public virtual ICollection<ProjectQuota> ProjectQuotas { get; set; } public virtual ICollection<ProjectResource> ProjectResources { get; set; } public virtual ICollection<ProjectRole> ProjectRoles { get; set; } diff --git a/src/Scaffolding/DataModel/ProjectPublicationRequest.cs b/src/Scaffolding/DataModel/ProjectPublicationRequest.cs new file mode 100644 index 0000000..500a6f0 --- /dev/null +++ b/src/Scaffolding/DataModel/ProjectPublicationRequest.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace Coscine.Database.DataModel +{ + public partial class ProjectPublicationRequest + { + public ProjectPublicationRequest() + { + Resources = new HashSet<Resource>(); + } + + public Guid Id { get; set; } + public Guid ProjectId { get; set; } + public string PublicationServiceRorId { get; set; } + public Guid CreatorId { get; set; } + public DateTime DateCreated { get; set; } + public string Message { get; set; } + + public virtual User Creator { get; set; } + public virtual Project Project { get; set; } + + public virtual ICollection<Resource> Resources { get; set; } + } +} diff --git a/src/Scaffolding/DataModel/Resource.cs b/src/Scaffolding/DataModel/Resource.cs index 3d1224b..65d8e23 100644 --- a/src/Scaffolding/DataModel/Resource.cs +++ b/src/Scaffolding/DataModel/Resource.cs @@ -10,6 +10,7 @@ namespace Coscine.Database.DataModel MetadataExtractions = new HashSet<MetadataExtraction>(); ProjectResources = new HashSet<ProjectResource>(); ResourceDisciplines = new HashSet<ResourceDiscipline>(); + PublicationRequests = new HashSet<ProjectPublicationRequest>(); } public Guid Id { get; set; } @@ -36,5 +37,7 @@ namespace Coscine.Database.DataModel public virtual ICollection<MetadataExtraction> MetadataExtractions { get; set; } public virtual ICollection<ProjectResource> ProjectResources { get; set; } public virtual ICollection<ResourceDiscipline> ResourceDisciplines { get; set; } + + public virtual ICollection<ProjectPublicationRequest> PublicationRequests { get; set; } } } diff --git a/src/Scaffolding/DataModel/User.cs b/src/Scaffolding/DataModel/User.cs index 204320e..ce69a28 100644 --- a/src/Scaffolding/DataModel/User.cs +++ b/src/Scaffolding/DataModel/User.cs @@ -13,6 +13,7 @@ namespace Coscine.Database.DataModel ExternalIds = new HashSet<ExternalId>(); GroupMemberships = new HashSet<GroupMembership>(); Invitations = new HashSet<Invitation>(); + ProjectPublicationRequests = new HashSet<ProjectPublicationRequest>(); ProjectRoles = new HashSet<ProjectRole>(); Tosaccepteds = new HashSet<Tosaccepted>(); UserDisciplines = new HashSet<UserDiscipline>(); @@ -27,8 +28,8 @@ namespace Coscine.Database.DataModel public string Organization { get; set; } public Guid? TitleId { get; set; } public Guid? LanguageId { get; set; } - public string Institute { get; set; } public DateTime? LatestActivity { get; set; } + public DateTime? DeletedAt { get; set; } public virtual Language Language { get; set; } public virtual Title Title { get; set; } @@ -38,6 +39,7 @@ namespace Coscine.Database.DataModel public virtual ICollection<ExternalId> ExternalIds { get; set; } public virtual ICollection<GroupMembership> GroupMemberships { get; set; } public virtual ICollection<Invitation> Invitations { get; set; } + public virtual ICollection<ProjectPublicationRequest> ProjectPublicationRequests { get; set; } public virtual ICollection<ProjectRole> ProjectRoles { get; set; } public virtual ICollection<Tosaccepted> Tosaccepteds { get; set; } public virtual ICollection<UserDiscipline> UserDisciplines { get; set; } diff --git a/src/Scaffolding/Scaffolding.csproj b/src/Scaffolding/Scaffolding.csproj index 15b68fe..850f7a3 100644 --- a/src/Scaffolding/Scaffolding.csproj +++ b/src/Scaffolding/Scaffolding.csproj @@ -3,9 +3,9 @@ <RootNamespace>Coscine.Database</RootNamespace> <AssemblyName>Coscine.Database.Scaffolding</AssemblyName> <TargetFramework>net6.0</TargetFramework> - <Version>2.20.0</Version> + <Version>2.21.0</Version> </PropertyGroup> - + <ItemGroup> <PackageReference Include="Inflector.NetStandard" Version="1.2.2" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.11" PrivateAssets="all" /> -- GitLab