diff --git a/GitVersion.yml b/GitVersion.yml index 1bdc0fe219f5f35d8a024a66d9fd715f44539640..5a111397d4a13dbd97c0549853e62ebaf3abd2cf 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 28142ceb29b50340546c805d9eabfd038dad2de9..318d986bed6d52488e6d6bfff7a0129043ef0d12 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 953c5b59c8001f11372f2ceef81efc0c0dbc85ea..cc816e62f794183ce9dcb5bc112f4907ef1b6d36 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 bddb13c83d2ef7ba7fae1b921b141a49f7788768..523494d1e27df1bcd4eeea8d3dbe5224b41356e8 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 a4f0efcf5222effe2ff063b3ca27a21aaa8b83e0..71043d881941b8e4f5b1d7205c560c076ec39ec2 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 959285634286b12f6297d863921085473b5e0a1a..daa9f425875205b8a1741d32704832290c58a5e3 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 f629158b5c989fb9b1728f2d3150331b6be95686..61115f145b37f3b523f9350017c160668af4b8c7 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 e85c13735910d804be2ed1cdfe6e63530f32dbb6..b25c56d450796c23dce8fd20690b54c7b166b5ce 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 9a2dde6d57232edfdacfba8bc3d2353352b21a68..71976797f72706f2d91a3b3ce335f0cdce60ea53 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 24f0af4476a7c91e9ed09f11a509a3ed628c85f9..8e31fa931ea6f39729e1bb529b39c2ea80d8e68b 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 0000000000000000000000000000000000000000..500a6f04868be73e13315cca17f398cbf61b8674 --- /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 3d1224b7e5d0fa645fa222afe8fd81b5f6dc1ecd..65d8e23c7971ace761bb6ffeaffd0d997d5764ce 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 204320e5e55a2750d68e077419a69a4fd5548c81..ce69a28adc2bbc3380ce3d666e7260a9bc089a66 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 15b68fec33c543f14a0acc459010ccc28db92ebf..850f7a3b89d5b62eab0dfb9dbf9a33992caedfc5 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" />