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