459 lines
14 KiB
C#
459 lines
14 KiB
C#
using System;
|
|
using Microsoft.EntityFrameworkCore.Migrations;
|
|
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
|
|
|
#nullable disable
|
|
|
|
namespace Shadow.Migrations
|
|
{
|
|
/// <inheritdoc />
|
|
public partial class InitialMigration : Migration
|
|
{
|
|
/// <inheritdoc />
|
|
protected override void Up(MigrationBuilder migrationBuilder)
|
|
{
|
|
migrationBuilder.CreateTable(
|
|
name: "Artists",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "integer", nullable: false)
|
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
Name = table.Column<string>(type: "text", nullable: false),
|
|
NormalizedName = table.Column<string>(type: "text", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Artists", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Genres",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "integer", nullable: false)
|
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
Name = table.Column<string>(type: "text", nullable: false),
|
|
NormalizedName = table.Column<string>(type: "text", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Genres", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Users",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "integer", nullable: false)
|
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
Name = table.Column<string>(type: "text", nullable: false),
|
|
NormalizedName = table.Column<string>(type: "text", nullable: false),
|
|
Password = table.Column<string>(type: "text", nullable: false),
|
|
Role = table.Column<int>(type: "integer", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Users", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Albums",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "integer", nullable: false)
|
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
Name = table.Column<string>(type: "text", nullable: false),
|
|
Uri = table.Column<string>(type: "text", nullable: false),
|
|
State = table.Column<int>(type: "integer", nullable: false),
|
|
ArtistId = table.Column<int>(type: "integer", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Albums", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Albums_Artists_ArtistId",
|
|
column: x => x.ArtistId,
|
|
principalTable: "Artists",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Playlists",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "integer", nullable: false)
|
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
Name = table.Column<string>(type: "text", nullable: false),
|
|
Uri = table.Column<string>(type: "text", nullable: false),
|
|
Description = table.Column<string>(type: "text", nullable: false),
|
|
CreatorId = table.Column<int>(type: "integer", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Playlists", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Playlists_Users_CreatorId",
|
|
column: x => x.CreatorId,
|
|
principalTable: "Users",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Radios",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "integer", nullable: false)
|
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
Name = table.Column<string>(type: "text", nullable: false),
|
|
NormalizedName = table.Column<string>(type: "text", nullable: false),
|
|
Homepage = table.Column<string>(type: "text", nullable: true),
|
|
Url = table.Column<string>(type: "text", nullable: false),
|
|
UserId = table.Column<int>(type: "integer", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Radios", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Radios_Users_UserId",
|
|
column: x => x.UserId,
|
|
principalTable: "Users",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "AlbumInteractions",
|
|
columns: table => new
|
|
{
|
|
AlbumId = table.Column<int>(type: "integer", nullable: false),
|
|
UserId = table.Column<int>(type: "integer", nullable: false),
|
|
Id = table.Column<int>(type: "integer", nullable: false),
|
|
PlayDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
|
Starred = table.Column<bool>(type: "boolean", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_AlbumInteractions", x => new { x.AlbumId, x.UserId });
|
|
table.ForeignKey(
|
|
name: "FK_AlbumInteractions_Albums_AlbumId",
|
|
column: x => x.AlbumId,
|
|
principalTable: "Albums",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_AlbumInteractions_Users_UserId",
|
|
column: x => x.UserId,
|
|
principalTable: "Users",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Songs",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "integer", nullable: false)
|
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
Title = table.Column<string>(type: "text", nullable: false),
|
|
Uri = table.Column<string>(type: "text", nullable: false),
|
|
Filepath = table.Column<string>(type: "text", nullable: false),
|
|
State = table.Column<int>(type: "integer", nullable: false),
|
|
Filetype = table.Column<string>(type: "text", nullable: false),
|
|
Date = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
|
Duration = table.Column<int>(type: "integer", nullable: false),
|
|
Bitrate = table.Column<int>(type: "integer", nullable: false),
|
|
Size = table.Column<int>(type: "integer", nullable: false),
|
|
Comment = table.Column<string>(type: "text", nullable: true),
|
|
Channels = table.Column<int>(type: "integer", nullable: false),
|
|
SamplingRate = table.Column<int>(type: "integer", nullable: false),
|
|
BitDepth = table.Column<int>(type: "integer", nullable: true),
|
|
Index = table.Column<int>(type: "integer", nullable: false),
|
|
TrackNumber = table.Column<int>(type: "integer", nullable: true),
|
|
DiscNumber = table.Column<int>(type: "integer", nullable: true),
|
|
AlbumId = table.Column<int>(type: "integer", nullable: false),
|
|
ArtistId = table.Column<int>(type: "integer", nullable: false),
|
|
ImageId = table.Column<int>(type: "integer", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Songs", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Songs_Albums_AlbumId",
|
|
column: x => x.AlbumId,
|
|
principalTable: "Albums",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_Songs_Artists_ArtistId",
|
|
column: x => x.ArtistId,
|
|
principalTable: "Artists",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "PlaylistUsers",
|
|
columns: table => new
|
|
{
|
|
PlaylistId = table.Column<int>(type: "integer", nullable: false),
|
|
UserId = table.Column<int>(type: "integer", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_PlaylistUsers", x => new { x.PlaylistId, x.UserId });
|
|
table.ForeignKey(
|
|
name: "FK_PlaylistUsers_Playlists_PlaylistId",
|
|
column: x => x.PlaylistId,
|
|
principalTable: "Playlists",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_PlaylistUsers_Users_UserId",
|
|
column: x => x.UserId,
|
|
principalTable: "Users",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "GenreSongs",
|
|
columns: table => new
|
|
{
|
|
GenreId = table.Column<int>(type: "integer", nullable: false),
|
|
SongId = table.Column<int>(type: "integer", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_GenreSongs", x => new { x.GenreId, x.SongId });
|
|
table.ForeignKey(
|
|
name: "FK_GenreSongs_Genres_GenreId",
|
|
column: x => x.GenreId,
|
|
principalTable: "Genres",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_GenreSongs_Songs_SongId",
|
|
column: x => x.SongId,
|
|
principalTable: "Songs",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Images",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "integer", nullable: false)
|
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
Uri = table.Column<string>(type: "text", nullable: false),
|
|
State = table.Column<int>(type: "integer", nullable: false),
|
|
SongId = table.Column<int>(type: "integer", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Images", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Images_Songs_SongId",
|
|
column: x => x.SongId,
|
|
principalTable: "Songs",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "PlaylistSongs",
|
|
columns: table => new
|
|
{
|
|
PlaylistId = table.Column<int>(type: "integer", nullable: false),
|
|
SongId = table.Column<int>(type: "integer", nullable: false),
|
|
Index = table.Column<int>(type: "integer", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_PlaylistSongs", x => new { x.PlaylistId, x.SongId });
|
|
table.ForeignKey(
|
|
name: "FK_PlaylistSongs_Playlists_PlaylistId",
|
|
column: x => x.PlaylistId,
|
|
principalTable: "Playlists",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_PlaylistSongs_Songs_SongId",
|
|
column: x => x.SongId,
|
|
principalTable: "Songs",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "SongInteractions",
|
|
columns: table => new
|
|
{
|
|
SongId = table.Column<int>(type: "integer", nullable: false),
|
|
UserId = table.Column<int>(type: "integer", nullable: false),
|
|
Id = table.Column<int>(type: "integer", nullable: false),
|
|
PlayCount = table.Column<int>(type: "integer", nullable: false),
|
|
Starred = table.Column<bool>(type: "boolean", nullable: true),
|
|
Rating = table.Column<int>(type: "integer", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_SongInteractions", x => new { x.SongId, x.UserId });
|
|
table.ForeignKey(
|
|
name: "FK_SongInteractions_Songs_SongId",
|
|
column: x => x.SongId,
|
|
principalTable: "Songs",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_SongInteractions_Users_UserId",
|
|
column: x => x.UserId,
|
|
principalTable: "Users",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_AlbumInteractions_UserId",
|
|
table: "AlbumInteractions",
|
|
column: "UserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Albums_ArtistId",
|
|
table: "Albums",
|
|
column: "ArtistId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Albums_Uri",
|
|
table: "Albums",
|
|
column: "Uri",
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Artists_NormalizedName",
|
|
table: "Artists",
|
|
column: "NormalizedName",
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Genres_NormalizedName",
|
|
table: "Genres",
|
|
column: "NormalizedName",
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_GenreSongs_SongId",
|
|
table: "GenreSongs",
|
|
column: "SongId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Images_SongId",
|
|
table: "Images",
|
|
column: "SongId",
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Playlists_CreatorId",
|
|
table: "Playlists",
|
|
column: "CreatorId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Playlists_Uri",
|
|
table: "Playlists",
|
|
column: "Uri",
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_PlaylistSongs_SongId",
|
|
table: "PlaylistSongs",
|
|
column: "SongId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_PlaylistUsers_UserId",
|
|
table: "PlaylistUsers",
|
|
column: "UserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Radios_NormalizedName",
|
|
table: "Radios",
|
|
column: "NormalizedName",
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Radios_UserId",
|
|
table: "Radios",
|
|
column: "UserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_SongInteractions_UserId",
|
|
table: "SongInteractions",
|
|
column: "UserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Songs_AlbumId",
|
|
table: "Songs",
|
|
column: "AlbumId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Songs_ArtistId",
|
|
table: "Songs",
|
|
column: "ArtistId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Songs_Uri",
|
|
table: "Songs",
|
|
column: "Uri",
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Users_Name",
|
|
table: "Users",
|
|
column: "Name",
|
|
unique: true);
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
protected override void Down(MigrationBuilder migrationBuilder)
|
|
{
|
|
migrationBuilder.DropTable(
|
|
name: "AlbumInteractions");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "GenreSongs");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Images");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "PlaylistSongs");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "PlaylistUsers");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Radios");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "SongInteractions");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Genres");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Playlists");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Songs");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Users");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Albums");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Artists");
|
|
}
|
|
}
|
|
}
|