-
-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
11 changed files
with
272 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
using Nikcio.UHeadless.Base.Elements.Commands; | ||
using Nikcio.UHeadless.Core.Commands; | ||
using Umbraco.Cms.Core.Models.PublishedContent; | ||
|
||
namespace Nikcio.UHeadless.Members.Commands { | ||
/// <summary> | ||
/// A command to create a member | ||
/// </summary> | ||
public class CreateMember : ICommand { | ||
/// <inheritdoc/> | ||
public CreateMember(IPublishedContent? member, string? culture, CreateElement createElement) { | ||
Member = member; | ||
Culture = culture; | ||
CreateElement = createElement; | ||
} | ||
|
||
/// <summary> | ||
/// The published member | ||
/// </summary> | ||
public virtual IPublishedContent? Member { get; set; } | ||
|
||
/// <summary> | ||
/// The culture | ||
/// </summary> | ||
public virtual string? Culture { get; set; } | ||
|
||
/// <summary> | ||
/// The create element command | ||
/// </summary> | ||
public virtual CreateElement CreateElement { get; set; } | ||
} | ||
} |
19 changes: 19 additions & 0 deletions
19
src/Nikcio.UHeadless.Members/Extensions/FactoryExtensions.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
using Microsoft.Extensions.DependencyInjection; | ||
using Nikcio.UHeadless.Members.Factories; | ||
|
||
namespace Nikcio.UHeadless.Members.Extensions { | ||
/// <inheritdoc/> | ||
public static class FactoryExtensions { | ||
/// <summary> | ||
/// Adds factories | ||
/// </summary> | ||
/// <param name="services"></param> | ||
/// <returns></returns> | ||
public static IServiceCollection AddFactories(this IServiceCollection services) { | ||
services | ||
.AddScoped(typeof(IMemberFactory<,>), typeof(MemberFactory<,>)); | ||
|
||
return services; | ||
} | ||
} | ||
} |
21 changes: 21 additions & 0 deletions
21
src/Nikcio.UHeadless.Members/Extensions/MemberExtensions.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
using Microsoft.Extensions.DependencyInjection; | ||
|
||
namespace Nikcio.UHeadless.Members.Extensions { | ||
/// <summary> | ||
/// Member extensions | ||
/// </summary> | ||
public static class MemberExtensions { | ||
/// <summary> | ||
/// Adds all the Member services | ||
/// </summary> | ||
/// <param name="services"></param> | ||
/// <returns></returns> | ||
public static IServiceCollection AddMemberServices(this IServiceCollection services) { | ||
services | ||
.AddMemberRepositories() | ||
.AddFactories(); | ||
|
||
return services; | ||
} | ||
} | ||
} |
21 changes: 21 additions & 0 deletions
21
src/Nikcio.UHeadless.Members/Extensions/RepositoryExtensions.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
using Microsoft.Extensions.DependencyInjection; | ||
using Nikcio.UHeadless.Members.Repositories; | ||
|
||
namespace Nikcio.UHeadless.Members.Extensions { | ||
/// <summary> | ||
/// Repository extensions | ||
/// </summary> | ||
public static class RepositoryExtensions { | ||
/// <summary> | ||
/// Adds all the Member repositories | ||
/// </summary> | ||
/// <param name="services"></param> | ||
/// <returns></returns> | ||
public static IServiceCollection AddMemberRepositories(this IServiceCollection services) { | ||
services | ||
.AddScoped(typeof(IMemberRepository<,>), typeof(MemberRepository<,>)); | ||
|
||
return services; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
using Nikcio.UHeadless.Base.Elements.Factories; | ||
using Nikcio.UHeadless.Base.Properties.Models; | ||
using Nikcio.UHeadless.Members.Models; | ||
using Umbraco.Cms.Core.Models.PublishedContent; | ||
|
||
namespace Nikcio.UHeadless.Members.Factories { | ||
/// <summary> | ||
/// A factory for creating members | ||
/// </summary> | ||
/// <typeparam name="TMember"></typeparam> | ||
/// <typeparam name="TProperty"></typeparam> | ||
public interface IMemberFactory<TMember, TProperty> : IElementFactory<TMember, TProperty> | ||
where TMember : IMember<TProperty> | ||
where TProperty : IProperty { | ||
/// <summary> | ||
/// Creates a member | ||
/// </summary> | ||
/// <param name="member"></param> | ||
/// <param name="culture"></param> | ||
/// <returns></returns> | ||
TMember? CreateMember(IPublishedContent member, string? culture); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
using Nikcio.UHeadless.Base.Elements.Commands; | ||
using Nikcio.UHeadless.Base.Properties.Models; | ||
using Nikcio.UHeadless.Core.Reflection.Factories; | ||
using Nikcio.UHeadless.Members.Commands; | ||
using Nikcio.UHeadless.Members.Models; | ||
using Umbraco.Cms.Core.Models.PublishedContent; | ||
|
||
namespace Nikcio.UHeadless.Members.Factories { | ||
/// <inheritdoc/> | ||
public class MemberFactory<TMember, TProperty> : IMemberFactory<TMember, TProperty> | ||
where TMember : IMember<TProperty> | ||
where TProperty : IProperty { | ||
/// <summary> | ||
/// A factory for creating object with DI | ||
/// </summary> | ||
protected readonly IDependencyReflectorFactory dependencyReflectorFactory; | ||
|
||
/// <inheritdoc/> | ||
public MemberFactory(IDependencyReflectorFactory dependencyReflectorFactory) { | ||
this.dependencyReflectorFactory = dependencyReflectorFactory; | ||
} | ||
|
||
/// <inheritdoc/> | ||
public TMember? CreateElement(IPublishedContent? element, string? culture) { | ||
var createElementCommand = new CreateElement(element, culture); | ||
var createMemberCommand = new CreateMember(element, culture, createElementCommand); | ||
|
||
var createdContent = dependencyReflectorFactory.GetReflectedType<IMember<TProperty>>(typeof(TMember), new object[] { createMemberCommand }); | ||
return createdContent == null ? default : (TMember) createdContent; | ||
} | ||
|
||
/// <inheritdoc/> | ||
public virtual TMember? CreateMember(IPublishedContent member, string? culture) { | ||
return CreateElement(member, culture); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
using HotChocolate; | ||
using Nikcio.UHeadless.Base.Elements.Models; | ||
using Nikcio.UHeadless.Base.Properties.Models; | ||
|
||
namespace Nikcio.UHeadless.Members.Models { | ||
/// <summary> | ||
/// Represents a member | ||
/// </summary> | ||
/// <typeparam name="TProperty"></typeparam> | ||
[GraphQLDescription("Represents a member.")] | ||
public interface IMember<TProperty> : IElement<TProperty> | ||
where TProperty : IProperty { | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
using Nikcio.UHeadless.Base.Elements.Models; | ||
using Nikcio.UHeadless.Base.Properties.Factories; | ||
using Nikcio.UHeadless.Base.Properties.Models; | ||
using Nikcio.UHeadless.Members.Commands; | ||
|
||
namespace Nikcio.UHeadless.Members.Models { | ||
/// <summary> | ||
/// A base for member | ||
/// </summary> | ||
/// <typeparam name="TProperty"></typeparam> | ||
public abstract class Member<TProperty> : Element<TProperty>, IMember<TProperty> | ||
where TProperty : IProperty { | ||
/// <inheritdoc/> | ||
protected Member(CreateMember createMember, IPropertyFactory<TProperty> propertyFactory) : base(createMember.CreateElement, propertyFactory) { | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
using Nikcio.UHeadless.Base.Properties.Models; | ||
using Nikcio.UHeadless.Members.Models; | ||
|
||
namespace Nikcio.UHeadless.Members.Queries { | ||
/// <summary> | ||
/// The base implementation of the Member queries | ||
/// </summary> | ||
/// <typeparam name="TMember"></typeparam> | ||
/// <typeparam name="TProperty"></typeparam> | ||
public class MemberQuery<TMember, TProperty> | ||
where TMember : IMember<TProperty> | ||
where TProperty : IProperty { | ||
|
||
} | ||
} |
37 changes: 37 additions & 0 deletions
37
src/Nikcio.UHeadless.Members/Repositories/IMemberRepository.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
using Nikcio.UHeadless.Base.Properties.Models; | ||
using Nikcio.UHeadless.Members.Models; | ||
using Umbraco.Cms.Core.Models.PublishedContent; | ||
using Umbraco.Cms.Core.PublishedCache; | ||
|
||
namespace Nikcio.UHeadless.Members.Repositories { | ||
/// <summary> | ||
/// A repository to get Member from Umbraco | ||
/// </summary> | ||
public interface IMemberRepository<TMember, TProperty> | ||
where TMember : IMember<TProperty> | ||
where TProperty : IProperty { | ||
/// <summary> | ||
/// Gets the Member based on a fetch method | ||
/// </summary> | ||
/// <param name="fetch">The fetch method</param> | ||
/// <param name="culture">The culture</param> | ||
/// <returns></returns> | ||
TMember? GetMember(Func<IPublishedMemberCache?, IPublishedContent?> fetch, string? culture); | ||
|
||
/// <summary> | ||
/// Gets a Member lsit based on a fetch method | ||
/// </summary> | ||
/// <param name="fetch">The fetch method</param> | ||
/// <param name="culture">The culture</param> | ||
/// <returns></returns> | ||
IEnumerable<TMember?> GetMemberList(Func<IPublishedMemberCache?, IEnumerable<IPublishedContent>?> fetch, string? culture); | ||
|
||
/// <summary> | ||
/// Gets a <see cref="IPublishedContent"/> converted to T | ||
/// </summary> | ||
/// <param name="Member">The published Member</param> | ||
/// <param name="culture">The culture</param> | ||
/// <returns></returns> | ||
TMember? GetConvertedMember(IPublishedContent Member, string culture); | ||
} | ||
} |
36 changes: 36 additions & 0 deletions
36
src/Nikcio.UHeadless.Members/Repositories/MemberRepository.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
using Microsoft.Extensions.Logging; | ||
using Nikcio.UHeadless.Base.Elements.Repositories; | ||
using Nikcio.UHeadless.Base.Properties.Models; | ||
using Nikcio.UHeadless.Members.Factories; | ||
using Nikcio.UHeadless.Members.Models; | ||
using Umbraco.Cms.Core.Models.PublishedContent; | ||
using Umbraco.Cms.Core.PublishedCache; | ||
using Umbraco.Cms.Core.Web; | ||
|
||
namespace Nikcio.UHeadless.Members.Repositories { | ||
/// <inheritdoc/> | ||
public class MemberRepository<TMember, TProperty> : NonCachedElementRepository<TMember, TProperty>, IMemberRepository<TMember, TProperty> | ||
where TMember : IMember<TProperty> | ||
where TProperty : IProperty { | ||
|
||
/// <inheritdoc/> | ||
public MemberRepository(IPublishedSnapshotAccessor publishedSnapshotAccessor, IUmbracoContextFactory umbracoContextFactory, IMemberFactory<TMember, TProperty> MemberFactory, ILogger<MemberRepository<TMember, TProperty>> logger) : base(publishedSnapshotAccessor, umbracoContextFactory, MemberFactory, logger) { | ||
umbracoContextFactory.EnsureUmbracoContext(); | ||
} | ||
|
||
/// <inheritdoc/> | ||
public virtual TMember? GetMember(Func<IPublishedMemberCache?, IPublishedContent?> fetch, string? culture) { | ||
throw new NotImplementedException(); | ||
} | ||
|
||
/// <inheritdoc/> | ||
public virtual IEnumerable<TMember?> GetMemberList(Func<IPublishedMemberCache?, IEnumerable<IPublishedContent>?> fetch, string? culture) { | ||
throw new NotImplementedException(); | ||
} | ||
|
||
/// <inheritdoc/> | ||
public virtual TMember? GetConvertedMember(IPublishedContent Member, string? culture) { | ||
return base.GetConvertedElement(Member, culture); | ||
} | ||
} | ||
} |