Browse Source

added tag and entity tag with repositories

pull/6784/head
Ahmet 6 years ago
parent
commit
322577ef6f
  1. 6
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Tags/TagConsts.cs
  2. 35
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/EntityTags/EntityTag.cs
  3. 39
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/EntityTags/EntityTagManager.cs
  4. 15
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/EntityTags/IEntityTagManager.cs
  5. 14
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/EntityTags/IEntityTagRepository.cs
  6. 32
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/EntityTag.cs
  7. 9
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/IEntityTagRepository.cs
  8. 5
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/ITagRepository.cs
  9. 12
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/Tag.cs
  10. 26
      modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContextModelCreatingExtensions.cs
  11. 3
      modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitEntityFrameworkCoreModule.cs
  12. 7
      modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Tags/EfCoreEntityTagRepository.cs
  13. 6
      modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbContext.cs
  14. 11
      modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbContextExtensions.cs
  15. 4
      modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbModule.cs
  16. 6
      modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/ICmsKitMongoDbContext.cs
  17. 7
      modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoEntityTagRepository.cs
  18. 3
      modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs

6
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Tags/TagConsts.cs

@ -1,7 +1,11 @@
namespace Volo.CmsKit.Tags
using Volo.CmsKit.Entities;
namespace Volo.CmsKit.Tags
{
public static class TagConsts
{
public static int MaxEntityTypeLength { get; set; } = CmsEntityConsts.MaxEntityTypeLength;
public static int MaxNameLength { get; set; } = 32;
public static int MaxColorHexLength { get; set; } = 6;

35
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/EntityTags/EntityTag.cs

@ -1,35 +0,0 @@
using System;
using Volo.Abp.Domain.Entities;
namespace Volo.CmsKit.Tags
{
public class EntityTag : AggregateRoot
{
protected EntityTag()
{
}
public EntityTag(string entityType, string entityId, Guid tagId)
{
EntityType = entityType;
EntityId = entityId;
TagId = tagId;
}
public virtual string EntityType { get; protected set; }
public virtual string EntityId { get; protected set; }
public virtual Guid TagId { get; set; }
public override object[] GetKeys()
{
return new object[]
{
EntityType,
EntityId,
TagId
};
}
}
}

39
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/EntityTags/EntityTagManager.cs

@ -1,39 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.CmsKit.EntityTags;
using Volo.CmsKit.Tags;
namespace Volo.CmsKit.EntityTags
{
public class EntityTagManager : IEntityTagManager
{
private readonly ITagRepository tagRepository;
private readonly IEntityTagRepository entityTagRepository;
public EntityTagManager(
ITagRepository tagRepository,
IEntityTagRepository entityTagRepository)
{
this.tagRepository = tagRepository;
this.entityTagRepository = entityTagRepository;
}
public Task AddTagToEntityAsync(Guid tagId, string entityType, string entityId)
{
throw new NotImplementedException();
}
public Task<IList<Tag>> GetEntityTagsAsync(string entityType, string entityId)
{
throw new NotImplementedException();
}
public Task RemoveTagFromEntityAsync(Guid tagId, string entityType, string entityId)
{
throw new NotImplementedException();
}
}
}

15
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/EntityTags/IEntityTagManager.cs

@ -1,15 +0,0 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.CmsKit.Tags;
namespace Volo.CmsKit.EntityTags
{
public interface IEntityTagManager
{
Task AddTagToEntityAsync(Guid tagId, string entityType, string entityId);
Task RemoveTagFromEntityAsync(Guid tagId, string entityType, string entityId);
Task<IList<Tag>> GetEntityTagsAsync(string entityType, string entityId);
}
}

14
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/EntityTags/IEntityTagRepository.cs

@ -1,14 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories;
using Volo.CmsKit.Tags;
namespace Volo.CmsKit.EntityTags
{
public interface IEntityTagRepository : IBasicRepository<EntityTag>
{
}
}

32
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/EntityTag.cs

@ -0,0 +1,32 @@
using System;
using Volo.Abp.Domain.Entities;
using Volo.Abp.MultiTenancy;
namespace Volo.CmsKit.Tags
{
public class EntityTag : Entity, IMultiTenant
{
public virtual Guid TagId { get; set; }
public virtual Guid EntityId { get; set; }
public virtual Guid? TenantId { get; }
protected EntityTag()
{
}
public EntityTag(Guid tagId, Guid entityId, Guid? tenantId = null)
{
TagId = tagId;
EntityId = entityId;
TenantId = tenantId;
}
public override object[] GetKeys()
{
return new object[] { TagId, EntityId, TenantId };
}
}
}

9
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/IEntityTagRepository.cs

@ -0,0 +1,9 @@
using Volo.Abp.Domain.Repositories;
namespace Volo.CmsKit.Tags
{
public interface IEntityTagRepository : IBasicRepository<EntityTag>
{
}
}

5
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/ITagRepository.cs

@ -1,10 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories;
using Volo.CmsKit.Tags;
namespace Volo.CmsKit.Tags
{

12
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/Tag.cs

@ -1,28 +1,28 @@
using JetBrains.Annotations;
using System;
using Volo.Abp;
using Volo.Abp.Auditing;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.MultiTenancy;
namespace Volo.CmsKit.Tags
{
public class Tag : BasicAggregateRoot<Guid>, IMultiTenant, IHasCreationTime
public class Tag : FullAuditedAggregateRoot<Guid>, IMultiTenant
{
public string EntityType { get; set; }
public string Name { get; set; }
public string ColorHex { get; set; }
public Guid? TenantId { get; }
public DateTime CreationTime { get; }
protected Tag()
{
}
public Tag([NotNull] string name, [CanBeNull] string colorHex, Guid? tenantId = null)
public Tag([NotNull] string entityType, [NotNull] string name, [CanBeNull] string colorHex, Guid? tenantId = null)
{
EntityType = Check.NotNullOrWhiteSpace(entityType, nameof(entityType), TagConsts.MaxEntityTypeLength);
Name = Check.NotNullOrWhiteSpace(name, nameof(name), TagConsts.MaxNameLength);
ColorHex = Check.Length(colorHex, nameof(colorHex), TagConsts.MaxColorHexLength);
TenantId = tenantId;

26
modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContextModelCreatingExtensions.cs

@ -11,6 +11,7 @@ using Volo.Abp.Users.EntityFrameworkCore;
using Volo.CmsKit.Contents;
using Volo.CmsKit.GlobalFeatures;
using Volo.CmsKit.Ratings;
using Volo.CmsKit.Tags;
namespace Volo.CmsKit.EntityFrameworkCore
{
@ -107,6 +108,31 @@ namespace Volo.CmsKit.EntityFrameworkCore
b.HasIndex(x => new { x.TenantId, x.EntityType, x.EntityId });
});
builder.Entity<Tag>(b =>
{
b.ToTable(options.TablePrefix + "Tags", options.Schema);
b.ConfigureByConvention();
b.Property(x => x.EntityType).IsRequired().HasMaxLength(TagConsts.MaxEntityTypeLength);
b.Property(x => x.Name).IsRequired().HasMaxLength(TagConsts.MaxNameLength);
b.Property(x => x.ColorHex).IsRequired().HasMaxLength(TagConsts.MaxColorHexLength);
b.HasIndex(x => new { x.TenantId, x.Name });
});
builder.Entity<EntityTag>(b =>
{
b.ToTable(options.TablePrefix + "EntityTags", options.Schema);
b.ConfigureByConvention();
b.Property(x => x.EntityId).IsRequired();
b.Property(x => x.TagId).IsRequired();
b.HasIndex(x => new { x.TenantId, x.EntityId, x.TagId });
});
}
}
}

3
modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitEntityFrameworkCoreModule.cs

@ -6,6 +6,7 @@ using Volo.CmsKit.Comments;
using Volo.CmsKit.Contents;
using Volo.CmsKit.Ratings;
using Volo.CmsKit.Reactions;
using Volo.CmsKit.Tags;
using Volo.CmsKit.Users;
namespace Volo.CmsKit.EntityFrameworkCore
@ -26,6 +27,8 @@ namespace Volo.CmsKit.EntityFrameworkCore
options.AddRepository<Comment, EfCoreCommentRepository>();
options.AddRepository<Rating, EfCoreRatingRepository>();
options.AddRepository<Content, EfCoreContentRepository>();
options.AddRepository<Tag, EfCoreTagRepository>();
options.AddRepository<EntityTag, EfCoreEntityTagRepository>();
});
}
}

7
modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityTags/EfCoreEntityTagRepository.cs → modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Tags/EfCoreEntityTagRepository.cs

@ -1,14 +1,13 @@
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
using Volo.CmsKit.EntityFrameworkCore;
using Volo.CmsKit.Tags;
namespace Volo.CmsKit.EntityTags
namespace Volo.CmsKit.Tags
{
public class EfCoreEntityTagRepository : EfCoreRepository<ICmsKitDbContext, EntityTag>, IEntityTagRepository
public class EfCoreEntityTagRepository: EfCoreRepository<ICmsKitDbContext, EntityTag>, IEntityTagRepository
{
public EfCoreEntityTagRepository(IDbContextProvider<ICmsKitDbContext> dbContextProvider) : base(dbContextProvider)
{
}
}
}
}

6
modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbContext.cs

@ -5,7 +5,9 @@ using Volo.CmsKit.Comments;
using Volo.CmsKit.Contents;
using Volo.CmsKit.Ratings;
using Volo.CmsKit.Reactions;
using Volo.CmsKit.Tags;
using Volo.CmsKit.Users;
using Tag = MongoDB.Driver.Tag;
namespace Volo.CmsKit.MongoDB
{
@ -21,6 +23,10 @@ namespace Volo.CmsKit.MongoDB
public IMongoCollection<Rating> Ratings => Collection<Rating>();
public IMongoCollection<Content> Contents => Collection<Content>();
public IMongoCollection<Tag> Tags => Collection<Tag>();
public IMongoCollection<EntityTag> EntityTags => Collection<EntityTag>();
protected override void CreateModel(IMongoModelBuilder modelBuilder)
{

11
modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbContextExtensions.cs

@ -5,6 +5,7 @@ using Volo.CmsKit.Comments;
using Volo.CmsKit.Contents;
using Volo.CmsKit.Ratings;
using Volo.CmsKit.Reactions;
using Volo.CmsKit.Tags;
using Volo.CmsKit.Users;
namespace Volo.CmsKit.MongoDB
@ -47,6 +48,16 @@ namespace Volo.CmsKit.MongoDB
{
x.CollectionName = CmsKitDbProperties.DbTablePrefix + "Contents";
});
builder.Entity<Tag>(x =>
{
x.CollectionName = CmsKitDbProperties.DbTablePrefix + "Tags";
});
builder.Entity<EntityTag>(x =>
{
x.CollectionName = CmsKitDbProperties.DbTablePrefix + "EntityTags";
});
}
}
}

4
modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbModule.cs

@ -8,9 +8,11 @@ using Volo.CmsKit.MongoDB.Comments;
using Volo.CmsKit.MongoDB.Contents;
using Volo.CmsKit.MongoDB.Ratings;
using Volo.CmsKit.MongoDB.Reactions;
using Volo.CmsKit.MongoDB.Tags;
using Volo.CmsKit.MongoDB.Users;
using Volo.CmsKit.Ratings;
using Volo.CmsKit.Reactions;
using Volo.CmsKit.Tags;
using Volo.CmsKit.Users;
namespace Volo.CmsKit.MongoDB
@ -31,6 +33,8 @@ namespace Volo.CmsKit.MongoDB
options.AddRepository<Comment, MongoCommentRepository>();
options.AddRepository<Rating, MongoRatingRepository>();
options.AddRepository<Content, MongoContentRepository>();
options.AddRepository<Tag, MongoTagRepository>();
options.AddRepository<EntityTag, MongoEntityTagRepository>();
});
}
}

6
modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/ICmsKitMongoDbContext.cs

@ -5,7 +5,9 @@ using Volo.CmsKit.Comments;
using Volo.CmsKit.Contents;
using Volo.CmsKit.Ratings;
using Volo.CmsKit.Reactions;
using Volo.CmsKit.Tags;
using Volo.CmsKit.Users;
using Tag = MongoDB.Driver.Tag;
namespace Volo.CmsKit.MongoDB
{
@ -21,5 +23,9 @@ namespace Volo.CmsKit.MongoDB
IMongoCollection<Rating> Ratings { get; }
IMongoCollection<Content> Contents { get; }
IMongoCollection<Tag> Tags { get; }
IMongoCollection<EntityTag> EntityTags { get; }
}
}

7
modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/EntityTags/MongoEntityTagRepository.cs → modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoEntityTagRepository.cs

@ -1,14 +1,13 @@
using Volo.Abp.Domain.Repositories.MongoDB;
using Volo.Abp.MongoDB;
using Volo.CmsKit.EntityTags;
using Volo.CmsKit.Tags;
namespace Volo.CmsKit.MongoDB.EntityTags
namespace Volo.CmsKit.MongoDB.Tags
{
public class MongoEntityTagRepository : MongoDbRepository<ICmsKitMongoDbContext, EntityTag>, IEntityTagRepository
public class MongoEntityTagRepository: MongoDbRepository<ICmsKitMongoDbContext, EntityTag>, IEntityTagRepository
{
public MongoEntityTagRepository(IMongoDbContextProvider<ICmsKitMongoDbContext> dbContextProvider) : base(dbContextProvider)
{
}
}
}
}

3
modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs

@ -1,10 +1,9 @@
using System;
using Volo.Abp.Domain.Repositories.MongoDB;
using Volo.Abp.MongoDB;
using Volo.CmsKit.MongoDB;
using Volo.CmsKit.Tags;
namespace CmsKit.MongoDB.Tags
namespace Volo.CmsKit.MongoDB.Tags
{
public class MongoTagRepository : MongoDbRepository<ICmsKitMongoDbContext, Tag, Guid>, ITagRepository
{

Loading…
Cancel
Save