using System;
using Microsoft.EntityFrameworkCore.Migrations;

#nullable disable

namespace ConfectioneryDatabaseImplement.Migrations
{
	/// <inheritdoc />
	public partial class InitialCreate : Migration
	{
		/// <inheritdoc />
		protected override void Up(MigrationBuilder migrationBuilder)
		{
			migrationBuilder.CreateTable(
				name: "Components",
				columns: table => new
				{
					Id = table.Column<int>(type: "int", nullable: false)
						.Annotation("SqlServer:Identity", "1, 1"),
					ComponentName = table.Column<string>(type: "nvarchar(max)", nullable: false),
					Cost = table.Column<double>(type: "float", nullable: false)
				},
				constraints: table =>
				{
					table.PrimaryKey("PK_Components", x => x.Id);
				});

			migrationBuilder.CreateTable(
				name: "Pastries",
				columns: table => new
				{
					Id = table.Column<int>(type: "int", nullable: false)
						.Annotation("SqlServer:Identity", "1, 1"),
					PastryName = table.Column<string>(type: "nvarchar(max)", nullable: false),
					Price = table.Column<double>(type: "float", nullable: false)
				},
				constraints: table =>
				{
					table.PrimaryKey("PK_Pastries", x => x.Id);
				});

			migrationBuilder.CreateTable(
				name: "Orders",
				columns: table => new
				{
					Id = table.Column<int>(type: "int", nullable: false)
						.Annotation("SqlServer:Identity", "1, 1"),
					PastryId = table.Column<int>(type: "int", nullable: false),
					Count = table.Column<int>(type: "int", nullable: false),
					Sum = table.Column<double>(type: "float", nullable: false),
					Status = table.Column<int>(type: "int", nullable: false),
					DateCreate = table.Column<DateTime>(type: "datetime2", nullable: false),
					DateImplement = table.Column<DateTime>(type: "datetime2", nullable: true)
				},
				constraints: table =>
				{
					table.PrimaryKey("PK_Orders", x => x.Id);
					table.ForeignKey(
						name: "FK_Orders_Pastries_PastryId",
						column: x => x.PastryId,
						principalTable: "Pastries",
						principalColumn: "Id",
						onDelete: ReferentialAction.Cascade);
				});

			migrationBuilder.CreateTable(
				name: "PastryComponents",
				columns: table => new
				{
					Id = table.Column<int>(type: "int", nullable: false)
						.Annotation("SqlServer:Identity", "1, 1"),
					PastryId = table.Column<int>(type: "int", nullable: false),
					ComponentId = table.Column<int>(type: "int", nullable: false),
					Count = table.Column<int>(type: "int", nullable: false)
				},
				constraints: table =>
				{
					table.PrimaryKey("PK_PastryComponents", x => x.Id);
					table.ForeignKey(
						name: "FK_PastryComponents_Components_ComponentId",
						column: x => x.ComponentId,
						principalTable: "Components",
						principalColumn: "Id",
						onDelete: ReferentialAction.Cascade);
					table.ForeignKey(
						name: "FK_PastryComponents_Pastries_PastryId",
						column: x => x.PastryId,
						principalTable: "Pastries",
						principalColumn: "Id",
						onDelete: ReferentialAction.Cascade);
				});

			migrationBuilder.CreateIndex(
				name: "IX_Orders_PastryId",
				table: "Orders",
				column: "PastryId");

			migrationBuilder.CreateIndex(
				name: "IX_PastryComponents_ComponentId",
				table: "PastryComponents",
				column: "ComponentId");

			migrationBuilder.CreateIndex(
				name: "IX_PastryComponents_PastryId",
				table: "PastryComponents",
				column: "PastryId");
		}

		/// <inheritdoc />
		protected override void Down(MigrationBuilder migrationBuilder)
		{
			migrationBuilder.DropTable(
				name: "Orders");

			migrationBuilder.DropTable(
				name: "PastryComponents");

			migrationBuilder.DropTable(
				name: "Components");

			migrationBuilder.DropTable(
				name: "Pastries");
		}
	}
}