Files
tvnoms/src/tvnoms-server/TvNoms.Data/Migrations/20240327214813_Initial.cs
2024-03-29 01:39:15 +00:00

598 lines
27 KiB
C#

using System;
using Microsoft.EntityFrameworkCore.Migrations;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace TvNoms.Server.Data.Migrations
{
/// <inheritdoc />
public partial class Initial : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.EnsureSchema(
name: "tvnoms");
migrationBuilder.EnsureSchema(
name: "auth");
migrationBuilder.CreateTable(
name: "genres",
schema: "tvnoms",
columns: table => new
{
id = table.Column<Guid>(type: "uuid", nullable: false),
name = table.Column<string>(type: "text", nullable: false),
description = table.Column<string>(type: "text", nullable: false),
date_created = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
date_updated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_genres", x => x.id);
});
migrationBuilder.CreateTable(
name: "identity_user",
schema: "auth",
columns: table => new
{
id = table.Column<Guid>(type: "uuid", nullable: false),
user_name = table.Column<string>(type: "text", nullable: true),
normalized_user_name = table.Column<string>(type: "text", nullable: true),
email = table.Column<string>(type: "text", nullable: true),
normalized_email = table.Column<string>(type: "text", nullable: true),
email_confirmed = table.Column<bool>(type: "boolean", nullable: false),
password_hash = table.Column<string>(type: "text", nullable: true),
security_stamp = table.Column<string>(type: "text", nullable: true),
concurrency_stamp = table.Column<string>(type: "text", nullable: true),
phone_number = table.Column<string>(type: "text", nullable: true),
phone_number_confirmed = table.Column<bool>(type: "boolean", nullable: false),
two_factor_enabled = table.Column<bool>(type: "boolean", nullable: false),
lockout_end = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: true),
lockout_enabled = table.Column<bool>(type: "boolean", nullable: false),
access_failed_count = table.Column<int>(type: "integer", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_identity_user", x => x.id);
});
migrationBuilder.CreateTable(
name: "identity_user_base",
schema: "auth",
columns: table => new
{
id = table.Column<string>(type: "text", nullable: false),
user_name = table.Column<string>(type: "text", nullable: true),
normalized_user_name = table.Column<string>(type: "text", nullable: true),
email = table.Column<string>(type: "text", nullable: true),
normalized_email = table.Column<string>(type: "text", nullable: true),
email_confirmed = table.Column<bool>(type: "boolean", nullable: false),
password_hash = table.Column<string>(type: "text", nullable: true),
security_stamp = table.Column<string>(type: "text", nullable: true),
concurrency_stamp = table.Column<string>(type: "text", nullable: true),
phone_number = table.Column<string>(type: "text", nullable: true),
phone_number_confirmed = table.Column<bool>(type: "boolean", nullable: false),
two_factor_enabled = table.Column<bool>(type: "boolean", nullable: false),
lockout_end = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: true),
lockout_enabled = table.Column<bool>(type: "boolean", nullable: false),
access_failed_count = table.Column<int>(type: "integer", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_identity_user_base", x => x.id);
});
migrationBuilder.CreateTable(
name: "media",
schema: "tvnoms",
columns: table => new
{
id = table.Column<Guid>(type: "uuid", nullable: false),
name = table.Column<string>(type: "text", nullable: false),
size = table.Column<long>(type: "bigint", nullable: false),
path = table.Column<string>(type: "text", nullable: false),
content_type = table.Column<string>(type: "text", nullable: false),
type = table.Column<int>(type: "integer", nullable: false),
width = table.Column<int>(type: "integer", nullable: true),
height = table.Column<int>(type: "integer", nullable: true),
created_at = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: false),
updated_at = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: false),
date_created = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
date_updated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_media", x => x.id);
});
migrationBuilder.CreateTable(
name: "movies",
schema: "tvnoms",
columns: table => new
{
id = table.Column<Guid>(type: "uuid", nullable: false),
title = table.Column<string>(type: "text", nullable: false),
date_created = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
date_updated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_movies", x => x.id);
});
migrationBuilder.CreateTable(
name: "shows",
schema: "tvnoms",
columns: table => new
{
id = table.Column<Guid>(type: "uuid", nullable: false),
title = table.Column<string>(type: "text", nullable: false),
date_created = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
date_updated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_shows", x => x.id);
});
migrationBuilder.CreateTable(
name: "user_user_role",
schema: "auth",
columns: table => new
{
id = table.Column<Guid>(type: "uuid", nullable: false),
name = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
normalized_name = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
concurrency_stamp = table.Column<string>(type: "text", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_user_user_role", x => x.id);
});
migrationBuilder.CreateTable(
name: "user",
schema: "auth",
columns: table => new
{
id = table.Column<Guid>(type: "uuid", nullable: false),
first_name = table.Column<string>(type: "text", nullable: false),
last_name = table.Column<string>(type: "text", nullable: false),
avatar_id = table.Column<Guid>(type: "uuid", nullable: true),
bio = table.Column<string>(type: "text", nullable: true),
location = table.Column<string>(type: "text", nullable: true),
active = table.Column<bool>(type: "boolean", nullable: false),
last_active_at = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: false),
email_required = table.Column<bool>(type: "boolean", nullable: false),
phone_number_required = table.Column<bool>(type: "boolean", nullable: false),
user_name = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
normalized_user_name = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
email = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
normalized_email = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
email_confirmed = table.Column<bool>(type: "boolean", nullable: false),
password_hash = table.Column<string>(type: "text", nullable: true),
security_stamp = table.Column<string>(type: "text", nullable: true),
concurrency_stamp = table.Column<string>(type: "text", nullable: true),
phone_number = table.Column<string>(type: "text", nullable: true),
phone_number_confirmed = table.Column<bool>(type: "boolean", nullable: false),
two_factor_enabled = table.Column<bool>(type: "boolean", nullable: false),
lockout_end = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: true),
lockout_enabled = table.Column<bool>(type: "boolean", nullable: false),
access_failed_count = table.Column<int>(type: "integer", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_user", x => x.id);
table.ForeignKey(
name: "fk_user_media_avatar_id",
column: x => x.avatar_id,
principalSchema: "tvnoms",
principalTable: "media",
principalColumn: "id");
});
migrationBuilder.CreateTable(
name: "__movie_genres",
schema: "tvnoms",
columns: table => new
{
genres_id = table.Column<Guid>(type: "uuid", nullable: false),
movie_id = table.Column<Guid>(type: "uuid", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk___movie_genres", x => new { x.genres_id, x.movie_id });
table.ForeignKey(
name: "fk___movie_genres_genres_genres_id",
column: x => x.genres_id,
principalSchema: "tvnoms",
principalTable: "genres",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk___movie_genres_movies_movie_id",
column: x => x.movie_id,
principalSchema: "tvnoms",
principalTable: "movies",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "__show_genres",
schema: "tvnoms",
columns: table => new
{
genres_id = table.Column<Guid>(type: "uuid", nullable: false),
show_id = table.Column<Guid>(type: "uuid", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk___show_genres", x => new { x.genres_id, x.show_id });
table.ForeignKey(
name: "fk___show_genres_genres_genres_id",
column: x => x.genres_id,
principalSchema: "tvnoms",
principalTable: "genres",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk___show_genres_shows_show_id",
column: x => x.show_id,
principalSchema: "tvnoms",
principalTable: "shows",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "role_claim",
schema: "auth",
columns: table => new
{
id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
role_id = table.Column<Guid>(type: "uuid", nullable: false),
claim_type = table.Column<string>(type: "text", nullable: true),
claim_value = table.Column<string>(type: "text", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_role_claim", x => x.id);
table.ForeignKey(
name: "fk_role_claim_user_user_role_role_id",
column: x => x.role_id,
principalSchema: "auth",
principalTable: "user_user_role",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "roles",
schema: "auth",
columns: table => new
{
id = table.Column<Guid>(type: "uuid", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_roles", x => x.id);
table.ForeignKey(
name: "fk_roles_user_user_role_id",
column: x => x.id,
principalSchema: "auth",
principalTable: "user_user_role",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "clients",
schema: "tvnoms",
columns: table => new
{
id = table.Column<Guid>(type: "uuid", nullable: false),
connection_id = table.Column<string>(type: "text", nullable: false),
connection_time = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: false),
ip_address = table.Column<string>(type: "text", nullable: true),
device_id = table.Column<string>(type: "text", nullable: true),
user_id = table.Column<Guid>(type: "uuid", nullable: true),
user_agent = table.Column<string>(type: "text", nullable: true),
active = table.Column<bool>(type: "boolean", nullable: false),
date_created = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
date_updated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_clients", x => x.id);
table.ForeignKey(
name: "fk_clients_user_user_id",
column: x => x.user_id,
principalSchema: "auth",
principalTable: "user",
principalColumn: "id");
});
migrationBuilder.CreateTable(
name: "user_claim",
schema: "auth",
columns: table => new
{
id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
user_id = table.Column<Guid>(type: "uuid", nullable: false),
claim_type = table.Column<string>(type: "text", nullable: true),
claim_value = table.Column<string>(type: "text", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_user_claim", x => x.id);
table.ForeignKey(
name: "fk_user_claim_user_user_id",
column: x => x.user_id,
principalSchema: "auth",
principalTable: "user",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "user_identity_role",
schema: "auth",
columns: table => new
{
user_id = table.Column<Guid>(type: "uuid", nullable: false),
role_id = table.Column<Guid>(type: "uuid", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_user_identity_role", x => new { x.user_id, x.role_id });
table.ForeignKey(
name: "fk_user_identity_role_user_user_id",
column: x => x.user_id,
principalSchema: "auth",
principalTable: "user",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk_user_identity_role_user_user_role_role_id",
column: x => x.role_id,
principalSchema: "auth",
principalTable: "user_user_role",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "user_login",
schema: "auth",
columns: table => new
{
login_provider = table.Column<string>(type: "text", nullable: false),
provider_key = table.Column<string>(type: "text", nullable: false),
provider_display_name = table.Column<string>(type: "text", nullable: true),
user_id = table.Column<Guid>(type: "uuid", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_user_login", x => new { x.login_provider, x.provider_key });
table.ForeignKey(
name: "fk_user_login_user_user_id",
column: x => x.user_id,
principalSchema: "auth",
principalTable: "user",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "user_sessions",
schema: "tvnoms",
columns: table => new
{
id = table.Column<Guid>(type: "uuid", nullable: false),
user_id = table.Column<Guid>(type: "uuid", nullable: false),
access_token_hash = table.Column<string>(type: "text", nullable: false),
access_token_expires_at = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: false),
refresh_token_hash = table.Column<string>(type: "text", nullable: false),
refresh_token_expires_at = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_user_sessions", x => x.id);
table.ForeignKey(
name: "fk_user_sessions_user_user_id",
column: x => x.user_id,
principalSchema: "auth",
principalTable: "user",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "user_token",
schema: "auth",
columns: table => new
{
user_id = table.Column<Guid>(type: "uuid", nullable: false),
login_provider = table.Column<string>(type: "text", nullable: false),
name = table.Column<string>(type: "text", nullable: false),
value = table.Column<string>(type: "text", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_user_token", x => new { x.user_id, x.login_provider, x.name });
table.ForeignKey(
name: "fk_user_token_user_user_id",
column: x => x.user_id,
principalSchema: "auth",
principalTable: "user",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "ix___movie_genres_movie_id",
schema: "tvnoms",
table: "__movie_genres",
column: "movie_id");
migrationBuilder.CreateIndex(
name: "ix___show_genres_show_id",
schema: "tvnoms",
table: "__show_genres",
column: "show_id");
migrationBuilder.CreateIndex(
name: "ix_clients_user_id",
schema: "tvnoms",
table: "clients",
column: "user_id");
migrationBuilder.CreateIndex(
name: "ix_genres_name",
schema: "tvnoms",
table: "genres",
column: "name",
unique: true);
migrationBuilder.CreateIndex(
name: "ix_role_claim_role_id",
schema: "auth",
table: "role_claim",
column: "role_id");
migrationBuilder.CreateIndex(
name: "EmailIndex",
schema: "auth",
table: "user",
column: "normalized_email");
migrationBuilder.CreateIndex(
name: "ix_user_avatar_id",
schema: "auth",
table: "user",
column: "avatar_id");
migrationBuilder.CreateIndex(
name: "UserNameIndex",
schema: "auth",
table: "user",
column: "normalized_user_name",
unique: true);
migrationBuilder.CreateIndex(
name: "ix_user_claim_user_id",
schema: "auth",
table: "user_claim",
column: "user_id");
migrationBuilder.CreateIndex(
name: "ix_user_identity_role_role_id",
schema: "auth",
table: "user_identity_role",
column: "role_id");
migrationBuilder.CreateIndex(
name: "ix_user_login_user_id",
schema: "auth",
table: "user_login",
column: "user_id");
migrationBuilder.CreateIndex(
name: "ix_user_sessions_user_id",
schema: "tvnoms",
table: "user_sessions",
column: "user_id");
migrationBuilder.CreateIndex(
name: "RoleNameIndex",
schema: "auth",
table: "user_user_role",
column: "normalized_name",
unique: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "__movie_genres",
schema: "tvnoms");
migrationBuilder.DropTable(
name: "__show_genres",
schema: "tvnoms");
migrationBuilder.DropTable(
name: "clients",
schema: "tvnoms");
migrationBuilder.DropTable(
name: "identity_user",
schema: "auth");
migrationBuilder.DropTable(
name: "identity_user_base",
schema: "auth");
migrationBuilder.DropTable(
name: "role_claim",
schema: "auth");
migrationBuilder.DropTable(
name: "roles",
schema: "auth");
migrationBuilder.DropTable(
name: "user_claim",
schema: "auth");
migrationBuilder.DropTable(
name: "user_identity_role",
schema: "auth");
migrationBuilder.DropTable(
name: "user_login",
schema: "auth");
migrationBuilder.DropTable(
name: "user_sessions",
schema: "tvnoms");
migrationBuilder.DropTable(
name: "user_token",
schema: "auth");
migrationBuilder.DropTable(
name: "movies",
schema: "tvnoms");
migrationBuilder.DropTable(
name: "genres",
schema: "tvnoms");
migrationBuilder.DropTable(
name: "shows",
schema: "tvnoms");
migrationBuilder.DropTable(
name: "user_user_role",
schema: "auth");
migrationBuilder.DropTable(
name: "user",
schema: "auth");
migrationBuilder.DropTable(
name: "media",
schema: "tvnoms");
}
}
}