diff --git a/local_db_manual_scaffolding.ps1 b/local_db_manual_scaffolding.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..b11b4a788765c04969d14bf3d6cd0518dfe2d9c1 --- /dev/null +++ b/local_db_manual_scaffolding.ps1 @@ -0,0 +1,15 @@ +$DB_DATA_SOURCE = consul kv get "coscine/global/db_data_source" +$DB_USER_ID = consul kv get "coscine/global/db_user_id" +$DB_PASSWORD = consul kv get "coscine/global/db_password" +$DB_NAME = consul kv get "coscine/global/db_name" + +dotnet new tool-manifest --force +dotnet tool install dotnet-ef +dotnet tool update dotnet-ef + +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" + +# Remove the hardcoded Connection String inside \DataModel\Model.cs +Set-Content -Path ".\src\Scaffolding\DataModel\Model.txt" -Value (Get-Content -Path ".\src\Scaffolding\DataModel\Model.cs" | where { $_ | Select-String -Pattern '#warning' -NotMatch } | where { $_ | Select-String -Pattern 'Data Source=' -NotMatch } ) -Force +Set-Content -Path ".\src\Scaffolding\DataModel\Model.cs" -Value (Get-Content -Path ".\src\Scaffolding\DataModel\Model.txt") -Force +Remove-Item ".\src\Scaffolding\DataModel\Model.txt" diff --git a/src/Database/Models/RDSResourceTypeModel.cs b/src/Database/Models/RDSResourceTypeModel.cs index 5b2eeff6705204c554afb8b9921e798a59ff93a8..7a08f070307d392c0ee883eb409bbc5183e9946c 100644 --- a/src/Database/Models/RDSResourceTypeModel.cs +++ b/src/Database/Models/RDSResourceTypeModel.cs @@ -27,8 +27,11 @@ namespace Coscine.Database.Models { var dictionary = new Dictionary<string, string>(); var resourceType = GetById(id); + dictionary.Add("accessKey", resourceType.AccessKey); + dictionary.Add("secretKey", resourceType.SecretKey); dictionary.Add("bucketname", resourceType.BucketName); - dictionary.Add("size", $"{resourceType.Size}"); + dictionary.Add("endpoint", resourceType.Endpoint); + dictionary.Add("size", $"{resourceType.Size}"); return dictionary; } } diff --git a/src/Database/Models/ResourceModel.cs b/src/Database/Models/ResourceModel.cs index b9a2af775447b1542ee810d6120c2080c5ad081b..b589186597a7911492199f8739517d6df012b0ea 100644 --- a/src/Database/Models/ResourceModel.cs +++ b/src/Database/Models/ResourceModel.cs @@ -101,7 +101,7 @@ namespace Coscine.Database.Models from jrt in joinedRt.DefaultIfEmpty() where jp.Deleted == false && - jrt.DisplayName == "rds" + IsLikeRds(jrt.DisplayName) group r by jpi.OrganizationUrl into g select new OrganizationResourceListObject(g.Key, g.ToList())).ToList(); }); @@ -109,7 +109,7 @@ namespace Coscine.Database.Models private void SetResourceTypeObject(Resource resource, JObject resourceTypeOption) { - if (resource.Type.DisplayName == "rds") + if (IsLikeRds(resource.Type.DisplayName)) { RDSResourceTypeObject rdsResourceTypeObject = resourceTypeOption.ToObject<RDSResourceTypeObject>(); RDSResourceTypeModel rdsResourceTypeModel = new RDSResourceTypeModel(); @@ -195,7 +195,7 @@ namespace Coscine.Database.Models Update(resource); } } - else if (resource.Type.DisplayName == "rdss3") + else if (IsLikeRdsS3(resource.Type.DisplayName)) { var rdsS3ResourceTypeObject = resourceTypeOption.ToObject<RdsS3ResourceTypeObject>(); var rdsS3ResourceTypeModel = new RdsS3ResourceTypeModel(); @@ -238,7 +238,7 @@ namespace Coscine.Database.Models { return new GitlabResourceTypeModel().GetResourceTypeOptions(resourceTypeOptionId); } - else if (resourceType.DisplayName == "rds") + else if (IsLikeRds(resourceType.DisplayName)) { return new RDSResourceTypeModel().GetResourceTypeOptions(resourceTypeOptionId); } @@ -250,7 +250,7 @@ namespace Coscine.Database.Models { return new LinkedResourceTypeModel().GetResourceTypeOptions(resourceTypeOptionId); } - else if (resourceType.DisplayName == "rdss3") + else if (IsLikeRdsS3(resourceType.DisplayName)) { return new RdsS3ResourceTypeModel().GetResourceTypeOptions(resourceTypeOptionId); } @@ -341,7 +341,7 @@ namespace Coscine.Database.Models public void DeleteResourceTypeObject(Resource resource) { SetType(resource); - if (resource.Type.DisplayName == "rds" && resource.ResourceTypeOptionId != null) + if (IsLikeRds(resource.Type.DisplayName) && resource.ResourceTypeOptionId != null) { RDSResourceTypeModel rdsResourceTypeModel = new RDSResourceTypeModel(); rdsResourceTypeModel.Delete(rdsResourceTypeModel.GetById(resource.ResourceTypeOptionId.Value)); @@ -356,7 +356,12 @@ namespace Coscine.Database.Models GitlabResourceTypeModel gitlabResourceTypeModel = new GitlabResourceTypeModel(); gitlabResourceTypeModel.Delete(gitlabResourceTypeModel.GetById(resource.ResourceTypeOptionId.Value)); } - else if (resource.Type.DisplayName == "rdss3" && resource.ResourceTypeOptionId != null) + else if (resource.Type.DisplayName == "linked" && resource.ResourceTypeOptionId != null) + { + LinkedResourceTypeModel linkedResourceTypeModel = new LinkedResourceTypeModel(); + linkedResourceTypeModel.Delete(linkedResourceTypeModel.GetById(resource.ResourceTypeOptionId.Value)); + } + else if (IsLikeRdsS3(resource.Type.DisplayName) && resource.ResourceTypeOptionId != null) { var rdsS3ResourceTypeModel = new RdsS3ResourceTypeModel(); rdsS3ResourceTypeModel.Delete(rdsS3ResourceTypeModel.GetById(resource.ResourceTypeOptionId.Value)); @@ -387,7 +392,7 @@ namespace Coscine.Database.Models } ResourceTypeOptionObject resourceTypeOptionObject = null; - if (resource.Type.DisplayName == "rds" && resource.ResourceTypeOptionId != null) + if (IsLikeRds(resource.Type.DisplayName) && resource.ResourceTypeOptionId != null) { RDSResourceTypeModel rdsResourceTypeModel = new RDSResourceTypeModel(); var rdsResourceType = rdsResourceTypeModel.GetById(resource.ResourceTypeOptionId.Value); @@ -412,7 +417,7 @@ namespace Coscine.Database.Models resourceTypeOptionObject = new LinkedResourceTypeObject(linkedResourceType.Id); } - else if (resource.Type.DisplayName == "rdss3" && resource.ResourceTypeOptionId != null) + else if (IsLikeRdsS3(resource.Type.DisplayName) && resource.ResourceTypeOptionId != null) { var rdsS3ResourceTypeModel = new RdsS3ResourceTypeModel(); var rdsS3ResourceType = rdsS3ResourceTypeModel.GetById(resource.ResourceTypeOptionId.Value); @@ -444,7 +449,7 @@ namespace Coscine.Database.Models resource.ApplicationProfile, JToken.Parse(resource.FixedValues ?? "{}"), (resource.Creator != null) ? resource.Creator : null, - (resource.Archived == "1") ? true : false + resource.Archived == "1" ); } @@ -502,7 +507,7 @@ namespace Coscine.Database.Models } else if (property.PropertyType == typeof(IEnumerable<DisciplineObject>) && property.GetValue(resourceObject) != null - && ((IEnumerable<DisciplineObject>)property.GetValue(resourceObject)).Count() > 0) + && ((IEnumerable<DisciplineObject>)property.GetValue(resourceObject)).Any()) { counted++; } @@ -530,5 +535,15 @@ namespace Coscine.Database.Models return $"{counted}/{maxCount}"; } + + private bool IsLikeRds(string compare) + { + return compare == "rds" || compare == "rdsude"; + } + + private bool IsLikeRdsS3(string compare) + { + return compare == "rdss3" || compare == "rdss3ude"; + } } } diff --git a/src/Scaffolding/DataModel/Model.cs b/src/Scaffolding/DataModel/Model.cs index 9de0b64024a38d54a910b4910ba842e03e2865c0..4fc5c3218fbb05f7dff0d9311db5ea96c951ae53 100644 --- a/src/Scaffolding/DataModel/Model.cs +++ b/src/Scaffolding/DataModel/Model.cs @@ -551,9 +551,21 @@ namespace Coscine.Database.DataModel entity.Property(e => e.Id).HasDefaultValueSql("(newid())"); + entity.Property(e => e.AccessKey) + .IsRequired() + .HasMaxLength(200); + entity.Property(e => e.BucketName) .IsRequired() .HasMaxLength(63); + + entity.Property(e => e.Endpoint) + .IsRequired() + .HasMaxLength(200); + + entity.Property(e => e.SecretKey) + .IsRequired() + .HasMaxLength(200); }); modelBuilder.Entity<Resource>(entity => diff --git a/src/Scaffolding/DataModel/RdsresourceType.cs b/src/Scaffolding/DataModel/RdsresourceType.cs index 88751a2511be2d79e44568ff24ccff70c924cf18..673987713bec53d79a4ad8e13467022dfd043359 100644 --- a/src/Scaffolding/DataModel/RdsresourceType.cs +++ b/src/Scaffolding/DataModel/RdsresourceType.cs @@ -12,5 +12,8 @@ namespace Coscine.Database.DataModel public Guid Id { get; set; } public string BucketName { get; set; } public int? Size { get; set; } + public string AccessKey { get; set; } + public string SecretKey { get; set; } + public string Endpoint { get; set; } } }