diff --git a/src/Squidex/Controllers/Api/Schemas/Models/BooleanFieldPropertiesDto.cs b/src/Squidex/Controllers/Api/Schemas/Models/BooleanFieldPropertiesDto.cs new file mode 100644 index 000000000..bb830876f --- /dev/null +++ b/src/Squidex/Controllers/Api/Schemas/Models/BooleanFieldPropertiesDto.cs @@ -0,0 +1,38 @@ +// ========================================================================== +// BooleanFieldPropertiesDto.cs +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex Group +// All rights reserved. +// ========================================================================== + +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using NJsonSchema.Annotations; +using Squidex.Core.Schemas; +using Squidex.Infrastructure.Reflection; + +namespace Squidex.Controllers.Api.Schemas.Models +{ + [JsonSchema("boolean")] + public sealed class BooleanFieldPropertiesDto : FieldPropertiesDto + { + /// + /// The default value for the field value. + /// + public bool? DefaultValue { get; set; } + + /// + /// The editor that is used to manage this field. + /// + [JsonConverter(typeof(StringEnumConverter))] + public BooleanFieldEditor Editor { get; set; } + + public override FieldProperties ToProperties() + { + var result = SimpleMapper.Map(this, new BooleanFieldProperties()); + + return result; + } + } +} diff --git a/src/Squidex/Controllers/Api/Schemas/Models/Converters/SchemaConverter.cs b/src/Squidex/Controllers/Api/Schemas/Models/Converters/SchemaConverter.cs index 4259f8a45..e5f460951 100644 --- a/src/Squidex/Controllers/Api/Schemas/Models/Converters/SchemaConverter.cs +++ b/src/Squidex/Controllers/Api/Schemas/Models/Converters/SchemaConverter.cs @@ -26,6 +26,10 @@ namespace Squidex.Controllers.Api.Schemas.Models.Converters { typeof(StringFieldProperties), p => Convert((StringFieldProperties)p) + }, + { + typeof(BooleanFieldProperties), + p => Convert((BooleanFieldProperties)p) } }; @@ -52,6 +56,13 @@ namespace Squidex.Controllers.Api.Schemas.Models.Converters return dto; } + private static FieldPropertiesDto Convert(BooleanFieldProperties source) + { + var result = SimpleMapper.Map(source, new BooleanFieldPropertiesDto()); + + return result; + } + private static FieldPropertiesDto Convert(StringFieldProperties source) { var result = SimpleMapper.Map(source, new StringFieldPropertiesDto()); diff --git a/src/Squidex/Controllers/Api/Schemas/Models/SchemaDetailsDto.cs b/src/Squidex/Controllers/Api/Schemas/Models/SchemaDetailsDto.cs index c7d641469..d86da7dd5 100644 --- a/src/Squidex/Controllers/Api/Schemas/Models/SchemaDetailsDto.cs +++ b/src/Squidex/Controllers/Api/Schemas/Models/SchemaDetailsDto.cs @@ -27,6 +27,11 @@ namespace Squidex.Controllers.Api.Schemas.Models [RegularExpression("^[a-z0-9]+(\\-[a-z0-9]+)*$")] public string Name { get; set; } + /// + /// Indicates if the schema is published. + /// + public bool IsPublished { get; set; } + /// /// The list of fields. /// diff --git a/src/Squidex/Controllers/Api/Schemas/Models/SchemaDto.cs b/src/Squidex/Controllers/Api/Schemas/Models/SchemaDto.cs index 6f45c75c4..4204b31ec 100644 --- a/src/Squidex/Controllers/Api/Schemas/Models/SchemaDto.cs +++ b/src/Squidex/Controllers/Api/Schemas/Models/SchemaDto.cs @@ -26,6 +26,11 @@ namespace Squidex.Controllers.Api.Schemas.Models [RegularExpression("^[a-z0-9]+(\\-[a-z0-9]+)*$")] public string Name { get; set; } + /// + /// Indicates if the schema is published. + /// + public bool IsPublished { get; set; } + /// /// The user that has created the schema. /// diff --git a/src/Squidex/Controllers/Api/Schemas/SchemasController.cs b/src/Squidex/Controllers/Api/Schemas/SchemasController.cs index 8f8a82210..287cdc875 100644 --- a/src/Squidex/Controllers/Api/Schemas/SchemasController.cs +++ b/src/Squidex/Controllers/Api/Schemas/SchemasController.cs @@ -126,6 +126,42 @@ namespace Squidex.Controllers.Api.Schemas return NoContent(); } + /// + /// Publishs a schema. + /// + /// The app where the schema is a part of. + /// The name of the schema to publish. + /// + /// 400 => Schema is already published. + /// 204 => Schema has been deleted. + /// + [HttpPut] + [Route("apps/{app}/schemas/{name}/publish")] + public async Task PublishSchema(string app, string name) + { + await CommandBus.PublishAsync(new PublishSchema()); + + return NoContent(); + } + + /// + /// Unpublishs a schema. + /// + /// The app where the schema is a part of. + /// The name of the schema to unpublish. + /// + /// 400 => Schema is not published. + /// 204 => Schema has been deleted. + /// + [HttpPut] + [Route("apps/{app}/schemas/{name}/publish")] + public async Task UnpublishSchema(string app, string name) + { + await CommandBus.PublishAsync(new UnpublishSchema()); + + return NoContent(); + } + /// /// Delete a schema. ///