mirror of https://github.com/Squidex/squidex.git
Browse Source
* use UpsertSchemaFieldBase in FieldBuilder * ArrayFieldBuilder implementation * formating * Refactoring Builders (CRTP) * Formating property * Update ArrayFieldBuilder.cspull/712/head
committed by
GitHub
11 changed files with 170 additions and 44 deletions
@ -0,0 +1,110 @@ |
|||
// ==========================================================================
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex UG (haftungsbeschraenkt)
|
|||
// All rights reserved. Licensed under the MIT license.
|
|||
// ==========================================================================
|
|||
|
|||
using System; |
|||
using System.Linq; |
|||
using Squidex.Domain.Apps.Core.Schemas; |
|||
using Squidex.Domain.Apps.Entities.Schemas.Commands; |
|||
using Squidex.Text; |
|||
|
|||
namespace Squidex.Domain.Apps.Entities.Apps.Templates.Builders |
|||
{ |
|||
public class ArrayFieldBuilder : FieldBuilder<ArrayFieldBuilder> |
|||
{ |
|||
protected new UpsertSchemaField field |
|||
{ |
|||
get => base.Field as UpsertSchemaField; |
|||
init => base.Field = value; |
|||
} |
|||
|
|||
public ArrayFieldBuilder(UpsertSchemaField field, CreateSchema schema) |
|||
: base(field, schema) |
|||
{ |
|||
} |
|||
|
|||
public ArrayFieldBuilder AddAssets(string name, Action<AssetFieldBuilder> configure) |
|||
{ |
|||
var field = AddField<AssetsFieldProperties>(name); |
|||
|
|||
configure(new AssetFieldBuilder(field, Schema)); |
|||
|
|||
return this; |
|||
} |
|||
|
|||
public ArrayFieldBuilder AddBoolean(string name, Action<BooleanFieldBuilder> configure) |
|||
{ |
|||
var field = AddField<BooleanFieldProperties>(name); |
|||
|
|||
configure(new BooleanFieldBuilder(field, Schema)); |
|||
|
|||
return this; |
|||
} |
|||
|
|||
public ArrayFieldBuilder AddDateTime(string name, Action<DateTimeFieldBuilder> configure) |
|||
{ |
|||
var field = AddField<DateTimeFieldProperties>(name); |
|||
|
|||
configure(new DateTimeFieldBuilder(field, Schema)); |
|||
|
|||
return this; |
|||
} |
|||
|
|||
public ArrayFieldBuilder AddJson(string name, Action<JsonFieldBuilder> configure) |
|||
{ |
|||
var field = AddField<JsonFieldProperties>(name); |
|||
|
|||
configure(new JsonFieldBuilder(field, Schema)); |
|||
|
|||
return this; |
|||
} |
|||
|
|||
public ArrayFieldBuilder AddNumber(string name, Action<NumberFieldBuilder> configure) |
|||
{ |
|||
var field = AddField<NumberFieldProperties>(name); |
|||
|
|||
configure(new NumberFieldBuilder(field, Schema)); |
|||
|
|||
return this; |
|||
} |
|||
|
|||
public ArrayFieldBuilder AddReferences(string name, Action<ReferencesFieldBuilder> configure) |
|||
{ |
|||
var field = AddField<ReferencesFieldProperties>(name); |
|||
|
|||
configure(new ReferencesFieldBuilder(field, Schema)); |
|||
|
|||
return this; |
|||
} |
|||
|
|||
public ArrayFieldBuilder AddString(string name, Action<StringFieldBuilder> configure) |
|||
{ |
|||
var field = AddField<StringFieldProperties>(name); |
|||
|
|||
configure(new StringFieldBuilder(field, Schema)); |
|||
|
|||
return this; |
|||
} |
|||
|
|||
private UpsertSchemaNestedField AddField<T>(string name) where T : FieldProperties, new() |
|||
{ |
|||
var nestedField = new UpsertSchemaNestedField |
|||
{ |
|||
Name = name.ToCamelCase(), |
|||
Properties = new T |
|||
{ |
|||
Label = name |
|||
} |
|||
}; |
|||
|
|||
field.Nested ??= Array.Empty<UpsertSchemaNestedField>(); |
|||
field.Nested = field.Nested.Union(new[] { nestedField }).ToArray(); |
|||
|
|||
return nestedField; |
|||
} |
|||
|
|||
} |
|||
} |
|||
Loading…
Reference in new issue