Created and configured Page entity

pull/6821/head
Ahmet 5 years ago
parent e8fa6e463c
commit 1603103883

@ -0,0 +1,11 @@
namespace Volo.CmsKit.Pages
{
public class PageConsts
{
public const int MaxTitleLength = 256;
public const int MaxUrlLength = 256;
public const int MaxDescriptionLength = 515;
}
}

@ -0,0 +1,10 @@
using System;
using Volo.Abp.Domain.Repositories;
namespace Volo.CmsKit.Pages
{
public interface IPageRepository : IBasicRepository<Page, Guid>
{
}
}

@ -0,0 +1,38 @@
using System;
using JetBrains.Annotations;
using Volo.Abp;
using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.MultiTenancy;
namespace Volo.CmsKit.Pages
{
public class Page : FullAuditedAggregateRoot<Guid>, IMultiTenant
{
public Guid? TenantId { get; }
public virtual string Title { get; set; }
public virtual string Description { get; set; }
public virtual string Url { get; set; }
protected Page()
{
}
public Page(Guid id, [NotNull] string title, [CanBeNull] string description, [CanBeNull] string url = null, Guid? tenantId = null) : base(id)
{
Title = Check.NotNullOrWhiteSpace(title, nameof(title), PageConsts.MaxTitleLength);
Description = Check.Length(description, nameof(description), PageConsts.MaxDescriptionLength);
SetUrl(url);
TenantId = tenantId;
}
public virtual void SetUrl(string url)
{
Url = Check.Length(url, nameof(url), PageConsts.MaxUrlLength);
}
}
}

@ -10,6 +10,7 @@ using Volo.CmsKit.Users;
using Volo.Abp.Users.EntityFrameworkCore;
using Volo.CmsKit.Contents;
using Volo.CmsKit.GlobalFeatures;
using Volo.CmsKit.Pages;
using Volo.CmsKit.Ratings;
using Volo.CmsKit.Tags;
@ -135,6 +136,19 @@ namespace Volo.CmsKit.EntityFrameworkCore
b.HasIndex(x => new { x.TenantId, x.EntityId, x.TagId });
});
builder.Entity<Page>(b =>
{
b.ToTable(options.TablePrefix + "Pages", options.Schema);
b.ConfigureByConvention();
b.Property(x => x.Title).IsRequired().HasMaxLength(PageConsts.MaxTitleLength);
b.Property(x => x.Url).IsRequired().HasMaxLength(PageConsts.MaxUrlLength);
b.Property(x => x.Description).HasMaxLength(PageConsts.MaxDescriptionLength);
b.HasIndex(x => new { x.TenantId, x.Url });
});
}
}
}

@ -4,6 +4,7 @@ using Volo.Abp.Modularity;
using Volo.Abp.Users.EntityFrameworkCore;
using Volo.CmsKit.Comments;
using Volo.CmsKit.Contents;
using Volo.CmsKit.Pages;
using Volo.CmsKit.Ratings;
using Volo.CmsKit.Reactions;
using Volo.CmsKit.Tags;
@ -29,6 +30,7 @@ namespace Volo.CmsKit.EntityFrameworkCore
options.AddRepository<Content, EfCoreContentRepository>();
options.AddRepository<Tag, EfCoreTagRepository>();
options.AddRepository<EntityTag, EfCoreEntityTagRepository>();
options.AddRepository<Page, EfCorePageRepository>();
});
}
}

@ -0,0 +1,14 @@
using System;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
using Volo.CmsKit.EntityFrameworkCore;
namespace Volo.CmsKit.Pages
{
public class EfCorePageRepository : EfCoreRepository<ICmsKitDbContext, Page, Guid>, IPageRepository
{
public EfCorePageRepository(IDbContextProvider<ICmsKitDbContext> dbContextProvider) : base(dbContextProvider)
{
}
}
}

@ -3,6 +3,7 @@ using Volo.Abp.Data;
using Volo.Abp.MongoDB;
using Volo.CmsKit.Comments;
using Volo.CmsKit.Contents;
using Volo.CmsKit.Pages;
using Volo.CmsKit.Ratings;
using Volo.CmsKit.Reactions;
using Volo.CmsKit.Tags;
@ -27,6 +28,8 @@ namespace Volo.CmsKit.MongoDB
public IMongoCollection<Tag> Tags => Collection<Tag>();
public IMongoCollection<EntityTag> EntityTags => Collection<EntityTag>();
public IMongoCollection<Page> Pages => Collection<Page>();
protected override void CreateModel(IMongoModelBuilder modelBuilder)
{

@ -3,6 +3,7 @@ using Volo.Abp;
using Volo.Abp.MongoDB;
using Volo.CmsKit.Comments;
using Volo.CmsKit.Contents;
using Volo.CmsKit.Pages;
using Volo.CmsKit.Ratings;
using Volo.CmsKit.Reactions;
using Volo.CmsKit.Tags;
@ -58,6 +59,11 @@ namespace Volo.CmsKit.MongoDB
{
x.CollectionName = CmsKitDbProperties.DbTablePrefix + "EntityTags";
});
builder.Entity<Page>(x =>
{
x.CollectionName = CmsKitDbProperties.DbTablePrefix + "Pages";
});
}
}
}

@ -6,10 +6,12 @@ using Volo.CmsKit.Comments;
using Volo.CmsKit.Contents;
using Volo.CmsKit.MongoDB.Comments;
using Volo.CmsKit.MongoDB.Contents;
using Volo.CmsKit.MongoDB.Pages;
using Volo.CmsKit.MongoDB.Ratings;
using Volo.CmsKit.MongoDB.Reactions;
using Volo.CmsKit.MongoDB.Tags;
using Volo.CmsKit.MongoDB.Users;
using Volo.CmsKit.Pages;
using Volo.CmsKit.Ratings;
using Volo.CmsKit.Reactions;
using Volo.CmsKit.Tags;
@ -35,6 +37,7 @@ namespace Volo.CmsKit.MongoDB
options.AddRepository<Content, MongoContentRepository>();
options.AddRepository<Tag, MongoTagRepository>();
options.AddRepository<EntityTag, MongoEntityTagRepository>();
options.AddRepository<Page, MongoPageRepository>();
});
}
}

@ -3,6 +3,7 @@ using Volo.Abp.Data;
using Volo.Abp.MongoDB;
using Volo.CmsKit.Comments;
using Volo.CmsKit.Contents;
using Volo.CmsKit.Pages;
using Volo.CmsKit.Ratings;
using Volo.CmsKit.Reactions;
using Volo.CmsKit.Tags;
@ -27,5 +28,7 @@ namespace Volo.CmsKit.MongoDB
IMongoCollection<Tag> Tags { get; }
IMongoCollection<EntityTag> EntityTags { get; }
IMongoCollection<Page> Pages { get; }
}
}

@ -0,0 +1,14 @@
using System;
using Volo.Abp.Domain.Repositories.MongoDB;
using Volo.Abp.MongoDB;
using Volo.CmsKit.Pages;
namespace Volo.CmsKit.MongoDB.Pages
{
public class MongoPageRepository : MongoDbRepository<ICmsKitMongoDbContext, Page, Guid>, IPageRepository
{
public MongoPageRepository(IMongoDbContextProvider<ICmsKitMongoDbContext> dbContextProvider) : base(dbContextProvider)
{
}
}
}
Loading…
Cancel
Save