using System; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace MoonlightServers.ApiServer.Database.Migrations { /// public partial class AddedBaseModels : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.EnsureSchema( name: "Servers"); migrationBuilder.AlterDatabase() .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Nodes", schema: "Servers", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Name = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Fqdn = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Token = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), HttpPort = table.Column(type: "int", nullable: false), FtpPort = table.Column(type: "int", nullable: false), EnableTransparentMode = table.Column(type: "tinyint(1)", nullable: false), EnableDynamicFirewall = table.Column(type: "tinyint(1)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Nodes", x => x.Id); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "ServerBackups", schema: "Servers", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), CreatedAt = table.Column(type: "datetime(6)", nullable: false), CompletedAt = table.Column(type: "datetime(6)", nullable: false), Size = table.Column(type: "bigint", nullable: false), Successful = table.Column(type: "tinyint(1)", nullable: false), Completed = table.Column(type: "tinyint(1)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_ServerBackups", x => x.Id); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Stars", schema: "Servers", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Name = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Author = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), UpdateUrl = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), DonateUrl = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), StartupCommand = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), StopCommand = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), OnlineDetection = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), InstallShell = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), InstallDockerImage = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), InstallScript = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), RequiredAllocations = table.Column(type: "int", nullable: false), AllowDockerImageChange = table.Column(type: "tinyint(1)", nullable: false), ParseConfiguration = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4") }, constraints: table => { table.PrimaryKey("PK_Stars", x => x.Id); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Servers", schema: "Servers", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), StarId = table.Column(type: "int", nullable: false), NodeId = table.Column(type: "int", nullable: false), Name = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), OwnerId = table.Column(type: "int", nullable: false), StartupOverride = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), DockerImageIndex = table.Column(type: "int", nullable: false), Cpu = table.Column(type: "int", nullable: false), Memory = table.Column(type: "int", nullable: false), Disk = table.Column(type: "int", nullable: false), UseVirtualDisk = table.Column(type: "tinyint(1)", nullable: false), Bandwidth = table.Column(type: "int", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Servers", x => x.Id); table.ForeignKey( name: "FK_Servers_Nodes_NodeId", column: x => x.NodeId, principalSchema: "Servers", principalTable: "Nodes", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_Servers_Stars_StarId", column: x => x.StarId, principalSchema: "Servers", principalTable: "Stars", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "StarDockerImages", schema: "Servers", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), StarId = table.Column(type: "int", nullable: false), DisplayName = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Identifier = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), AutoPulling = table.Column(type: "tinyint(1)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_StarDockerImages", x => x.Id); table.ForeignKey( name: "FK_StarDockerImages_Stars_StarId", column: x => x.StarId, principalSchema: "Servers", principalTable: "Stars", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "StarVariables", schema: "Servers", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), StarId = table.Column(type: "int", nullable: false), Name = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Description = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Key = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), DefaultValue = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), AllowViewing = table.Column(type: "tinyint(1)", nullable: false), AllowEditing = table.Column(type: "tinyint(1)", nullable: false), Type = table.Column(type: "int", nullable: false), Filter = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4") }, constraints: table => { table.PrimaryKey("PK_StarVariables", x => x.Id); table.ForeignKey( name: "FK_StarVariables_Stars_StarId", column: x => x.StarId, principalSchema: "Servers", principalTable: "Stars", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Allocations", schema: "Servers", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), NodeId = table.Column(type: "int", nullable: false), ServerId = table.Column(type: "int", nullable: true), IpAddress = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Port = table.Column(type: "int", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Allocations", x => x.Id); table.ForeignKey( name: "FK_Allocations_Nodes_NodeId", column: x => x.NodeId, principalSchema: "Servers", principalTable: "Nodes", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_Allocations_Servers_ServerId", column: x => x.ServerId, principalSchema: "Servers", principalTable: "Servers", principalColumn: "Id"); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "ServerVariables", schema: "Servers", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), ServerId = table.Column(type: "int", nullable: false), Key = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Value = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4") }, constraints: table => { table.PrimaryKey("PK_ServerVariables", x => x.Id); table.ForeignKey( name: "FK_ServerVariables_Servers_ServerId", column: x => x.ServerId, principalSchema: "Servers", principalTable: "Servers", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateIndex( name: "IX_Allocations_NodeId", schema: "Servers", table: "Allocations", column: "NodeId"); migrationBuilder.CreateIndex( name: "IX_Allocations_ServerId", schema: "Servers", table: "Allocations", column: "ServerId"); migrationBuilder.CreateIndex( name: "IX_Servers_NodeId", schema: "Servers", table: "Servers", column: "NodeId"); migrationBuilder.CreateIndex( name: "IX_Servers_StarId", schema: "Servers", table: "Servers", column: "StarId"); migrationBuilder.CreateIndex( name: "IX_ServerVariables_ServerId", schema: "Servers", table: "ServerVariables", column: "ServerId"); migrationBuilder.CreateIndex( name: "IX_StarDockerImages_StarId", schema: "Servers", table: "StarDockerImages", column: "StarId"); migrationBuilder.CreateIndex( name: "IX_StarVariables_StarId", schema: "Servers", table: "StarVariables", column: "StarId"); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "Allocations", schema: "Servers"); migrationBuilder.DropTable( name: "ServerBackups", schema: "Servers"); migrationBuilder.DropTable( name: "ServerVariables", schema: "Servers"); migrationBuilder.DropTable( name: "StarDockerImages", schema: "Servers"); migrationBuilder.DropTable( name: "StarVariables", schema: "Servers"); migrationBuilder.DropTable( name: "Servers", schema: "Servers"); migrationBuilder.DropTable( name: "Nodes", schema: "Servers"); migrationBuilder.DropTable( name: "Stars", schema: "Servers"); } } }