示例#1
0
        public OperationsBuilder Shared()
        {
            var dataSchema = RegisterReference("DataDto", _ =>
            {
                return(JsonSchema.CreateAnySchema());
            });

            var contentSchema = RegisterReference("ContentDto", _ =>
            {
                return(ContentJsonSchemaBuilder.BuildSchema(dataSchema, true));
            });

            var contentsSchema = RegisterReference("ContentResultDto", _ =>
            {
                return(BuildResult(contentSchema));
            });

            var path = $"/content/{AppName}";

            var builder = new OperationsBuilder
            {
                ContentSchema     = contentSchema,
                ContentsSchema    = contentsSchema,
                DataSchema        = dataSchema,
                Path              = path,
                Parent            = this,
                SchemaDisplayName = "__Shared",
                SchemaName        = "__Shared",
                SchemaTypeName    = "__Shared"
            };

            builder.AddTag("API endpoints for operations across all schemas.");

            return(builder);
        }
示例#2
0
        public OperationsBuilder Shared()
        {
            var dataSchema = ResolveSchema("DataDto", () =>
            {
                return(JsonSchema.CreateAnySchema());
            });

            var contentSchema = ResolveSchema($"ContentDto", () =>
            {
                return(ContentJsonSchemaBuilder.BuildSchema("Shared", dataSchema, true));
            });

            var path = $"/content/{AppName}";

            var builder = new OperationsBuilder
            {
                ContentSchema     = contentSchema,
                DataSchema        = dataSchema,
                Path              = path,
                Parent            = this,
                SchemaDisplayName = "__Shared",
                SchemaName        = "__Shared",
                SchemaTypeName    = "__Shared",
            };

            var description = "API endpoints for operations across all schemas.";

            Document.Tags.Add(new OpenApiTag {
                Name = "__Shared", Description = description
            });

            return(builder);
        }
        private static JsonSchema BuildJsonSchema(Schema schema, IAppEntity app,
                                                  ResolvedComponents components, bool withHiddenFields)
        {
            var dataSchema = schema.BuildJsonSchema(app.PartitionResolver(), components, null, withHiddenFields);

            return(ContentJsonSchemaBuilder.BuildSchema(dataSchema, false, true));
        }
示例#4
0
        public OperationsBuilder Schema(Schema schema, bool flat)
        {
            var typeName = schema.TypeName();

            var displayName = schema.DisplayName();

            var dataSchema = ResolveSchema($"{typeName}DataDto", () =>
            {
                return(schema.BuildDynamicJsonSchema(ResolveSchema));
            });

            var contentSchema = ResolveSchema($"{typeName}ContentDto", () =>
            {
                var contentDataSchema = dataSchema;

                if (flat)
                {
                    contentDataSchema = ResolveSchema($"{typeName}FlatDataDto", () =>
                    {
                        return(schema.BuildFlatJsonSchema(ResolveSchema));
                    });
                }

                return(ContentJsonSchemaBuilder.BuildSchema(displayName, contentDataSchema, true));
            });

            var contentsSchema = ResolveSchema($"{typeName}ContentResultDto", () =>
            {
                return(BuildResult(contentSchema));
            });

            var path = $"/content/{AppName}/{schema.Name}";

            var builder = new OperationsBuilder
            {
                ContentSchema     = contentSchema,
                ContentsSchema    = contentsSchema,
                DataSchema        = dataSchema,
                Path              = path,
                Parent            = this,
                SchemaDisplayName = displayName,
                SchemaName        = schema.Name,
                SchemaTypeName    = typeName
            };

            var description = builder.FormatText("API endpoints for schema content items.");

            Document.Tags.Add(new OpenApiTag {
                Name = displayName, Description = description
            });

            return(builder);
        }
示例#5
0
        public OperationsBuilder Schema(Schema schema, PartitionResolver partitionResolver, ResolvedComponents components, bool flat)
        {
            var typeName = schema.TypeName();

            var dataSchema = RegisterReference($"{typeName}DataDto", _ =>
            {
                return(schema.BuildJsonSchemaDynamic(partitionResolver, components, CreateReference, false, true));
            });

            var flatDataSchema = RegisterReference($"{typeName}FlatDataDto", _ =>
            {
                return(schema.BuildJsonSchemaFlat(partitionResolver, components, CreateReference, false, true));
            });

            var contentSchema = RegisterReference($"{typeName}ContentDto", _ =>
            {
                return(ContentJsonSchemaBuilder.BuildSchema(flat ? flatDataSchema : dataSchema, true));
            });

            var contentsSchema = RegisterReference($"{typeName}ContentResultDto", _ =>
            {
                return(BuildResult(contentSchema));
            });

            var path = $"/content/{AppName}/{schema.Name}";

            var builder = new OperationsBuilder
            {
                ContentSchema     = contentSchema,
                ContentsSchema    = contentsSchema,
                DataSchema        = dataSchema,
                Path              = path,
                Parent            = this,
                SchemaDisplayName = schema.DisplayName(),
                SchemaName        = schema.Name,
                SchemaTypeName    = typeName
            };

            builder.AddTag("API endpoints for [schema] content items.");

            return(builder);
        }
示例#6
0
        private static JsonSchema BuildJsonSchema(Schema schema, IAppEntity app, bool withHiddenFields)
        {
            var dataSchema = schema.BuildJsonSchema(app.PartitionResolver(), withHiddenFields);

            return(ContentJsonSchemaBuilder.BuildSchema(schema.DisplayName(), dataSchema, false, true));
        }