diff --git a/src/Database/Models/MetadataExtractionModel.cs b/src/Database/Models/MetadataExtractionModel.cs new file mode 100644 index 0000000000000000000000000000000000000000..fe5215b14b470b529e1f5ab8101650178a8bc761 --- /dev/null +++ b/src/Database/Models/MetadataExtractionModel.cs @@ -0,0 +1,25 @@ +using Coscine.Database.DataModel; +using Microsoft.EntityFrameworkCore; +using System; +using System.Linq.Expressions; + +namespace Coscine.Database.Models +{ + public class MetadataExtractionModel : DatabaseModel<MetadataExtraction> + { + public override Expression<Func<MetadataExtraction, Guid>> GetIdFromObject() + { + return (metadataExtractionEntry) => metadataExtractionEntry.Id; + } + + public override DbSet<MetadataExtraction> GetITableFromDatabase(CoscineDB db) + { + return db.MetadataExtractions; + } + + public override void SetObjectId(MetadataExtraction databaseObject, Guid id) + { + databaseObject.Id = id; + } + } +} diff --git a/src/Database/Models/MetadataModel.cs b/src/Database/Models/MetadataModel.cs index 76d854e843c4617341eac7a9d2746292dc5a8520..2b9c8cf33b6dcf1bbde1dd41bad6fd15177729bb 100644 --- a/src/Database/Models/MetadataModel.cs +++ b/src/Database/Models/MetadataModel.cs @@ -6,6 +6,7 @@ using System.Web; namespace Coscine.Database.Models { + [Obsolete("This should not be used")] public class MetadataModel : DatabaseModel<Resource> { @@ -24,6 +25,7 @@ namespace Coscine.Database.Models throw new NotImplementedException(); } + [Obsolete("This should not be used")] public Resource StoreFromObject(ResourceObject resourceObject) { Resource resource = new Resource() @@ -42,6 +44,7 @@ namespace Coscine.Database.Models return resource; } + [Obsolete("This should not be used")] public string GenerateId(string resourceId, string filename) { // Double UrlEncode since converting it to Uri executes one UrlDecode and Virtuoso @@ -50,6 +53,7 @@ namespace Coscine.Database.Models return $"https://purl.org/coscine/md/{resourceId}/{encodedFileName}/"; } + [Obsolete("This should not be used")] public Uri CreateUri(string graphName) { return new Uri(graphName); diff --git a/src/Scaffolding/DataModel/MetadataExtraction.cs b/src/Scaffolding/DataModel/MetadataExtraction.cs new file mode 100644 index 0000000000000000000000000000000000000000..381f5425256fb6b7d2381079d1f6f58bd545d823 --- /dev/null +++ b/src/Scaffolding/DataModel/MetadataExtraction.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +// Code scaffolded by EF Core assumes nullable reference types (NRTs) are not used or disabled. +// If you have enabled NRTs for your project, then un-comment the following line: +// #nullable disable + +namespace Coscine.Database.DataModel +{ + public partial class MetadataExtraction + { + public Guid Id { get; set; } + public Guid ResourceId { get; set; } + public bool Activated { get; set; } + + public virtual Resource Resource { get; set; } + } +} diff --git a/src/Scaffolding/DataModel/Model.cs b/src/Scaffolding/DataModel/Model.cs index 6655bbe50d8a16d62b227eff0090baffe5cd9439..e0729fd1fd3ab5d2386ae9a04911418a0536cbb5 100644 --- a/src/Scaffolding/DataModel/Model.cs +++ b/src/Scaffolding/DataModel/Model.cs @@ -35,6 +35,7 @@ namespace Coscine.Database.DataModel public virtual DbSet<License> Licenses { get; set; } public virtual DbSet<LinkedResourceType> LinkedResourceTypes { get; set; } public virtual DbSet<Log> Logs { get; set; } + public virtual DbSet<MetadataExtraction> MetadataExtractions { get; set; } public virtual DbSet<Project> Projects { get; set; } public virtual DbSet<ProjectDiscipline> ProjectDisciplines { get; set; } public virtual DbSet<ProjectInstitute> ProjectInstitutes { get; set; } @@ -367,6 +368,18 @@ namespace Coscine.Database.DataModel .HasMaxLength(500); }); + modelBuilder.Entity<MetadataExtraction>(entity => + { + entity.ToTable("MetadataExtraction"); + + entity.Property(e => e.Id).HasDefaultValueSql("(newid())"); + + entity.HasOne(d => d.Resource) + .WithMany(p => p.MetadataExtractions) + .HasForeignKey(d => d.ResourceId) + .HasConstraintName("FK_MetadataExtraction_ResourceId_Resources_Id"); + }); + modelBuilder.Entity<Project>(entity => { entity.Property(e => e.Id).HasDefaultValueSql("(newid())"); diff --git a/src/Scaffolding/DataModel/Resource.cs b/src/Scaffolding/DataModel/Resource.cs index 69cb6f23186d57d6de911e088baaba84bf5e9ac4..9fc62ec0c9c59f49885f08b028d83802ce6e2549 100644 --- a/src/Scaffolding/DataModel/Resource.cs +++ b/src/Scaffolding/DataModel/Resource.cs @@ -11,6 +11,7 @@ namespace Coscine.Database.DataModel { public Resource() { + MetadataExtractions = new HashSet<MetadataExtraction>(); ProjectResources = new HashSet<ProjectResource>(); ResourceDisciplines = new HashSet<ResourceDiscipline>(); } @@ -35,6 +36,7 @@ namespace Coscine.Database.DataModel public virtual License License { get; set; } public virtual ResourceType Type { get; set; } public virtual Visibility Visibility { get; set; } + public virtual ICollection<MetadataExtraction> MetadataExtractions { get; set; } public virtual ICollection<ProjectResource> ProjectResources { get; set; } public virtual ICollection<ResourceDiscipline> ResourceDisciplines { get; set; } }