mirror of https://github.com/abpframework/abp.git
11 changed files with 238 additions and 1 deletions
@ -0,0 +1,17 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<AssemblyName>Volo.Docs.MongoDB</AssemblyName> |
|||
<PackageId>Volo.Docs.MongoDB</PackageId> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\Volo.Docs.Domain\Volo.Docs.Domain.csproj" /> |
|||
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.MongoDB\Volo.Abp.MongoDB.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
@ -0,0 +1,22 @@ |
|||
using Volo.Abp.Modularity; |
|||
using Volo.Abp.MongoDB; |
|||
using Volo.Docs.Projects; |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
|
|||
namespace Volo.Docs.MongoDB |
|||
{ |
|||
[DependsOn( |
|||
typeof(DocsDomainModule), |
|||
typeof(AbpMongoDbModule) |
|||
)] |
|||
public class DocsMongoDbModule : AbpModule |
|||
{ |
|||
public override void ConfigureServices(ServiceConfigurationContext context) |
|||
{ |
|||
context.Services.AddMongoDbContext<DocsMongoDbContext>(options => |
|||
{ |
|||
options.AddRepository<Project, MongoProjectRepository>(); |
|||
}); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,25 @@ |
|||
using MongoDB.Driver; |
|||
using Volo.Abp.Data; |
|||
using Volo.Docs.Projects; |
|||
using Volo.Abp.MongoDB; |
|||
|
|||
namespace Volo.Docs.MongoDB |
|||
{ |
|||
[ConnectionStringName(DocsConsts.ConnectionStringName)] |
|||
public class DocsMongoDbContext : AbpMongoDbContext, IDocsMongoDbContext |
|||
{ |
|||
public static string CollectionPrefix { get; set; } = DocsConsts.DefaultDbTablePrefix; |
|||
|
|||
public IMongoCollection<Project> Projects => Collection<Project>(); |
|||
|
|||
protected override void CreateModel(IMongoModelBuilder modelBuilder) |
|||
{ |
|||
base.CreateModel(modelBuilder); |
|||
|
|||
modelBuilder.ConfigureDocs(options => |
|||
{ |
|||
options.CollectionPrefix = CollectionPrefix; |
|||
}); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,28 @@ |
|||
|
|||
using System; |
|||
using Volo.Abp; |
|||
using Volo.Abp.MongoDB; |
|||
using Volo.Docs.Projects; |
|||
|
|||
namespace Volo.Docs.MongoDB |
|||
{ |
|||
public static class DocsMongoDbContextExtensions |
|||
{ |
|||
public static void ConfigureDocs( |
|||
this IMongoModelBuilder builder, |
|||
Action<MongoModelBuilderConfigurationOptions> optionsAction = null) |
|||
{ |
|||
Check.NotNull(builder, nameof(builder)); |
|||
|
|||
var options = new DocsMongoModelBuilderConfigurationOptions(); |
|||
|
|||
optionsAction?.Invoke(options); |
|||
|
|||
builder.Entity<Project>(b => |
|||
{ |
|||
b.CollectionName = options.CollectionPrefix + "Projects"; |
|||
}); |
|||
} |
|||
} |
|||
} |
|||
|
|||
@ -0,0 +1,16 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Text; |
|||
using JetBrains.Annotations; |
|||
using Volo.Abp.MongoDB; |
|||
|
|||
namespace Volo.Docs.MongoDB |
|||
{ |
|||
public class DocsMongoModelBuilderConfigurationOptions : MongoModelBuilderConfigurationOptions |
|||
{ |
|||
public DocsMongoModelBuilderConfigurationOptions([NotNull] string tablePrefix = DocsConsts.DefaultDbTablePrefix) |
|||
: base(tablePrefix) |
|||
{ |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,15 @@ |
|||
using MongoDB.Driver; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.MongoDB; |
|||
using Volo.Docs.Projects; |
|||
|
|||
namespace Volo.Docs.MongoDB |
|||
{ |
|||
[ConnectionStringName(DocsConsts.ConnectionStringName)] |
|||
public interface IDocsMongoDbContext : IAbpMongoDbContext |
|||
{ |
|||
|
|||
IMongoCollection<Project> Projects { get; } |
|||
|
|||
} |
|||
} |
|||
@ -0,0 +1,42 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Threading.Tasks; |
|||
using MongoDB.Driver; |
|||
using MongoDB.Driver.Linq; |
|||
using Volo.Abp.Domain.Entities; |
|||
using Volo.Abp.Domain.Repositories.MongoDB; |
|||
using Volo.Abp.MongoDB; |
|||
using Volo.Docs.MongoDB; |
|||
using System.Linq; |
|||
using System.Linq.Dynamic.Core; |
|||
|
|||
namespace Volo.Docs.Projects |
|||
{ |
|||
public class MongoProjectRepository : MongoDbRepository<IDocsMongoDbContext, Project, Guid>, IProjectRepository |
|||
{ |
|||
public MongoProjectRepository(IMongoDbContextProvider<IDocsMongoDbContext> dbContextProvider) : base(dbContextProvider) |
|||
{ |
|||
} |
|||
|
|||
public async Task<List<Project>> GetListAsync(string sorting, int maxResultCount, int skipCount) |
|||
{ |
|||
var projects = await GetMongoQueryable().OrderBy(sorting ?? "Id desc").As<IMongoQueryable<Project>>() |
|||
.PageBy<Project, IMongoQueryable<Project>>(skipCount, maxResultCount) |
|||
.ToListAsync(); |
|||
|
|||
return projects; |
|||
} |
|||
|
|||
public async Task<Project> GetByShortNameAsync(string shortName) |
|||
{ |
|||
var project = await GetMongoQueryable().FirstOrDefaultAsync(p => p.ShortName == shortName); |
|||
|
|||
if (project == null) |
|||
{ |
|||
throw new EntityNotFoundException($"Project with the name {shortName} not found!"); |
|||
} |
|||
|
|||
return project; |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,19 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netcoreapp2.2</TargetFramework> |
|||
|
|||
<IsPackable>false</IsPackable> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" /> |
|||
<PackageReference Include="Mongo2Go" Version="2.2.8" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\..\src\Volo.Docs.MongoDB\Volo.Docs.MongoDB.csproj" /> |
|||
<ProjectReference Include="..\Volo.Docs.TestBase\Volo.Docs.TestBase.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
@ -0,0 +1,31 @@ |
|||
using Mongo2Go; |
|||
using Volo.Abp; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.Modularity; |
|||
|
|||
namespace Volo.Docs.MongoDB |
|||
{ |
|||
[DependsOn( |
|||
typeof(DocsTestBaseModule), |
|||
typeof(DocsMongoDbModule) |
|||
)] |
|||
public class DocsMongoDBTestModule : AbpModule |
|||
{ |
|||
private MongoDbRunner _mongoDbRunner; |
|||
|
|||
public override void ConfigureServices(ServiceConfigurationContext context) |
|||
{ |
|||
_mongoDbRunner = MongoDbRunner.Start(); |
|||
|
|||
Configure<DbConnectionOptions>(options => |
|||
{ |
|||
options.ConnectionStrings.Default = _mongoDbRunner.ConnectionString; |
|||
}); |
|||
} |
|||
|
|||
public override void OnApplicationShutdown(ApplicationShutdownContext context) |
|||
{ |
|||
_mongoDbRunner.Dispose(); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,8 @@ |
|||
using Volo.Docs.MongoDB; |
|||
|
|||
namespace Volo.Docs.Project |
|||
{ |
|||
public class ProjectRepository_Tests : ProjectRepository_Tests<DocsMongoDBTestModule> |
|||
{ |
|||
} |
|||
} |
|||
Loading…
Reference in new issue