mirror of https://github.com/Squidex/squidex.git
60 changed files with 638 additions and 466 deletions
@ -1,19 +1,23 @@ |
|||
// ==========================================================================
|
|||
// IRegisteredField.cs
|
|||
// IFieldPartitionItem.cs
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex Group
|
|||
// All rights reserved.
|
|||
// ==========================================================================
|
|||
|
|||
using System; |
|||
using System.Collections.Generic; |
|||
|
|||
namespace Squidex.Core.Schemas |
|||
namespace Squidex.Core |
|||
{ |
|||
public interface IRegisteredField |
|||
public interface IFieldPartitionItem |
|||
{ |
|||
Type PropertiesType { get; } |
|||
string Key { get; } |
|||
|
|||
Field CreateField(long id, string name, FieldProperties properties); |
|||
string Name { get; } |
|||
|
|||
bool IsOptional { get; } |
|||
|
|||
IEnumerable<string> Fallback { get; } |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,19 @@ |
|||
// ==========================================================================
|
|||
// IFieldPartitioning.cs
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex Group
|
|||
// All rights reserved.
|
|||
// ==========================================================================
|
|||
|
|||
using System.Collections.Generic; |
|||
|
|||
namespace Squidex.Core |
|||
{ |
|||
public interface IFieldPartitioning : IReadOnlyCollection<IFieldPartitionItem> |
|||
{ |
|||
IFieldPartitionItem Master { get; } |
|||
|
|||
bool TryGetItem(string key, out IFieldPartitionItem item); |
|||
} |
|||
} |
|||
@ -0,0 +1,65 @@ |
|||
// ==========================================================================
|
|||
// InvariantPartitioning.cs
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex Group
|
|||
// All rights reserved.
|
|||
// ==========================================================================
|
|||
|
|||
using System; |
|||
using System.Collections; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
|
|||
namespace Squidex.Core |
|||
{ |
|||
public sealed class InvariantPartitioning : IFieldPartitioning |
|||
{ |
|||
public static readonly InvariantPartitioning Instance = new InvariantPartitioning(); |
|||
|
|||
private readonly InvariantItem invariantItem = new InvariantItem(); |
|||
|
|||
private sealed class InvariantItem : IFieldPartitionItem |
|||
{ |
|||
public string Key { get; } = "iv"; |
|||
public string Name { get; } = "Invariant"; |
|||
|
|||
public bool IsOptional { get; } = false; |
|||
|
|||
public IEnumerable<string> Fallback { get; } = Enumerable.Empty<string>(); |
|||
} |
|||
|
|||
public int Count |
|||
{ |
|||
get { return 1; } |
|||
} |
|||
|
|||
public IFieldPartitionItem Master |
|||
{ |
|||
get { return invariantItem; } |
|||
} |
|||
|
|||
private InvariantPartitioning() |
|||
{ |
|||
} |
|||
|
|||
public bool TryGetItem(string key, out IFieldPartitionItem item) |
|||
{ |
|||
var isFound = string.Equals(key, "iv", StringComparison.OrdinalIgnoreCase); |
|||
|
|||
item = isFound ? invariantItem : null; |
|||
|
|||
return isFound; |
|||
} |
|||
|
|||
IEnumerator<IFieldPartitionItem> IEnumerable<IFieldPartitionItem>.GetEnumerator() |
|||
{ |
|||
yield return invariantItem; |
|||
} |
|||
|
|||
IEnumerator IEnumerable.GetEnumerator() |
|||
{ |
|||
yield return invariantItem; |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,45 @@ |
|||
// ==========================================================================
|
|||
// Partitioning.cs
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex Group
|
|||
// All rights reserved.
|
|||
// ==========================================================================
|
|||
|
|||
using System; |
|||
using Squidex.Infrastructure; |
|||
|
|||
namespace Squidex.Core |
|||
{ |
|||
public delegate IFieldPartitioning PartitionResolver(Partitioning key); |
|||
|
|||
public sealed class Partitioning : IEquatable<Partitioning> |
|||
{ |
|||
public static readonly Partitioning Invariant = new Partitioning("invariant"); |
|||
public static readonly Partitioning Language = new Partitioning("language"); |
|||
|
|||
public string Key { get; } |
|||
|
|||
public Partitioning(string key) |
|||
{ |
|||
Guard.NotNullOrEmpty(key, nameof(key)); |
|||
|
|||
Key = key; |
|||
} |
|||
|
|||
public override bool Equals(object obj) |
|||
{ |
|||
return Equals(obj as Partitioning); |
|||
} |
|||
|
|||
public bool Equals(Partitioning other) |
|||
{ |
|||
return string.Equals(other?.Key, Key, StringComparison.OrdinalIgnoreCase); |
|||
} |
|||
|
|||
public override int GetHashCode() |
|||
{ |
|||
return Key.GetHashCode(); |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue