Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • Fix/xxxx-updateDependencies
  • Hotfix/0071-fixResourceCreate
  • Hotfix/1035-fixResourceApi
  • Hotfix/1360-databaseScaffolding
  • Hotfix/1383-topLevel
  • Hotfix/1383-topLevelAlternative
  • Hotfix/1433-defaultQuota
  • Hotfix/1796-projectDdos
  • Hotfix/2087-efNet6
  • Hotfix/64-releaseUDE
  • Hotfix/73-fixResourceCreateRDS
  • Issue/1321-pidEnquiryOverhaul
  • Issue/1788-extractionCronjob
  • Issue/1866-ExtendResourceTypeConfigurationTUDo
  • Issue/1867-addNewResourceTypes
  • Issue/1877-ExtendResourceTypeConfigurationNRWFHs
  • Issue/1878-addNewResourceTypes
  • Issue/1910-MigrationtoNET6.0
  • Issue/1913-ModificationsResourceMetadata
  • Issue/1951-quotaImplementation
  • Issue/1999-gitlabResourcesLib
  • Issue/2072-wormResourceType
  • Issue/2101-gitLabResTypeUi
  • Issue/2102-gitLabResTypeRCV
  • Issue/2183-kpiGeneratorResource
  • Issue/2221-projectDateCreated
  • Issue/2222-resourceDateCreated
  • Issue/2278-gitlabToS
  • Issue/2287-guestRole
  • Issue/2309-docs
  • Issue/2364-testingKpiParser
  • Issue/2449-GuidPidSlugToProjectSettings
  • Issue/3003-stsInstitute
  • Issues/0028-maxQuotaFix
  • Product/1100-fdsS3
  • Product/1149-dfnaai
  • Product/1154-resourceTypeDefinition
  • Product/1188-LoggingExtended
  • Product/1287-dotnet5Sharepoint
  • Product/1414-fhPrivileges
  • Product/1470-migrationForArchiving
  • Product/1573-ReadOnlyResources
  • Product/1629-onboardingOtherUniversities
  • Product/202-userInvitation
  • Product/407-net5migration
  • Product/704-basicReporting
  • Product/789-userContactEmail
  • Product/903-ApiTokens
  • Sprint/2020-20
  • Sprint/2020-22
  • Sprint/2021-01
  • Sprint/2021-03
  • Sprint/2021-04
  • Sprint/2021-05
  • Sprint/2021-08
  • Sprint/2021-10
  • Sprint/2021-11
  • Sprint/2021-15
  • Sprint/2021-19
  • Sprint/2022-01
  • Test/xxxx-pipelineTriggers
  • Topic/1051-basicReporting
  • Topic/1125-apiTokens
  • Topic/1159-rtdApi
  • Topic/1221-LogginExtendedNew
  • Topic/1221-LoggingExtended
  • Topic/1226-databaseLibraryMigration
  • Topic/1278-dfnAAI
  • Topic/1286-dotnet5Database
  • Topic/1292-FdsS3
  • Topic/1294-contactChangeFunctionality
  • Topic/1425-fhPrivileges
  • Topic/1453-userInvitation
  • Topic/1556-migrationForArchiving
  • Topic/1597-AddArchiveFlagInResourceObject
  • Topic/1711-extendResourceTypeConfiguration
  • Topic/1714-newResourceTypesUDE
  • dev
  • gitkeep
  • master
  • v1.0.0
  • v1.1.0
  • v1.10.0
  • v1.11.0
  • v1.12.0
  • v1.12.1
  • v1.13.0
  • v1.14.0
  • v1.15.0
  • v1.15.1
  • v1.16.0
  • v1.17.0
  • v1.18.0
  • v1.19.0
  • v1.2.0
  • v1.2.1
  • v1.2.2
  • v1.20.0
  • v1.21.0
  • v1.22.0
  • v1.22.1
  • v1.22.2
  • v1.23.0
  • v1.24.0
  • v1.25.0
  • v1.25.1
  • v1.26.0
  • v1.27.0
  • v1.27.1
  • v1.28.0
  • v1.3.0
  • v1.4.0
  • v1.5.0
  • v1.5.1
  • v1.6.0
  • v1.7.0
  • v1.8.0
  • v1.9.0
  • v2.0.0
  • v2.0.1
  • v2.1.0
  • v2.1.1
  • v2.10.0
  • v2.10.1
  • v2.11.0
  • v2.11.1
  • v2.12.0
  • v2.12.1
  • v2.13.0
  • v2.14.0
  • v2.15.0
  • v2.16.0
  • v2.16.1
  • v2.16.2
  • v2.17.0
  • v2.18.0
  • v2.19.0
  • v2.19.1
  • v2.2.0
  • v2.2.1
  • v2.20.0
  • v2.22.0
  • v2.3.0
  • v2.4.0
  • v2.4.1
  • v2.5.0
  • v2.6.0
  • v2.7.0
  • v2.7.1
  • v2.7.2
  • v2.7.3
  • v2.8.0
  • v2.9.0
  • v2.9.1
154 results

Target

Select target project
  • coscine/backend/libraries/database
1 result
Select Git revision
  • Fix/xxxx-updateDependencies
  • Hotfix/0071-fixResourceCreate
  • Hotfix/1035-fixResourceApi
  • Hotfix/1360-databaseScaffolding
  • Hotfix/1383-topLevel
  • Hotfix/1383-topLevelAlternative
  • Hotfix/1433-defaultQuota
  • Hotfix/1796-projectDdos
  • Hotfix/2087-efNet6
  • Hotfix/64-releaseUDE
  • Hotfix/73-fixResourceCreateRDS
  • Issue/1321-pidEnquiryOverhaul
  • Issue/1788-extractionCronjob
  • Issue/1866-ExtendResourceTypeConfigurationTUDo
  • Issue/1867-addNewResourceTypes
  • Issue/1877-ExtendResourceTypeConfigurationNRWFHs
  • Issue/1878-addNewResourceTypes
  • Issue/1910-MigrationtoNET6.0
  • Issue/1913-ModificationsResourceMetadata
  • Issue/1951-quotaImplementation
  • Issue/1999-gitlabResourcesLib
  • Issue/2072-wormResourceType
  • Issue/2101-gitLabResTypeUi
  • Issue/2102-gitLabResTypeRCV
  • Issue/2183-kpiGeneratorResource
  • Issue/2221-projectDateCreated
  • Issue/2222-resourceDateCreated
  • Issue/2278-gitlabToS
  • Issue/2287-guestRole
  • Issue/2309-docs
  • Issue/2364-testingKpiParser
  • Issue/2449-GuidPidSlugToProjectSettings
  • Issue/3003-stsInstitute
  • Issues/0028-maxQuotaFix
  • Product/1100-fdsS3
  • Product/1149-dfnaai
  • Product/1154-resourceTypeDefinition
  • Product/1188-LoggingExtended
  • Product/1287-dotnet5Sharepoint
  • Product/1414-fhPrivileges
  • Product/1470-migrationForArchiving
  • Product/1573-ReadOnlyResources
  • Product/1629-onboardingOtherUniversities
  • Product/202-userInvitation
  • Product/407-net5migration
  • Product/704-basicReporting
  • Product/789-userContactEmail
  • Product/903-ApiTokens
  • Sprint/2020-20
  • Sprint/2020-22
  • Sprint/2021-01
  • Sprint/2021-03
  • Sprint/2021-04
  • Sprint/2021-05
  • Sprint/2021-08
  • Sprint/2021-10
  • Sprint/2021-11
  • Sprint/2021-15
  • Sprint/2021-19
  • Sprint/2022-01
  • Test/xxxx-pipelineTriggers
  • Topic/1051-basicReporting
  • Topic/1125-apiTokens
  • Topic/1159-rtdApi
  • Topic/1221-LogginExtendedNew
  • Topic/1221-LoggingExtended
  • Topic/1226-databaseLibraryMigration
  • Topic/1278-dfnAAI
  • Topic/1286-dotnet5Database
  • Topic/1292-FdsS3
  • Topic/1294-contactChangeFunctionality
  • Topic/1425-fhPrivileges
  • Topic/1453-userInvitation
  • Topic/1556-migrationForArchiving
  • Topic/1597-AddArchiveFlagInResourceObject
  • Topic/1711-extendResourceTypeConfiguration
  • Topic/1714-newResourceTypesUDE
  • dev
  • gitkeep
  • master
  • v1.0.0
  • v1.1.0
  • v1.10.0
  • v1.11.0
  • v1.12.0
  • v1.12.1
  • v1.13.0
  • v1.14.0
  • v1.15.0
  • v1.15.1
  • v1.16.0
  • v1.17.0
  • v1.18.0
  • v1.19.0
  • v1.2.0
  • v1.2.1
  • v1.2.2
  • v1.20.0
  • v1.21.0
  • v1.22.0
  • v1.22.1
  • v1.22.2
  • v1.23.0
  • v1.24.0
  • v1.25.0
  • v1.25.1
  • v1.26.0
  • v1.27.0
  • v1.27.1
  • v1.28.0
  • v1.3.0
  • v1.4.0
  • v1.5.0
  • v1.5.1
  • v1.6.0
  • v1.7.0
  • v1.8.0
  • v1.9.0
  • v2.0.0
  • v2.0.1
  • v2.1.0
  • v2.1.1
  • v2.10.0
  • v2.10.1
  • v2.11.0
  • v2.11.1
  • v2.12.0
  • v2.12.1
  • v2.13.0
  • v2.14.0
  • v2.15.0
  • v2.16.0
  • v2.16.1
  • v2.16.2
  • v2.17.0
  • v2.18.0
  • v2.19.0
  • v2.19.1
  • v2.2.0
  • v2.2.1
  • v2.20.0
  • v2.22.0
  • v2.3.0
  • v2.4.0
  • v2.4.1
  • v2.5.0
  • v2.6.0
  • v2.7.0
  • v2.7.1
  • v2.7.2
  • v2.7.3
  • v2.8.0
  • v2.9.0
  • v2.9.1
154 results
Show changes
Commits on Source (3)
Showing
with 256 additions and 64 deletions
......@@ -4,10 +4,10 @@ include:
- /dotnet.yml
stages:
- migrate
#- migrate
- build
- test
- cleanup
#- test
#- cleanup
- publish
variables:
......@@ -15,32 +15,32 @@ variables:
# Example DB_NAME = X_COSCINE_TMP_EF_1ecfd275
DB_NAME: "X_COSCINE_TMP_EF_$CI_COMMIT_SHORT_SHA"
migrate:
stage: migrate
extends: .dotnet-windows-base
script:
- dotnet tool install dotnet-ef; echo "1"
- dotnet tool update dotnet-ef
# List dependencies that will be used during build
- dotnet restore src --no-cache
- dotnet list src package
# Create new database and migrate to latest state
- dotnet run --project .\src\Database.Actions -- --action-create --name $DB_NAME --source $DB_DATA_SOURCE --user $DB_USER_ID --pw $DB_PASSWORD
# Scaffold created database
- dotnet ef dbcontext scaffold "Data Source=$DB_DATA_SOURCE;Integrated Security=False;User ID=$DB_USER_ID;Password=$DB_PASSWORD;Database=$DB_NAME" Microsoft.EntityFrameworkCore.SqlServer -o DataModel -c "Model" -f --no-onconfiguring --project "src\Scaffolding"
artifacts:
paths:
- src\Scaffolding\DataModel
expire_in: 1 week
#migrate:
# stage: migrate
# extends: .dotnet-windows-base
# script:
# - dotnet tool install dotnet-ef; echo "1"
# - dotnet tool update dotnet-ef
# # List dependencies that will be used during build
# - dotnet restore src --no-cache
# - dotnet list src package
# # Create new database and migrate to latest state
# - dotnet run --project .\src\Database.Actions -- --action-create --name $DB_NAME --source $DB_DATA_SOURCE --user $DB_USER_ID --pw $DB_PASSWORD
# # Scaffold created database
# - dotnet ef dbcontext scaffold "Data Source=$DB_DATA_SOURCE;Integrated Security=False;User ID=$DB_USER_ID;Password=$DB_PASSWORD;Database=$DB_NAME" Microsoft.EntityFrameworkCore.SqlServer -o DataModel -c "Model" -f --no-onconfiguring --project "src\Scaffolding"
# artifacts:
# paths:
# - src\Scaffolding\DataModel
# expire_in: 1 week
cleanup:
stage: cleanup
extends: .dotnet-windows-base
script:
# Drop created database
- dotnet run -p .\src\Database.Actions -- --action-drop --name $DB_NAME --source $DB_DATA_SOURCE --user $DB_USER_ID --pw $DB_PASSWORD
when: always
#cleanup:
# stage: cleanup
# extends: .dotnet-windows-base
# #script:
# # Drop created database
# #- dotnet run -p .\src\Database.Actions -- --action-drop --name $DB_NAME --source $DB_DATA_SOURCE --user $DB_USER_ID --pw $DB_PASSWORD
# when: always
build-branch:
extends: .build-branch
......@@ -48,18 +48,18 @@ build-branch:
build-nuget-release:
extends: .build-nuget-release
test:
extends: .dotnet-windows-base
stage: test
script:
- $env:DatabaseName=$DB_NAME
# Discover test projects in `src` folder
- dotnet test src
# TODO Add Dotnet Test coverage
only:
# Do not run tests for chore commit by bot but re-run tests for the semver tag before pushing to npm
variables:
- $GITLAB_USER_ID != $GIT_BOT_USER_ID || $CI_COMMIT_TAG =~ /v[0-9]*\.[0-9]*\.[0-9]*/
#test:
# extends: .dotnet-windows-base
# stage: test
# script:
# - $env:DatabaseName=$DB_NAME
# # Discover test projects in `src` folder
# - dotnet test src
# # TODO Add Dotnet Test coverage
# only:
# # Do not run tests for chore commit by bot but re-run tests for the semver tag before pushing to npm
# variables:
# - $GITLAB_USER_ID != $GIT_BOT_USER_ID || $CI_COMMIT_TAG =~ /v[0-9]*\.[0-9]*\.[0-9]*/
publish-branch-prerelease:
extends: .publish-branch-prerelease
......
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:'
......
......@@ -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.22.0</Version>
</PropertyGroup>
<ItemGroup>
......
......@@ -5,7 +5,7 @@
<AssemblyName>Coscine.Database.Tests</AssemblyName>
<TargetFramework>net6.0</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Version>2.20.0</Version>
<Version>2.22.0</Version>
</PropertyGroup>
<ItemGroup>
......
......@@ -4,7 +4,7 @@
<RootNamespace>Coscine.Database</RootNamespace>
<AssemblyName>Coscine.Database</AssemblyName>
<TargetFramework>net6.0</TargetFramework>
<Version>2.20.0</Version>
<Version>2.22.0</Version>
</PropertyGroup>
<PropertyGroup>
......
......@@ -93,10 +93,7 @@ namespace Coscine.Database.Models
{
if (!databaseObject.Deleted)
{
return DatabaseConnection.ConnectToDatabase((db) =>
{
return (int)db.Update(databaseObject).State;
});
return DatabaseConnection.ConnectToDatabase((db) => (int)db.Update(databaseObject).State);
}
else
{
......
......@@ -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);
......
......@@ -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;
......
using System;
using System.Collections.Generic;
namespace Coscine.Database.DataModel
{
public partial class ActivityLog
{
public Guid Id { get; set; }
public string ApiPath { get; set; }
public Guid UserId { get; set; }
public DateTime ActivityTimestamp { get; set; }
public string HttpAction { get; set; }
public string ActionName { get; set; }
public string ControllerName { get; set; }
public virtual User User { get; set; }
}
}
......@@ -12,6 +12,7 @@ namespace Coscine.Database.DataModel
public Guid Id { get; set; }
public string DisplayName { get; set; }
public string Url { get; set; }
public virtual ICollection<Resource> Resources { get; set; }
}
......
using System;
using System;
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
......@@ -17,6 +17,7 @@ namespace Coscine.Database.DataModel
}
public virtual DbSet<ActivatedFeature> ActivatedFeatures { get; set; }
public virtual DbSet<ActivityLog> ActivityLogs { get; set; }
public virtual DbSet<ApiToken> ApiTokens { get; set; }
public virtual DbSet<ContactChange> ContactChanges { get; set; }
public virtual DbSet<Discipline> Disciplines { get; set; }
......@@ -35,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; }
......@@ -58,6 +60,10 @@ namespace Coscine.Database.DataModel
{
modelBuilder.Entity<ActivatedFeature>(entity =>
{
entity.HasIndex(e => e.FeatureId, "IX_ActivatedFeatures_FeatureId");
entity.HasIndex(e => e.ProjectId, "IX_ActivatedFeatures_ProjectId");
entity.Property(e => e.Id).HasDefaultValueSql("(newid())");
entity.HasOne(d => d.Feature)
......@@ -73,8 +79,39 @@ namespace Coscine.Database.DataModel
.HasConstraintName("FK_ActivatedFeatures_ProjectId_Projects_Id");
});
modelBuilder.Entity<ActivityLog>(entity =>
{
entity.HasIndex(e => e.UserId, "IX_ActivityLogs_UserId");
entity.Property(e => e.Id).ValueGeneratedNever();
entity.Property(e => e.ActionName)
.HasMaxLength(255)
.HasDefaultValueSql("(N'NA')");
entity.Property(e => e.ApiPath)
.IsRequired()
.HasMaxLength(255);
entity.Property(e => e.ControllerName)
.HasMaxLength(255)
.HasDefaultValueSql("(N'NA')");
entity.Property(e => e.HttpAction)
.IsRequired()
.HasMaxLength(10)
.HasDefaultValueSql("(N'NA')");
entity.HasOne(d => d.User)
.WithMany(p => p.ActivityLogs)
.HasForeignKey(d => d.UserId)
.OnDelete(DeleteBehavior.ClientSetNull);
});
modelBuilder.Entity<ApiToken>(entity =>
{
entity.HasIndex(e => e.UserId, "IX_ApiTokens_UserId");
entity.Property(e => e.Id).HasDefaultValueSql("(newid())");
entity.Property(e => e.Expiration).HasColumnType("datetime");
......@@ -98,6 +135,8 @@ namespace Coscine.Database.DataModel
entity.ToTable("ContactChange");
entity.HasIndex(e => e.UserId, "IX_ContactChange_UserId");
entity.Property(e => e.RelationId).HasDefaultValueSql("(newid())");
entity.Property(e => e.ConfirmationToken).HasDefaultValueSql("(newid())");
......@@ -141,6 +180,10 @@ namespace Coscine.Database.DataModel
{
entity.HasKey(e => e.RelationId);
entity.HasIndex(e => e.ExternalAuthenticatorId, "IX_ExternalIds_ExternalAuthenticatorId");
entity.HasIndex(e => e.UserId, "IX_ExternalIds_UserId");
entity.Property(e => e.RelationId).HasDefaultValueSql("(newid())");
entity.Property(e => e.ExternalId1)
......@@ -212,6 +255,10 @@ namespace Coscine.Database.DataModel
{
entity.HasKey(e => e.RelationId);
entity.HasIndex(e => e.GroupId, "IX_GroupMemberships_GroupId");
entity.HasIndex(e => e.UserId, "IX_GroupMemberships_UserId");
entity.Property(e => e.RelationId).HasDefaultValueSql("(newid())");
entity.HasOne(d => d.Group)
......@@ -229,6 +276,12 @@ namespace Coscine.Database.DataModel
modelBuilder.Entity<Invitation>(entity =>
{
entity.HasIndex(e => e.Issuer, "IX_Invitations_Issuer");
entity.HasIndex(e => e.Project, "IX_Invitations_Project");
entity.HasIndex(e => e.Role, "IX_Invitations_Role");
entity.Property(e => e.Id).HasDefaultValueSql("(newid())");
entity.Property(e => e.Expiration).HasColumnType("datetime");
......@@ -318,6 +371,8 @@ namespace Coscine.Database.DataModel
{
entity.ToTable("MetadataExtraction");
entity.HasIndex(e => e.ResourceId, "IX_MetadataExtraction_ResourceId");
entity.Property(e => e.Id).HasDefaultValueSql("(newid())");
entity.HasOne(d => d.Resource)
......@@ -328,6 +383,8 @@ namespace Coscine.Database.DataModel
modelBuilder.Entity<Project>(entity =>
{
entity.HasIndex(e => e.VisibilityId, "IX_Projects_VisibilityId");
entity.Property(e => e.Id).HasDefaultValueSql("(newid())");
entity.Property(e => e.DateCreated)
......@@ -370,6 +427,10 @@ namespace Coscine.Database.DataModel
entity.ToTable("ProjectDiscipline");
entity.HasIndex(e => e.DisciplineId, "IX_ProjectDiscipline_DisciplineId");
entity.HasIndex(e => e.ProjectId, "IX_ProjectDiscipline_ProjectId");
entity.Property(e => e.RelationId).HasDefaultValueSql("(newid())");
entity.HasOne(d => d.Discipline)
......@@ -391,6 +452,8 @@ namespace Coscine.Database.DataModel
entity.ToTable("ProjectInstitute");
entity.HasIndex(e => e.ProjectId, "IX_ProjectInstitute_ProjectId");
entity.Property(e => e.RelationId).HasDefaultValueSql("(newid())");
entity.Property(e => e.OrganizationUrl)
......@@ -405,10 +468,52 @@ 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);
entity.HasIndex(e => e.ResourceTypeId, "IX_ProjectQuotas_ResourceTypeId");
entity.HasIndex(e => new { e.ProjectId, e.ResourceTypeId }, "ProjectIdResourceTypeId")
.IsUnique();
......@@ -435,6 +540,10 @@ namespace Coscine.Database.DataModel
entity.ToTable("ProjectResource");
entity.HasIndex(e => e.ProjectId, "IX_ProjectResource_ProjectId");
entity.HasIndex(e => e.ResourceId, "IX_ProjectResource_ResourceId");
entity.Property(e => e.RelationId).HasDefaultValueSql("(newid())");
entity.HasOne(d => d.Project)
......@@ -453,6 +562,12 @@ namespace Coscine.Database.DataModel
{
entity.HasKey(e => e.RelationId);
entity.HasIndex(e => e.ProjectId, "IX_ProjectRoles_ProjectId");
entity.HasIndex(e => e.RoleId, "IX_ProjectRoles_RoleId");
entity.HasIndex(e => e.UserId, "IX_ProjectRoles_UserId");
entity.Property(e => e.RelationId).HasDefaultValueSql("(newid())");
entity.HasOne(d => d.Project)
......@@ -577,6 +692,12 @@ namespace Coscine.Database.DataModel
modelBuilder.Entity<Resource>(entity =>
{
entity.HasIndex(e => e.LicenseId, "IX_Resources_LicenseId");
entity.HasIndex(e => e.TypeId, "IX_Resources_TypeId");
entity.HasIndex(e => e.VisibilityId, "IX_Resources_VisibilityId");
entity.Property(e => e.Id).HasDefaultValueSql("(newid())");
entity.Property(e => e.ApplicationProfile).HasMaxLength(500);
......@@ -594,6 +715,10 @@ namespace Coscine.Database.DataModel
entity.Property(e => e.Keywords).HasMaxLength(1000);
entity.Property(e => e.MetadataLocalCopy)
.IsRequired()
.HasDefaultValueSql("(CONVERT([bit],(0)))");
entity.Property(e => e.ResourceName).HasMaxLength(200);
entity.Property(e => e.UsageRights).HasMaxLength(200);
......@@ -621,6 +746,10 @@ namespace Coscine.Database.DataModel
entity.ToTable("ResourceDiscipline");
entity.HasIndex(e => e.DisciplineId, "IX_ResourceDiscipline_DisciplineId");
entity.HasIndex(e => e.ResourceId, "IX_ResourceDiscipline_ResourceId");
entity.Property(e => e.RelationId).HasDefaultValueSql("(newid())");
entity.HasOne(d => d.Discipline)
......@@ -688,6 +817,10 @@ namespace Coscine.Database.DataModel
{
entity.HasKey(e => e.RelationId);
entity.HasIndex(e => e.ProjectId, "IX_SubProjects_ProjectId");
entity.HasIndex(e => e.SubProjectId, "IX_SubProjects_SubProjectId");
entity.Property(e => e.RelationId).HasDefaultValueSql("(newid())");
entity.HasOne(d => d.Project)
......@@ -718,6 +851,8 @@ namespace Coscine.Database.DataModel
entity.ToTable("TOSAccepted");
entity.HasIndex(e => e.UserId, "IX_TOSAccepted_UserId");
entity.Property(e => e.RelationId).HasDefaultValueSql("(newid())");
entity.Property(e => e.Version)
......@@ -733,6 +868,10 @@ namespace Coscine.Database.DataModel
modelBuilder.Entity<User>(entity =>
{
entity.HasIndex(e => e.LanguageId, "IX_Users_LanguageId");
entity.HasIndex(e => e.TitleId, "IX_Users_TitleId");
entity.Property(e => e.Id).HasDefaultValueSql("(newid())");
entity.Property(e => e.DisplayName)
......@@ -745,7 +884,9 @@ 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())");
entity.Property(e => e.Organization).HasMaxLength(200);
......@@ -766,6 +907,10 @@ namespace Coscine.Database.DataModel
{
entity.HasKey(e => e.RelationId);
entity.HasIndex(e => e.DisciplineId, "IX_UserDisciplines_DisciplineId");
entity.HasIndex(e => e.UserId, "IX_UserDisciplines_UserId");
entity.Property(e => e.RelationId).HasDefaultValueSql("(newid())");
entity.HasOne(d => d.Discipline)
......
......@@ -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; }
......
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; }
}
}
......@@ -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; }
......@@ -28,6 +29,7 @@ namespace Coscine.Database.DataModel
public string Archived { get; set; }
public bool Deleted { get; set; }
public DateTime? DateCreated { get; set; }
public bool? MetadataLocalCopy { get; set; }
public virtual License License { get; set; }
public virtual ResourceType Type { get; set; }
......@@ -35,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; }
}
}
......@@ -7,11 +7,13 @@ namespace Coscine.Database.DataModel
{
public User()
{
ActivityLogs = new HashSet<ActivityLog>();
ApiTokens = new HashSet<ApiToken>();
ContactChanges = new HashSet<ContactChange>();
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>();
......@@ -26,15 +28,18 @@ 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; }
public virtual ICollection<ActivityLog> ActivityLogs { get; set; }
public virtual ICollection<ApiToken> ApiTokens { get; set; }
public virtual ICollection<ContactChange> ContactChanges { get; set; }
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; }
......
......@@ -3,7 +3,7 @@
<RootNamespace>Coscine.Database</RootNamespace>
<AssemblyName>Coscine.Database.Scaffolding</AssemblyName>
<TargetFramework>net6.0</TargetFramework>
<Version>2.20.0</Version>
<Version>2.22.0</Version>
</PropertyGroup>
<ItemGroup>
......