< Summary - Syki

Line coverage
96%
Covered lines: 2618
Uncovered lines: 92
Coverable lines: 2710
Total lines: 2922
Line coverage: 96.6%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
File 1: Up(...)100%11100%
File 1: Down(...)100%210%
File 2: BuildTargetModel(...)100%11100%

File(s)

/home/runner/work/syki/syki/Back/Migrations/20260527011852_Bootstrap.cs

#LineLine coverage
 1using System.Text.Json;
 2using Microsoft.EntityFrameworkCore.Migrations;
 3using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
 4
 5#nullable disable
 6
 7namespace Back.Migrations
 8{
 9    /// <inheritdoc />
 10    public partial class Bootstrap : Migration
 11    {
 12        /// <inheritdoc />
 13        protected override void Up(MigrationBuilder migrationBuilder)
 14        {
 415            migrationBuilder.EnsureSchema(
 416                name: "syki");
 17
 418            migrationBuilder.CreateTable(
 419                name: "audit_trails",
 420                schema: "syki",
 421                columns: table => new
 422                {
 423                    id = table.Column<int>(type: "integer", nullable: false)
 424                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 425                    activity_id = table.Column<string>(type: "text", nullable: false),
 426                    operation = table.Column<string>(type: "text", nullable: false),
 427                    entity_id = table.Column<string>(type: "text", nullable: false),
 428                    entity_type = table.Column<string>(type: "text", nullable: false),
 429                    user_id = table.Column<int>(type: "integer", nullable: false),
 430                    institution_id = table.Column<int>(type: "integer", nullable: false),
 431                    action = table.Column<string>(type: "text", nullable: false),
 432                    created_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
 433                    data = table.Column<JsonDocument>(type: "jsonb", nullable: false)
 434                },
 435                constraints: table =>
 436                {
 437                    table.PrimaryKey("pk_audit_trails", x => x.id);
 838                });
 39
 440            migrationBuilder.CreateTable(
 441                name: "command_batches",
 442                schema: "syki",
 443                columns: table => new
 444                {
 445                    id = table.Column<int>(type: "integer", nullable: false)
 446                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 447                    institution_id = table.Column<int>(type: "integer", nullable: false),
 448                    type = table.Column<int>(type: "integer", nullable: false),
 449                    status = table.Column<int>(type: "integer", nullable: false),
 450                    created_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
 451                    processed_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
 452                    source_command_id = table.Column<int>(type: "integer", nullable: true),
 453                    next_command_id = table.Column<int>(type: "integer", nullable: true),
 454                    size = table.Column<int>(type: "integer", nullable: false)
 455                },
 456                constraints: table =>
 457                {
 458                    table.PrimaryKey("pk_command_batches", x => x.id);
 859                });
 60
 461            migrationBuilder.CreateTable(
 462                name: "data_protection_keys",
 463                columns: table => new
 464                {
 465                    id = table.Column<int>(type: "integer", nullable: false)
 466                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 467                    friendly_name = table.Column<string>(type: "text", nullable: true),
 468                    xml = table.Column<string>(type: "text", nullable: true)
 469                },
 470                constraints: table =>
 471                {
 472                    table.PrimaryKey("pk_data_protection_keys", x => x.id);
 873                });
 74
 475            migrationBuilder.CreateTable(
 476                name: "institutions",
 477                schema: "syki",
 478                columns: table => new
 479                {
 480                    id = table.Column<int>(type: "integer", nullable: false)
 481                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 482                    name = table.Column<string>(type: "text", nullable: false),
 483                    created_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
 484                },
 485                constraints: table =>
 486                {
 487                    table.PrimaryKey("pk_institutions", x => x.id);
 888                });
 89
 490            migrationBuilder.CreateTable(
 491                name: "academic_periods",
 492                schema: "syki",
 493                columns: table => new
 494                {
 495                    id = table.Column<int>(type: "integer", nullable: false)
 496                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 497                    institution_id = table.Column<int>(type: "integer", nullable: false),
 498                    name = table.Column<string>(type: "text", nullable: false),
 499                    start_at = table.Column<DateOnly>(type: "date", nullable: false),
 4100                    end_at = table.Column<DateOnly>(type: "date", nullable: false)
 4101                },
 4102                constraints: table =>
 4103                {
 4104                    table.PrimaryKey("pk_academic_periods", x => x.id);
 4105                    table.ForeignKey(
 4106                        name: "fk_academic_periods_institutions_institution_id",
 4107                        column: x => x.institution_id,
 4108                        principalSchema: "syki",
 4109                        principalTable: "institutions",
 4110                        principalColumn: "id",
 4111                        onDelete: ReferentialAction.Cascade);
 8112                });
 113
 4114            migrationBuilder.CreateTable(
 4115                name: "campi",
 4116                schema: "syki",
 4117                columns: table => new
 4118                {
 4119                    id = table.Column<int>(type: "integer", nullable: false)
 4120                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 4121                    institution_id = table.Column<int>(type: "integer", nullable: false),
 4122                    name = table.Column<string>(type: "text", nullable: false),
 4123                    state = table.Column<int>(type: "integer", nullable: false),
 4124                    city = table.Column<string>(type: "text", nullable: false),
 4125                    capacity = table.Column<int>(type: "integer", nullable: false)
 4126                },
 4127                constraints: table =>
 4128                {
 4129                    table.PrimaryKey("pk_campi", x => x.id);
 4130                    table.ForeignKey(
 4131                        name: "fk_campi_institutions_institution_id",
 4132                        column: x => x.institution_id,
 4133                        principalSchema: "syki",
 4134                        principalTable: "institutions",
 4135                        principalColumn: "id",
 4136                        onDelete: ReferentialAction.Cascade);
 8137                });
 138
 4139            migrationBuilder.CreateTable(
 4140                name: "commands",
 4141                schema: "syki",
 4142                columns: table => new
 4143                {
 4144                    id = table.Column<int>(type: "integer", nullable: false)
 4145                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 4146                    institution_id = table.Column<int>(type: "integer", nullable: false),
 4147                    type = table.Column<string>(type: "text", nullable: false),
 4148                    data = table.Column<string>(type: "text", nullable: false),
 4149                    status = table.Column<int>(type: "integer", nullable: false),
 4150                    created_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
 4151                    duration = table.Column<int>(type: "integer", nullable: false),
 4152                    processed_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
 4153                    processor_id = table.Column<Guid>(type: "uuid", nullable: true),
 4154                    error = table.Column<string>(type: "text", nullable: true),
 4155                    parent_id = table.Column<int>(type: "integer", nullable: true),
 4156                    original_id = table.Column<int>(type: "integer", nullable: true),
 4157                    batch_id = table.Column<int>(type: "integer", nullable: true),
 4158                    not_before = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
 4159                    activity_id = table.Column<string>(type: "text", nullable: true),
 4160                    max_retries = table.Column<int>(type: "integer", nullable: false),
 4161                    retry_attempt = table.Column<int>(type: "integer", nullable: false),
 4162                    backoff_strategy = table.Column<int>(type: "integer", nullable: false),
 4163                    base_delay_seconds = table.Column<int>(type: "integer", nullable: false),
 4164                    logs = table.Column<List<string>>(type: "text[]", nullable: false)
 4165                },
 4166                constraints: table =>
 4167                {
 4168                    table.PrimaryKey("pk_commands", x => x.id);
 4169                    table.ForeignKey(
 4170                        name: "fk_commands_institutions_institution_id",
 4171                        column: x => x.institution_id,
 4172                        principalSchema: "syki",
 4173                        principalTable: "institutions",
 4174                        principalColumn: "id",
 4175                        onDelete: ReferentialAction.Cascade);
 8176                });
 177
 4178            migrationBuilder.CreateTable(
 4179                name: "courses",
 4180                schema: "syki",
 4181                columns: table => new
 4182                {
 4183                    id = table.Column<int>(type: "integer", nullable: false)
 4184                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 4185                    institution_id = table.Column<int>(type: "integer", nullable: false),
 4186                    name = table.Column<string>(type: "text", nullable: false),
 4187                    course_type = table.Column<int>(type: "integer", nullable: false)
 4188                },
 4189                constraints: table =>
 4190                {
 4191                    table.PrimaryKey("pk_courses", x => x.id);
 4192                    table.ForeignKey(
 4193                        name: "fk_courses_institutions_institution_id",
 4194                        column: x => x.institution_id,
 4195                        principalSchema: "syki",
 4196                        principalTable: "institutions",
 4197                        principalColumn: "id",
 4198                        onDelete: ReferentialAction.Cascade);
 8199                });
 200
 4201            migrationBuilder.CreateTable(
 4202                name: "disciplines",
 4203                schema: "syki",
 4204                columns: table => new
 4205                {
 4206                    id = table.Column<int>(type: "integer", nullable: false)
 4207                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 4208                    institution_id = table.Column<int>(type: "integer", nullable: false),
 4209                    name = table.Column<string>(type: "text", nullable: false),
 4210                    code = table.Column<string>(type: "text", nullable: false)
 4211                },
 4212                constraints: table =>
 4213                {
 4214                    table.PrimaryKey("pk_disciplines", x => x.id);
 4215                    table.ForeignKey(
 4216                        name: "fk_disciplines_institutions_institution_id",
 4217                        column: x => x.institution_id,
 4218                        principalSchema: "syki",
 4219                        principalTable: "institutions",
 4220                        principalColumn: "id",
 4221                        onDelete: ReferentialAction.Cascade);
 8222                });
 223
 4224            migrationBuilder.CreateTable(
 4225                name: "enrollment_periods",
 4226                schema: "syki",
 4227                columns: table => new
 4228                {
 4229                    id = table.Column<int>(type: "integer", nullable: false)
 4230                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 4231                    institution_id = table.Column<int>(type: "integer", nullable: false),
 4232                    name = table.Column<string>(type: "text", nullable: false),
 4233                    start_at = table.Column<DateOnly>(type: "date", nullable: false),
 4234                    end_at = table.Column<DateOnly>(type: "date", nullable: false)
 4235                },
 4236                constraints: table =>
 4237                {
 4238                    table.PrimaryKey("pk_enrollment_periods", x => x.id);
 4239                    table.ForeignKey(
 4240                        name: "fk_enrollment_periods_institutions_institution_id",
 4241                        column: x => x.institution_id,
 4242                        principalSchema: "syki",
 4243                        principalTable: "institutions",
 4244                        principalColumn: "id",
 4245                        onDelete: ReferentialAction.Cascade);
 8246                });
 247
 4248            migrationBuilder.CreateTable(
 4249                name: "roles",
 4250                schema: "syki",
 4251                columns: table => new
 4252                {
 4253                    id = table.Column<int>(type: "integer", nullable: false)
 4254                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 4255                    owner_id = table.Column<int>(type: "integer", nullable: true),
 4256                    description = table.Column<string>(type: "text", nullable: false),
 4257                    permissions = table.Column<List<int>>(type: "integer[]", nullable: false),
 4258                    name = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
 4259                    normalized_name = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: tru
 4260                    concurrency_stamp = table.Column<string>(type: "text", nullable: true)
 4261                },
 4262                constraints: table =>
 4263                {
 4264                    table.PrimaryKey("pk_roles", x => x.id);
 4265                    table.ForeignKey(
 4266                        name: "fk_roles_institutions_owner_id",
 4267                        column: x => x.owner_id,
 4268                        principalSchema: "syki",
 4269                        principalTable: "institutions",
 4270                        principalColumn: "id");
 8271                });
 272
 4273            migrationBuilder.CreateTable(
 4274                name: "sso_configurations",
 4275                schema: "syki",
 4276                columns: table => new
 4277                {
 4278                    id = table.Column<int>(type: "integer", nullable: false)
 4279                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 4280                    public_id = table.Column<Guid>(type: "uuid", nullable: false),
 4281                    institution_id = table.Column<int>(type: "integer", nullable: false),
 4282                    provider_type = table.Column<int>(type: "integer", nullable: false),
 4283                    authority = table.Column<string>(type: "text", nullable: false),
 4284                    client_id = table.Column<string>(type: "text", nullable: false),
 4285                    client_secret = table.Column<string>(type: "text", nullable: false),
 4286                    is_active = table.Column<bool>(type: "boolean", nullable: false),
 4287                    require_sso = table.Column<bool>(type: "boolean", nullable: false),
 4288                    created_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
 4289                    updated_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
 4290                },
 4291                constraints: table =>
 4292                {
 4293                    table.PrimaryKey("pk_sso_configurations", x => x.id);
 4294                    table.ForeignKey(
 4295                        name: "fk_sso_configurations_institutions_institution_id",
 4296                        column: x => x.institution_id,
 4297                        principalSchema: "syki",
 4298                        principalTable: "institutions",
 4299                        principalColumn: "id",
 4300                        onDelete: ReferentialAction.Cascade);
 8301                });
 302
 4303            migrationBuilder.CreateTable(
 4304                name: "users",
 4305                schema: "syki",
 4306                columns: table => new
 4307                {
 4308                    id = table.Column<int>(type: "integer", nullable: false)
 4309                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 4310                    institution_id = table.Column<int>(type: "integer", nullable: false),
 4311                    name = table.Column<string>(type: "text", nullable: false),
 4312                    created_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
 4313                    profile_photo = table.Column<string>(type: "text", nullable: true),
 4314                    user_name = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
 4315                    normalized_user_name = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable
 4316                    email = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
 4317                    normalized_email = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: tr
 4318                    email_confirmed = table.Column<bool>(type: "boolean", nullable: false),
 4319                    password_hash = table.Column<string>(type: "text", nullable: true),
 4320                    security_stamp = table.Column<string>(type: "text", nullable: true),
 4321                    concurrency_stamp = table.Column<string>(type: "text", nullable: true),
 4322                    phone_number = table.Column<string>(type: "text", nullable: true),
 4323                    phone_number_confirmed = table.Column<bool>(type: "boolean", nullable: false),
 4324                    two_factor_enabled = table.Column<bool>(type: "boolean", nullable: false),
 4325                    lockout_end = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: true),
 4326                    lockout_enabled = table.Column<bool>(type: "boolean", nullable: false),
 4327                    access_failed_count = table.Column<int>(type: "integer", nullable: false)
 4328                },
 4329                constraints: table =>
 4330                {
 4331                    table.PrimaryKey("pk_users", x => x.id);
 4332                    table.UniqueConstraint("ak_asp_net_users_institution_id_id", x => new { x.institution_id, x.id });
 4333                    table.ForeignKey(
 4334                        name: "fk_users_institutions_institution_id",
 4335                        column: x => x.institution_id,
 4336                        principalSchema: "syki",
 4337                        principalTable: "institutions",
 4338                        principalColumn: "id",
 4339                        onDelete: ReferentialAction.Cascade);
 8340                });
 341
 4342            migrationBuilder.CreateTable(
 4343                name: "course_curriculums",
 4344                schema: "syki",
 4345                columns: table => new
 4346                {
 4347                    id = table.Column<int>(type: "integer", nullable: false)
 4348                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 4349                    institution_id = table.Column<int>(type: "integer", nullable: false),
 4350                    course_id = table.Column<int>(type: "integer", nullable: false),
 4351                    name = table.Column<string>(type: "text", nullable: false)
 4352                },
 4353                constraints: table =>
 4354                {
 4355                    table.PrimaryKey("pk_course_curriculums", x => x.id);
 4356                    table.ForeignKey(
 4357                        name: "fk_course_curriculums_courses_course_id",
 4358                        column: x => x.course_id,
 4359                        principalSchema: "syki",
 4360                        principalTable: "courses",
 4361                        principalColumn: "id",
 4362                        onDelete: ReferentialAction.Cascade);
 4363                    table.ForeignKey(
 4364                        name: "fk_course_curriculums_institutions_institution_id",
 4365                        column: x => x.institution_id,
 4366                        principalSchema: "syki",
 4367                        principalTable: "institutions",
 4368                        principalColumn: "id",
 4369                        onDelete: ReferentialAction.Cascade);
 8370                });
 371
 4372            migrationBuilder.CreateTable(
 4373                name: "courses_disciplines",
 4374                schema: "syki",
 4375                columns: table => new
 4376                {
 4377                    course_id = table.Column<int>(type: "integer", nullable: false),
 4378                    discipline_id = table.Column<int>(type: "integer", nullable: false)
 4379                },
 4380                constraints: table =>
 4381                {
 4382                    table.PrimaryKey("pk_courses_disciplines", x => new { x.course_id, x.discipline_id });
 4383                    table.ForeignKey(
 4384                        name: "fk_courses_disciplines_courses_course_id",
 4385                        column: x => x.course_id,
 4386                        principalSchema: "syki",
 4387                        principalTable: "courses",
 4388                        principalColumn: "id",
 4389                        onDelete: ReferentialAction.Cascade);
 4390                    table.ForeignKey(
 4391                        name: "fk_courses_disciplines_disciplines_discipline_id",
 4392                        column: x => x.discipline_id,
 4393                        principalSchema: "syki",
 4394                        principalTable: "disciplines",
 4395                        principalColumn: "id",
 4396                        onDelete: ReferentialAction.Cascade);
 8397                });
 398
 4399            migrationBuilder.CreateTable(
 4400                name: "institution_roles",
 4401                schema: "syki",
 4402                columns: table => new
 4403                {
 4404                    institution_id = table.Column<int>(type: "integer", nullable: false),
 4405                    role_id = table.Column<int>(type: "integer", nullable: false)
 4406                },
 4407                constraints: table =>
 4408                {
 4409                    table.PrimaryKey("pk_institution_roles", x => new { x.institution_id, x.role_id });
 4410                    table.ForeignKey(
 4411                        name: "fk_institution_roles_institutions_institution_id",
 4412                        column: x => x.institution_id,
 4413                        principalSchema: "syki",
 4414                        principalTable: "institutions",
 4415                        principalColumn: "id",
 4416                        onDelete: ReferentialAction.Cascade);
 4417                    table.ForeignKey(
 4418                        name: "fk_institution_roles_roles_role_id",
 4419                        column: x => x.role_id,
 4420                        principalSchema: "syki",
 4421                        principalTable: "roles",
 4422                        principalColumn: "id",
 4423                        onDelete: ReferentialAction.Cascade);
 8424                });
 425
 4426            migrationBuilder.CreateTable(
 4427                name: "role_claims",
 4428                schema: "syki",
 4429                columns: table => new
 4430                {
 4431                    id = table.Column<int>(type: "integer", nullable: false)
 4432                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 4433                    role_id = table.Column<int>(type: "integer", nullable: false),
 4434                    claim_type = table.Column<string>(type: "text", nullable: true),
 4435                    claim_value = table.Column<string>(type: "text", nullable: true)
 4436                },
 4437                constraints: table =>
 4438                {
 4439                    table.PrimaryKey("pk_role_claims", x => x.id);
 4440                    table.ForeignKey(
 4441                        name: "fk_role_claims_roles_role_id",
 4442                        column: x => x.role_id,
 4443                        principalSchema: "syki",
 4444                        principalTable: "roles",
 4445                        principalColumn: "id",
 4446                        onDelete: ReferentialAction.Cascade);
 8447                });
 448
 4449            migrationBuilder.CreateTable(
 4450                name: "sso_allowed_domains",
 4451                schema: "syki",
 4452                columns: table => new
 4453                {
 4454                    domain = table.Column<string>(type: "text", nullable: false),
 4455                    sso_configuration_id = table.Column<int>(type: "integer", nullable: false)
 4456                },
 4457                constraints: table =>
 4458                {
 4459                    table.PrimaryKey("pk_sso_allowed_domains", x => x.domain);
 4460                    table.ForeignKey(
 4461                        name: "fk_sso_allowed_domains_sso_configurations_sso_configuration_id",
 4462                        column: x => x.sso_configuration_id,
 4463                        principalSchema: "syki",
 4464                        principalTable: "sso_configurations",
 4465                        principalColumn: "id",
 4466                        onDelete: ReferentialAction.Cascade);
 8467                });
 468
 4469            migrationBuilder.CreateTable(
 4470                name: "magic_links",
 4471                schema: "syki",
 4472                columns: table => new
 4473                {
 4474                    id = table.Column<Guid>(type: "uuid", nullable: false),
 4475                    user_id = table.Column<int>(type: "integer", nullable: false),
 4476                    created_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
 4477                    expires_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
 4478                    used_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
 4479                },
 4480                constraints: table =>
 4481                {
 4482                    table.PrimaryKey("pk_magic_links", x => x.id);
 4483                    table.ForeignKey(
 4484                        name: "fk_magic_links_asp_net_users_user_id",
 4485                        column: x => x.user_id,
 4486                        principalSchema: "syki",
 4487                        principalTable: "users",
 4488                        principalColumn: "id",
 4489                        onDelete: ReferentialAction.Cascade);
 8490                });
 491
 4492            migrationBuilder.CreateTable(
 4493                name: "reset_password_tokens",
 4494                columns: table => new
 4495                {
 4496                    id = table.Column<Guid>(type: "uuid", nullable: false),
 4497                    user_id = table.Column<int>(type: "integer", nullable: false),
 4498                    institution_id = table.Column<int>(type: "integer", nullable: false),
 4499                    token = table.Column<string>(type: "text", nullable: false),
 4500                    created_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
 4501                    expires_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
 4502                    used_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
 4503                },
 4504                constraints: table =>
 4505                {
 4506                    table.PrimaryKey("pk_reset_password_tokens", x => x.id);
 4507                    table.ForeignKey(
 4508                        name: "fk_reset_password_tokens_asp_net_users_user_id",
 4509                        column: x => x.user_id,
 4510                        principalSchema: "syki",
 4511                        principalTable: "users",
 4512                        principalColumn: "id",
 4513                        onDelete: ReferentialAction.Cascade);
 4514                    table.ForeignKey(
 4515                        name: "fk_reset_password_tokens_institutions_institution_id",
 4516                        column: x => x.institution_id,
 4517                        principalSchema: "syki",
 4518                        principalTable: "institutions",
 4519                        principalColumn: "id",
 4520                        onDelete: ReferentialAction.Cascade);
 8521                });
 522
 4523            migrationBuilder.CreateTable(
 4524                name: "students",
 4525                schema: "syki",
 4526                columns: table => new
 4527                {
 4528                    id = table.Column<int>(type: "integer", nullable: false)
 4529                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 4530                    institution_id = table.Column<int>(type: "integer", nullable: false),
 4531                    user_id = table.Column<int>(type: "integer", nullable: false),
 4532                    name = table.Column<string>(type: "text", nullable: false),
 4533                    enrollment_code = table.Column<string>(type: "text", nullable: false),
 4534                    status = table.Column<int>(type: "integer", nullable: false),
 4535                    yield_coefficient = table.Column<decimal>(type: "numeric(4,2)", precision: 4, scale: 2, nullable: fa
 4536                },
 4537                constraints: table =>
 4538                {
 4539                    table.PrimaryKey("pk_students", x => x.id);
 4540                    table.ForeignKey(
 4541                        name: "fk_students_asp_net_users_institution_id_user_id",
 4542                        columns: x => new { x.institution_id, x.user_id },
 4543                        principalSchema: "syki",
 4544                        principalTable: "users",
 4545                        principalColumns: new[] { "institution_id", "id" },
 4546                        onDelete: ReferentialAction.Cascade);
 4547                    table.ForeignKey(
 4548                        name: "fk_students_institutions_institution_id",
 4549                        column: x => x.institution_id,
 4550                        principalSchema: "syki",
 4551                        principalTable: "institutions",
 4552                        principalColumn: "id",
 4553                        onDelete: ReferentialAction.Cascade);
 8554                });
 555
 4556            migrationBuilder.CreateTable(
 4557                name: "teachers",
 4558                schema: "syki",
 4559                columns: table => new
 4560                {
 4561                    id = table.Column<int>(type: "integer", nullable: false)
 4562                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 4563                    institution_id = table.Column<int>(type: "integer", nullable: false),
 4564                    user_id = table.Column<int>(type: "integer", nullable: false),
 4565                    name = table.Column<string>(type: "text", nullable: false)
 4566                },
 4567                constraints: table =>
 4568                {
 4569                    table.PrimaryKey("pk_teachers", x => x.id);
 4570                    table.ForeignKey(
 4571                        name: "fk_teachers_asp_net_users_institution_id_user_id",
 4572                        columns: x => new { x.institution_id, x.user_id },
 4573                        principalSchema: "syki",
 4574                        principalTable: "users",
 4575                        principalColumns: new[] { "institution_id", "id" },
 4576                        onDelete: ReferentialAction.Cascade);
 4577                    table.ForeignKey(
 4578                        name: "fk_teachers_institutions_institution_id",
 4579                        column: x => x.institution_id,
 4580                        principalSchema: "syki",
 4581                        principalTable: "institutions",
 4582                        principalColumn: "id",
 4583                        onDelete: ReferentialAction.Cascade);
 8584                });
 585
 4586            migrationBuilder.CreateTable(
 4587                name: "user_claims",
 4588                schema: "syki",
 4589                columns: table => new
 4590                {
 4591                    id = table.Column<int>(type: "integer", nullable: false)
 4592                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 4593                    user_id = table.Column<int>(type: "integer", nullable: false),
 4594                    claim_type = table.Column<string>(type: "text", nullable: true),
 4595                    claim_value = table.Column<string>(type: "text", nullable: true)
 4596                },
 4597                constraints: table =>
 4598                {
 4599                    table.PrimaryKey("pk_user_claims", x => x.id);
 4600                    table.ForeignKey(
 4601                        name: "fk_user_claims_users_user_id",
 4602                        column: x => x.user_id,
 4603                        principalSchema: "syki",
 4604                        principalTable: "users",
 4605                        principalColumn: "id",
 4606                        onDelete: ReferentialAction.Cascade);
 8607                });
 608
 4609            migrationBuilder.CreateTable(
 4610                name: "user_logins",
 4611                schema: "syki",
 4612                columns: table => new
 4613                {
 4614                    login_provider = table.Column<string>(type: "text", nullable: false),
 4615                    provider_key = table.Column<string>(type: "text", nullable: false),
 4616                    provider_display_name = table.Column<string>(type: "text", nullable: true),
 4617                    user_id = table.Column<int>(type: "integer", nullable: false)
 4618                },
 4619                constraints: table =>
 4620                {
 4621                    table.PrimaryKey("pk_user_logins", x => new { x.login_provider, x.provider_key });
 4622                    table.ForeignKey(
 4623                        name: "fk_user_logins_users_user_id",
 4624                        column: x => x.user_id,
 4625                        principalSchema: "syki",
 4626                        principalTable: "users",
 4627                        principalColumn: "id",
 4628                        onDelete: ReferentialAction.Cascade);
 8629                });
 630
 4631            migrationBuilder.CreateTable(
 4632                name: "user_roles",
 4633                schema: "syki",
 4634                columns: table => new
 4635                {
 4636                    user_id = table.Column<int>(type: "integer", nullable: false),
 4637                    role_id = table.Column<int>(type: "integer", nullable: false),
 4638                    institution_id = table.Column<int>(type: "integer", nullable: false)
 4639                },
 4640                constraints: table =>
 4641                {
 4642                    table.PrimaryKey("pk_user_roles", x => new { x.institution_id, x.user_id, x.role_id });
 4643                    table.ForeignKey(
 4644                        name: "fk_user_roles_institutions_institution_id",
 4645                        column: x => x.institution_id,
 4646                        principalSchema: "syki",
 4647                        principalTable: "institutions",
 4648                        principalColumn: "id",
 4649                        onDelete: ReferentialAction.Cascade);
 4650                    table.ForeignKey(
 4651                        name: "fk_user_roles_roles_role_id",
 4652                        column: x => x.role_id,
 4653                        principalSchema: "syki",
 4654                        principalTable: "roles",
 4655                        principalColumn: "id",
 4656                        onDelete: ReferentialAction.Cascade);
 4657                    table.ForeignKey(
 4658                        name: "fk_user_roles_users_user_id",
 4659                        column: x => x.user_id,
 4660                        principalSchema: "syki",
 4661                        principalTable: "users",
 4662                        principalColumn: "id",
 4663                        onDelete: ReferentialAction.Cascade);
 8664                });
 665
 4666            migrationBuilder.CreateTable(
 4667                name: "user_tokens",
 4668                schema: "syki",
 4669                columns: table => new
 4670                {
 4671                    user_id = table.Column<int>(type: "integer", nullable: false),
 4672                    login_provider = table.Column<string>(type: "text", nullable: false),
 4673                    name = table.Column<string>(type: "text", nullable: false),
 4674                    value = table.Column<string>(type: "text", nullable: true)
 4675                },
 4676                constraints: table =>
 4677                {
 4678                    table.PrimaryKey("pk_user_tokens", x => new { x.user_id, x.login_provider, x.name });
 4679                    table.ForeignKey(
 4680                        name: "fk_user_tokens_users_user_id",
 4681                        column: x => x.user_id,
 4682                        principalSchema: "syki",
 4683                        principalTable: "users",
 4684                        principalColumn: "id",
 4685                        onDelete: ReferentialAction.Cascade);
 8686                });
 687
 4688            migrationBuilder.CreateTable(
 4689                name: "course_curriculums_disciplines",
 4690                schema: "syki",
 4691                columns: table => new
 4692                {
 4693                    course_curriculum_id = table.Column<int>(type: "integer", nullable: false),
 4694                    discipline_id = table.Column<int>(type: "integer", nullable: false),
 4695                    period = table.Column<byte>(type: "smallint", nullable: false),
 4696                    credits = table.Column<byte>(type: "smallint", nullable: false),
 4697                    workload = table.Column<int>(type: "integer", nullable: false)
 4698                },
 4699                constraints: table =>
 4700                {
 4701                    table.PrimaryKey("pk_course_curriculums_disciplines", x => new { x.course_curriculum_id, x.disciplin
 4702                    table.ForeignKey(
 4703                        name: "fk_course_curriculums_disciplines_course_curriculums_course_cu",
 4704                        column: x => x.course_curriculum_id,
 4705                        principalSchema: "syki",
 4706                        principalTable: "course_curriculums",
 4707                        principalColumn: "id",
 4708                        onDelete: ReferentialAction.Cascade);
 4709                    table.ForeignKey(
 4710                        name: "fk_course_curriculums_disciplines_disciplines_discipline_id",
 4711                        column: x => x.discipline_id,
 4712                        principalSchema: "syki",
 4713                        principalTable: "disciplines",
 4714                        principalColumn: "id",
 4715                        onDelete: ReferentialAction.Cascade);
 8716                });
 717
 4718            migrationBuilder.CreateTable(
 4719                name: "course_offerings",
 4720                schema: "syki",
 4721                columns: table => new
 4722                {
 4723                    id = table.Column<int>(type: "integer", nullable: false)
 4724                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 4725                    institution_id = table.Column<int>(type: "integer", nullable: false),
 4726                    campus_id = table.Column<int>(type: "integer", nullable: false),
 4727                    course_id = table.Column<int>(type: "integer", nullable: false),
 4728                    course_curriculum_id = table.Column<int>(type: "integer", nullable: false),
 4729                    academic_period_id = table.Column<int>(type: "integer", nullable: false),
 4730                    session = table.Column<int>(type: "integer", nullable: false)
 4731                },
 4732                constraints: table =>
 4733                {
 4734                    table.PrimaryKey("pk_course_offerings", x => x.id);
 4735                    table.ForeignKey(
 4736                        name: "fk_course_offerings_academic_periods_academic_period_id",
 4737                        column: x => x.academic_period_id,
 4738                        principalSchema: "syki",
 4739                        principalTable: "academic_periods",
 4740                        principalColumn: "id",
 4741                        onDelete: ReferentialAction.Cascade);
 4742                    table.ForeignKey(
 4743                        name: "fk_course_offerings_campi_campus_id",
 4744                        column: x => x.campus_id,
 4745                        principalSchema: "syki",
 4746                        principalTable: "campi",
 4747                        principalColumn: "id",
 4748                        onDelete: ReferentialAction.Cascade);
 4749                    table.ForeignKey(
 4750                        name: "fk_course_offerings_course_curriculums_course_curriculum_id",
 4751                        column: x => x.course_curriculum_id,
 4752                        principalSchema: "syki",
 4753                        principalTable: "course_curriculums",
 4754                        principalColumn: "id",
 4755                        onDelete: ReferentialAction.Cascade);
 4756                    table.ForeignKey(
 4757                        name: "fk_course_offerings_courses_course_id",
 4758                        column: x => x.course_id,
 4759                        principalSchema: "syki",
 4760                        principalTable: "courses",
 4761                        principalColumn: "id",
 4762                        onDelete: ReferentialAction.Cascade);
 4763                    table.ForeignKey(
 4764                        name: "fk_course_offerings_institutions_institution_id",
 4765                        column: x => x.institution_id,
 4766                        principalSchema: "syki",
 4767                        principalTable: "institutions",
 4768                        principalColumn: "id",
 4769                        onDelete: ReferentialAction.Cascade);
 8770                });
 771
 4772            migrationBuilder.CreateTable(
 4773                name: "teachers_campi",
 4774                schema: "syki",
 4775                columns: table => new
 4776                {
 4777                    teacher_id = table.Column<int>(type: "integer", nullable: false),
 4778                    campus_id = table.Column<int>(type: "integer", nullable: false)
 4779                },
 4780                constraints: table =>
 4781                {
 4782                    table.PrimaryKey("pk_teachers_campi", x => new { x.teacher_id, x.campus_id });
 4783                    table.ForeignKey(
 4784                        name: "fk_teachers_campi_campi_campus_id",
 4785                        column: x => x.campus_id,
 4786                        principalSchema: "syki",
 4787                        principalTable: "campi",
 4788                        principalColumn: "id",
 4789                        onDelete: ReferentialAction.Cascade);
 4790                    table.ForeignKey(
 4791                        name: "fk_teachers_campi_teachers_teacher_id",
 4792                        column: x => x.teacher_id,
 4793                        principalSchema: "syki",
 4794                        principalTable: "teachers",
 4795                        principalColumn: "id",
 4796                        onDelete: ReferentialAction.Cascade);
 8797                });
 798
 4799            migrationBuilder.CreateTable(
 4800                name: "teachers_disciplines",
 4801                schema: "syki",
 4802                columns: table => new
 4803                {
 4804                    teacher_id = table.Column<int>(type: "integer", nullable: false),
 4805                    discipline_id = table.Column<int>(type: "integer", nullable: false)
 4806                },
 4807                constraints: table =>
 4808                {
 4809                    table.PrimaryKey("pk_teachers_disciplines", x => new { x.teacher_id, x.discipline_id });
 4810                    table.ForeignKey(
 4811                        name: "fk_teachers_disciplines_disciplines_discipline_id",
 4812                        column: x => x.discipline_id,
 4813                        principalSchema: "syki",
 4814                        principalTable: "disciplines",
 4815                        principalColumn: "id",
 4816                        onDelete: ReferentialAction.Cascade);
 4817                    table.ForeignKey(
 4818                        name: "fk_teachers_disciplines_teachers_teacher_id",
 4819                        column: x => x.teacher_id,
 4820                        principalSchema: "syki",
 4821                        principalTable: "teachers",
 4822                        principalColumn: "id",
 4823                        onDelete: ReferentialAction.Cascade);
 8824                });
 825
 4826            migrationBuilder.CreateTable(
 4827                name: "student_course_enrollments",
 4828                schema: "syki",
 4829                columns: table => new
 4830                {
 4831                    id = table.Column<int>(type: "integer", nullable: false)
 4832                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 4833                    student_id = table.Column<int>(type: "integer", nullable: false),
 4834                    course_offering_id = table.Column<int>(type: "integer", nullable: false),
 4835                    enrolled_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
 4836                    left_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
 4837                },
 4838                constraints: table =>
 4839                {
 4840                    table.PrimaryKey("pk_student_course_enrollments", x => x.id);
 4841                    table.ForeignKey(
 4842                        name: "fk_student_course_enrollments_course_offerings_course_offering",
 4843                        column: x => x.course_offering_id,
 4844                        principalSchema: "syki",
 4845                        principalTable: "course_offerings",
 4846                        principalColumn: "id",
 4847                        onDelete: ReferentialAction.Cascade);
 4848                    table.ForeignKey(
 4849                        name: "fk_student_course_enrollments_students_student_id",
 4850                        column: x => x.student_id,
 4851                        principalSchema: "syki",
 4852                        principalTable: "students",
 4853                        principalColumn: "id",
 4854                        onDelete: ReferentialAction.Cascade);
 8855                });
 856
 4857            migrationBuilder.CreateIndex(
 4858                name: "ix_academic_periods_institution_id",
 4859                schema: "syki",
 4860                table: "academic_periods",
 4861                column: "institution_id");
 862
 4863            migrationBuilder.CreateIndex(
 4864                name: "ix_campi_institution_id",
 4865                schema: "syki",
 4866                table: "campi",
 4867                column: "institution_id");
 868
 4869            migrationBuilder.CreateIndex(
 4870                name: "ix_commands_institution_id",
 4871                schema: "syki",
 4872                table: "commands",
 4873                column: "institution_id");
 874
 4875            migrationBuilder.CreateIndex(
 4876                name: "ix_course_curriculums_course_id",
 4877                schema: "syki",
 4878                table: "course_curriculums",
 4879                column: "course_id");
 880
 4881            migrationBuilder.CreateIndex(
 4882                name: "ix_course_curriculums_institution_id",
 4883                schema: "syki",
 4884                table: "course_curriculums",
 4885                column: "institution_id");
 886
 4887            migrationBuilder.CreateIndex(
 4888                name: "ix_course_curriculums_disciplines_discipline_id",
 4889                schema: "syki",
 4890                table: "course_curriculums_disciplines",
 4891                column: "discipline_id");
 892
 4893            migrationBuilder.CreateIndex(
 4894                name: "ix_course_offerings_academic_period_id",
 4895                schema: "syki",
 4896                table: "course_offerings",
 4897                column: "academic_period_id");
 898
 4899            migrationBuilder.CreateIndex(
 4900                name: "ix_course_offerings_campus_id",
 4901                schema: "syki",
 4902                table: "course_offerings",
 4903                column: "campus_id");
 904
 4905            migrationBuilder.CreateIndex(
 4906                name: "ix_course_offerings_course_curriculum_id",
 4907                schema: "syki",
 4908                table: "course_offerings",
 4909                column: "course_curriculum_id");
 910
 4911            migrationBuilder.CreateIndex(
 4912                name: "ix_course_offerings_course_id",
 4913                schema: "syki",
 4914                table: "course_offerings",
 4915                column: "course_id");
 916
 4917            migrationBuilder.CreateIndex(
 4918                name: "ix_course_offerings_institution_id",
 4919                schema: "syki",
 4920                table: "course_offerings",
 4921                column: "institution_id");
 922
 4923            migrationBuilder.CreateIndex(
 4924                name: "ix_courses_institution_id",
 4925                schema: "syki",
 4926                table: "courses",
 4927                column: "institution_id");
 928
 4929            migrationBuilder.CreateIndex(
 4930                name: "ix_courses_disciplines_discipline_id",
 4931                schema: "syki",
 4932                table: "courses_disciplines",
 4933                column: "discipline_id");
 934
 4935            migrationBuilder.CreateIndex(
 4936                name: "ix_disciplines_code",
 4937                schema: "syki",
 4938                table: "disciplines",
 4939                column: "code",
 4940                unique: true);
 941
 4942            migrationBuilder.CreateIndex(
 4943                name: "ix_disciplines_institution_id",
 4944                schema: "syki",
 4945                table: "disciplines",
 4946                column: "institution_id");
 947
 4948            migrationBuilder.CreateIndex(
 4949                name: "ix_enrollment_periods_institution_id",
 4950                schema: "syki",
 4951                table: "enrollment_periods",
 4952                column: "institution_id");
 953
 4954            migrationBuilder.CreateIndex(
 4955                name: "ix_institution_roles_role_id",
 4956                schema: "syki",
 4957                table: "institution_roles",
 4958                column: "role_id");
 959
 4960            migrationBuilder.CreateIndex(
 4961                name: "ix_magic_links_user_id",
 4962                schema: "syki",
 4963                table: "magic_links",
 4964                column: "user_id");
 965
 4966            migrationBuilder.CreateIndex(
 4967                name: "ix_reset_password_tokens_institution_id",
 4968                table: "reset_password_tokens",
 4969                column: "institution_id");
 970
 4971            migrationBuilder.CreateIndex(
 4972                name: "ix_reset_password_tokens_token",
 4973                table: "reset_password_tokens",
 4974                column: "token",
 4975                unique: true);
 976
 4977            migrationBuilder.CreateIndex(
 4978                name: "ix_reset_password_tokens_user_id",
 4979                table: "reset_password_tokens",
 4980                column: "user_id");
 981
 4982            migrationBuilder.CreateIndex(
 4983                name: "ix_role_claims_role_id",
 4984                schema: "syki",
 4985                table: "role_claims",
 4986                column: "role_id");
 987
 4988            migrationBuilder.CreateIndex(
 4989                name: "ix_roles_owner_id_normalized_name",
 4990                schema: "syki",
 4991                table: "roles",
 4992                columns: new[] { "owner_id", "normalized_name" },
 4993                unique: true)
 4994                .Annotation("Npgsql:NullsDistinct", false);
 995
 4996            migrationBuilder.CreateIndex(
 4997                name: "role_name_index",
 4998                schema: "syki",
 4999                table: "roles",
 41000                column: "normalized_name");
 1001
 41002            migrationBuilder.CreateIndex(
 41003                name: "ix_sso_allowed_domains_sso_configuration_id",
 41004                schema: "syki",
 41005                table: "sso_allowed_domains",
 41006                column: "sso_configuration_id");
 1007
 41008            migrationBuilder.CreateIndex(
 41009                name: "ix_sso_configurations_institution_id",
 41010                schema: "syki",
 41011                table: "sso_configurations",
 41012                column: "institution_id");
 1013
 41014            migrationBuilder.CreateIndex(
 41015                name: "ix_sso_configurations_public_id",
 41016                schema: "syki",
 41017                table: "sso_configurations",
 41018                column: "public_id",
 41019                unique: true);
 1020
 41021            migrationBuilder.CreateIndex(
 41022                name: "ix_student_course_enrollments_course_offering_id",
 41023                schema: "syki",
 41024                table: "student_course_enrollments",
 41025                column: "course_offering_id");
 1026
 41027            migrationBuilder.CreateIndex(
 41028                name: "ix_student_course_enrollments_student_id",
 41029                schema: "syki",
 41030                table: "student_course_enrollments",
 41031                column: "student_id");
 1032
 41033            migrationBuilder.CreateIndex(
 41034                name: "ix_students_enrollment_code",
 41035                schema: "syki",
 41036                table: "students",
 41037                column: "enrollment_code",
 41038                unique: true);
 1039
 41040            migrationBuilder.CreateIndex(
 41041                name: "ix_students_institution_id_user_id",
 41042                schema: "syki",
 41043                table: "students",
 41044                columns: new[] { "institution_id", "user_id" },
 41045                unique: true);
 1046
 41047            migrationBuilder.CreateIndex(
 41048                name: "ix_teachers_institution_id_user_id",
 41049                schema: "syki",
 41050                table: "teachers",
 41051                columns: new[] { "institution_id", "user_id" },
 41052                unique: true);
 1053
 41054            migrationBuilder.CreateIndex(
 41055                name: "ix_teachers_campi_campus_id",
 41056                schema: "syki",
 41057                table: "teachers_campi",
 41058                column: "campus_id");
 1059
 41060            migrationBuilder.CreateIndex(
 41061                name: "ix_teachers_disciplines_discipline_id",
 41062                schema: "syki",
 41063                table: "teachers_disciplines",
 41064                column: "discipline_id");
 1065
 41066            migrationBuilder.CreateIndex(
 41067                name: "ix_user_claims_user_id",
 41068                schema: "syki",
 41069                table: "user_claims",
 41070                column: "user_id");
 1071
 41072            migrationBuilder.CreateIndex(
 41073                name: "ix_user_logins_user_id",
 41074                schema: "syki",
 41075                table: "user_logins",
 41076                column: "user_id");
 1077
 41078            migrationBuilder.CreateIndex(
 41079                name: "ix_user_roles_institution_id_user_id",
 41080                schema: "syki",
 41081                table: "user_roles",
 41082                columns: new[] { "institution_id", "user_id" },
 41083                unique: true);
 1084
 41085            migrationBuilder.CreateIndex(
 41086                name: "ix_user_roles_role_id",
 41087                schema: "syki",
 41088                table: "user_roles",
 41089                column: "role_id");
 1090
 41091            migrationBuilder.CreateIndex(
 41092                name: "ix_user_roles_user_id",
 41093                schema: "syki",
 41094                table: "user_roles",
 41095                column: "user_id");
 1096
 41097            migrationBuilder.CreateIndex(
 41098                name: "email_index",
 41099                schema: "syki",
 41100                table: "users",
 41101                column: "normalized_email");
 1102
 41103            migrationBuilder.CreateIndex(
 41104                name: "user_name_index",
 41105                schema: "syki",
 41106                table: "users",
 41107                column: "normalized_user_name",
 41108                unique: true);
 41109        }
 1110
 1111        /// <inheritdoc />
 1112        protected override void Down(MigrationBuilder migrationBuilder)
 1113        {
 01114            migrationBuilder.DropTable(
 01115                name: "audit_trails",
 01116                schema: "syki");
 1117
 01118            migrationBuilder.DropTable(
 01119                name: "command_batches",
 01120                schema: "syki");
 1121
 01122            migrationBuilder.DropTable(
 01123                name: "commands",
 01124                schema: "syki");
 1125
 01126            migrationBuilder.DropTable(
 01127                name: "course_curriculums_disciplines",
 01128                schema: "syki");
 1129
 01130            migrationBuilder.DropTable(
 01131                name: "courses_disciplines",
 01132                schema: "syki");
 1133
 01134            migrationBuilder.DropTable(
 01135                name: "data_protection_keys");
 1136
 01137            migrationBuilder.DropTable(
 01138                name: "enrollment_periods",
 01139                schema: "syki");
 1140
 01141            migrationBuilder.DropTable(
 01142                name: "institution_roles",
 01143                schema: "syki");
 1144
 01145            migrationBuilder.DropTable(
 01146                name: "magic_links",
 01147                schema: "syki");
 1148
 01149            migrationBuilder.DropTable(
 01150                name: "reset_password_tokens");
 1151
 01152            migrationBuilder.DropTable(
 01153                name: "role_claims",
 01154                schema: "syki");
 1155
 01156            migrationBuilder.DropTable(
 01157                name: "sso_allowed_domains",
 01158                schema: "syki");
 1159
 01160            migrationBuilder.DropTable(
 01161                name: "student_course_enrollments",
 01162                schema: "syki");
 1163
 01164            migrationBuilder.DropTable(
 01165                name: "teachers_campi",
 01166                schema: "syki");
 1167
 01168            migrationBuilder.DropTable(
 01169                name: "teachers_disciplines",
 01170                schema: "syki");
 1171
 01172            migrationBuilder.DropTable(
 01173                name: "user_claims",
 01174                schema: "syki");
 1175
 01176            migrationBuilder.DropTable(
 01177                name: "user_logins",
 01178                schema: "syki");
 1179
 01180            migrationBuilder.DropTable(
 01181                name: "user_roles",
 01182                schema: "syki");
 1183
 01184            migrationBuilder.DropTable(
 01185                name: "user_tokens",
 01186                schema: "syki");
 1187
 01188            migrationBuilder.DropTable(
 01189                name: "sso_configurations",
 01190                schema: "syki");
 1191
 01192            migrationBuilder.DropTable(
 01193                name: "course_offerings",
 01194                schema: "syki");
 1195
 01196            migrationBuilder.DropTable(
 01197                name: "students",
 01198                schema: "syki");
 1199
 01200            migrationBuilder.DropTable(
 01201                name: "disciplines",
 01202                schema: "syki");
 1203
 01204            migrationBuilder.DropTable(
 01205                name: "teachers",
 01206                schema: "syki");
 1207
 01208            migrationBuilder.DropTable(
 01209                name: "roles",
 01210                schema: "syki");
 1211
 01212            migrationBuilder.DropTable(
 01213                name: "academic_periods",
 01214                schema: "syki");
 1215
 01216            migrationBuilder.DropTable(
 01217                name: "campi",
 01218                schema: "syki");
 1219
 01220            migrationBuilder.DropTable(
 01221                name: "course_curriculums",
 01222                schema: "syki");
 1223
 01224            migrationBuilder.DropTable(
 01225                name: "users",
 01226                schema: "syki");
 1227
 01228            migrationBuilder.DropTable(
 01229                name: "courses",
 01230                schema: "syki");
 1231
 01232            migrationBuilder.DropTable(
 01233                name: "institutions",
 01234                schema: "syki");
 01235        }
 1236    }
 1237}

/home/runner/work/syki/syki/Back/Migrations/20260527011852_Bootstrap.Designer.cs

#LineLine coverage
 1// <auto-generated />
 2using System;
 3using System.Collections.Generic;
 4using System.Text.Json;
 5using Microsoft.EntityFrameworkCore;
 6using Microsoft.EntityFrameworkCore.Infrastructure;
 7using Microsoft.EntityFrameworkCore.Migrations;
 8using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
 9using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
 10using Syki.Back.Database;
 11
 12#nullable disable
 13
 14namespace Back.Migrations
 15{
 16    [DbContext(typeof(SykiDbContext))]
 17    [Migration("20260527011852_Bootstrap")]
 18    partial class Bootstrap
 19    {
 20        /// <inheritdoc />
 21        protected override void BuildTargetModel(ModelBuilder modelBuilder)
 22        {
 23#pragma warning disable 612, 618
 224            modelBuilder
 225                .HasAnnotation("ProductVersion", "10.0.7")
 226                .HasAnnotation("Relational:MaxIdentifierLength", 63);
 27
 228            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
 29
 230            modelBuilder.Entity("Microsoft.AspNetCore.DataProtection.EntityFrameworkCore.DataProtectionKey", b =>
 231                {
 232                    b.Property<int>("Id")
 233                        .ValueGeneratedOnAdd()
 234                        .HasColumnType("integer")
 235                        .HasColumnName("id");
 236
 237                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 238
 239                    b.Property<string>("FriendlyName")
 240                        .HasColumnType("text")
 241                        .HasColumnName("friendly_name");
 242
 243                    b.Property<string>("Xml")
 244                        .HasColumnType("text")
 245                        .HasColumnName("xml");
 246
 247                    b.HasKey("Id")
 248                        .HasName("pk_data_protection_keys");
 249
 250                    b.ToTable("data_protection_keys", (string)null);
 451                });
 52
 253            modelBuilder.Entity("Syki.Back.Audit.AuditTrail", b =>
 254                {
 255                    b.Property<int>("Id")
 256                        .ValueGeneratedOnAdd()
 257                        .HasColumnType("integer")
 258                        .HasColumnName("id");
 259
 260                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 261
 262                    b.Property<string>("Action")
 263                        .IsRequired()
 264                        .HasColumnType("text")
 265                        .HasColumnName("action");
 266
 267                    b.Property<string>("ActivityId")
 268                        .IsRequired()
 269                        .HasColumnType("text")
 270                        .HasColumnName("activity_id");
 271
 272                    b.Property<DateTime>("CreatedAt")
 273                        .HasColumnType("timestamp with time zone")
 274                        .HasColumnName("created_at");
 275
 276                    b.Property<JsonDocument>("Data")
 277                        .IsRequired()
 278                        .HasColumnType("jsonb")
 279                        .HasColumnName("data");
 280
 281                    b.Property<string>("EntityId")
 282                        .IsRequired()
 283                        .HasColumnType("text")
 284                        .HasColumnName("entity_id");
 285
 286                    b.Property<string>("EntityType")
 287                        .IsRequired()
 288                        .HasColumnType("text")
 289                        .HasColumnName("entity_type");
 290
 291                    b.Property<int>("InstitutionId")
 292                        .HasColumnType("integer")
 293                        .HasColumnName("institution_id");
 294
 295                    b.Property<string>("Operation")
 296                        .IsRequired()
 297                        .HasColumnType("text")
 298                        .HasColumnName("operation");
 299
 2100                    b.Property<int>("UserId")
 2101                        .HasColumnType("integer")
 2102                        .HasColumnName("user_id");
 2103
 2104                    b.HasKey("Id")
 2105                        .HasName("pk_audit_trails");
 2106
 2107                    b.ToTable("audit_trails", "syki");
 4108                });
 109
 2110            modelBuilder.Entity("Syki.Back.Commands.Domain.Commands.Command", b =>
 2111                {
 2112                    b.Property<int>("Id")
 2113                        .ValueGeneratedOnAdd()
 2114                        .HasColumnType("integer")
 2115                        .HasColumnName("id");
 2116
 2117                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 2118
 2119                    b.Property<string>("ActivityId")
 2120                        .HasColumnType("text")
 2121                        .HasColumnName("activity_id");
 2122
 2123                    b.Property<int>("BackoffStrategy")
 2124                        .HasColumnType("integer")
 2125                        .HasColumnName("backoff_strategy");
 2126
 2127                    b.Property<int>("BaseDelaySeconds")
 2128                        .HasColumnType("integer")
 2129                        .HasColumnName("base_delay_seconds");
 2130
 2131                    b.Property<int?>("BatchId")
 2132                        .HasColumnType("integer")
 2133                        .HasColumnName("batch_id");
 2134
 2135                    b.Property<DateTime>("CreatedAt")
 2136                        .HasColumnType("timestamp with time zone")
 2137                        .HasColumnName("created_at");
 2138
 2139                    b.Property<string>("Data")
 2140                        .IsRequired()
 2141                        .HasColumnType("text")
 2142                        .HasColumnName("data");
 2143
 2144                    b.Property<int>("Duration")
 2145                        .HasColumnType("integer")
 2146                        .HasColumnName("duration");
 2147
 2148                    b.Property<string>("Error")
 2149                        .HasColumnType("text")
 2150                        .HasColumnName("error");
 2151
 2152                    b.Property<int>("InstitutionId")
 2153                        .HasColumnType("integer")
 2154                        .HasColumnName("institution_id");
 2155
 2156                    b.PrimitiveCollection<List<string>>("Logs")
 2157                        .IsRequired()
 2158                        .HasColumnType("text[]")
 2159                        .HasColumnName("logs");
 2160
 2161                    b.Property<int>("MaxRetries")
 2162                        .HasColumnType("integer")
 2163                        .HasColumnName("max_retries");
 2164
 2165                    b.Property<DateTime?>("NotBefore")
 2166                        .HasColumnType("timestamp with time zone")
 2167                        .HasColumnName("not_before");
 2168
 2169                    b.Property<int?>("OriginalId")
 2170                        .HasColumnType("integer")
 2171                        .HasColumnName("original_id");
 2172
 2173                    b.Property<int?>("ParentId")
 2174                        .HasColumnType("integer")
 2175                        .HasColumnName("parent_id");
 2176
 2177                    b.Property<DateTime?>("ProcessedAt")
 2178                        .HasColumnType("timestamp with time zone")
 2179                        .HasColumnName("processed_at");
 2180
 2181                    b.Property<Guid?>("ProcessorId")
 2182                        .HasColumnType("uuid")
 2183                        .HasColumnName("processor_id");
 2184
 2185                    b.Property<int>("RetryAttempt")
 2186                        .HasColumnType("integer")
 2187                        .HasColumnName("retry_attempt");
 2188
 2189                    b.Property<int>("Status")
 2190                        .HasColumnType("integer")
 2191                        .HasColumnName("status");
 2192
 2193                    b.Property<string>("Type")
 2194                        .IsRequired()
 2195                        .HasColumnType("text")
 2196                        .HasColumnName("type");
 2197
 2198                    b.HasKey("Id")
 2199                        .HasName("pk_commands");
 2200
 2201                    b.HasIndex("InstitutionId")
 2202                        .HasDatabaseName("ix_commands_institution_id");
 2203
 2204                    b.ToTable("commands", "syki");
 4205                });
 206
 2207            modelBuilder.Entity("Syki.Back.Commands.Domain.Commands.CommandBatch", b =>
 2208                {
 2209                    b.Property<int>("Id")
 2210                        .ValueGeneratedOnAdd()
 2211                        .HasColumnType("integer")
 2212                        .HasColumnName("id");
 2213
 2214                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 2215
 2216                    b.Property<DateTime>("CreatedAt")
 2217                        .HasColumnType("timestamp with time zone")
 2218                        .HasColumnName("created_at");
 2219
 2220                    b.Property<int>("InstitutionId")
 2221                        .HasColumnType("integer")
 2222                        .HasColumnName("institution_id");
 2223
 2224                    b.Property<int?>("NextCommandId")
 2225                        .HasColumnType("integer")
 2226                        .HasColumnName("next_command_id");
 2227
 2228                    b.Property<DateTime?>("ProcessedAt")
 2229                        .HasColumnType("timestamp with time zone")
 2230                        .HasColumnName("processed_at");
 2231
 2232                    b.Property<int>("Size")
 2233                        .HasColumnType("integer")
 2234                        .HasColumnName("size");
 2235
 2236                    b.Property<int?>("SourceCommandId")
 2237                        .HasColumnType("integer")
 2238                        .HasColumnName("source_command_id");
 2239
 2240                    b.Property<int>("Status")
 2241                        .HasColumnType("integer")
 2242                        .HasColumnName("status");
 2243
 2244                    b.Property<int>("Type")
 2245                        .HasColumnType("integer")
 2246                        .HasColumnName("type");
 2247
 2248                    b.HasKey("Id")
 2249                        .HasName("pk_command_batches");
 2250
 2251                    b.ToTable("command_batches", "syki");
 4252                });
 253
 2254            modelBuilder.Entity("Syki.Back.Domain.Campi.Campus", b =>
 2255                {
 2256                    b.Property<int>("Id")
 2257                        .ValueGeneratedOnAdd()
 2258                        .HasColumnType("integer")
 2259                        .HasColumnName("id");
 2260
 2261                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 2262
 2263                    b.Property<int>("Capacity")
 2264                        .HasColumnType("integer")
 2265                        .HasColumnName("capacity");
 2266
 2267                    b.Property<string>("City")
 2268                        .IsRequired()
 2269                        .HasColumnType("text")
 2270                        .HasColumnName("city");
 2271
 2272                    b.Property<int>("InstitutionId")
 2273                        .HasColumnType("integer")
 2274                        .HasColumnName("institution_id");
 2275
 2276                    b.Property<string>("Name")
 2277                        .IsRequired()
 2278                        .HasColumnType("text")
 2279                        .HasColumnName("name");
 2280
 2281                    b.Property<int>("State")
 2282                        .HasColumnType("integer")
 2283                        .HasColumnName("state");
 2284
 2285                    b.HasKey("Id")
 2286                        .HasName("pk_campi");
 2287
 2288                    b.HasIndex("InstitutionId")
 2289                        .HasDatabaseName("ix_campi_institution_id");
 2290
 2291                    b.ToTable("campi", "syki");
 4292                });
 293
 2294            modelBuilder.Entity("Syki.Back.Domain.CourseCurriculums.CourseCurriculum", b =>
 2295                {
 2296                    b.Property<int>("Id")
 2297                        .ValueGeneratedOnAdd()
 2298                        .HasColumnType("integer")
 2299                        .HasColumnName("id");
 2300
 2301                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 2302
 2303                    b.Property<int>("CourseId")
 2304                        .HasColumnType("integer")
 2305                        .HasColumnName("course_id");
 2306
 2307                    b.Property<int>("InstitutionId")
 2308                        .HasColumnType("integer")
 2309                        .HasColumnName("institution_id");
 2310
 2311                    b.Property<string>("Name")
 2312                        .IsRequired()
 2313                        .HasColumnType("text")
 2314                        .HasColumnName("name");
 2315
 2316                    b.HasKey("Id")
 2317                        .HasName("pk_course_curriculums");
 2318
 2319                    b.HasIndex("CourseId")
 2320                        .HasDatabaseName("ix_course_curriculums_course_id");
 2321
 2322                    b.HasIndex("InstitutionId")
 2323                        .HasDatabaseName("ix_course_curriculums_institution_id");
 2324
 2325                    b.ToTable("course_curriculums", "syki");
 4326                });
 327
 2328            modelBuilder.Entity("Syki.Back.Domain.CourseCurriculums.CourseCurriculumDiscipline", b =>
 2329                {
 2330                    b.Property<int>("CourseCurriculumId")
 2331                        .HasColumnType("integer")
 2332                        .HasColumnName("course_curriculum_id");
 2333
 2334                    b.Property<int>("DisciplineId")
 2335                        .HasColumnType("integer")
 2336                        .HasColumnName("discipline_id");
 2337
 2338                    b.Property<byte>("Credits")
 2339                        .HasColumnType("smallint")
 2340                        .HasColumnName("credits");
 2341
 2342                    b.Property<byte>("Period")
 2343                        .HasColumnType("smallint")
 2344                        .HasColumnName("period");
 2345
 2346                    b.Property<int>("Workload")
 2347                        .HasColumnType("integer")
 2348                        .HasColumnName("workload");
 2349
 2350                    b.HasKey("CourseCurriculumId", "DisciplineId")
 2351                        .HasName("pk_course_curriculums_disciplines");
 2352
 2353                    b.HasIndex("DisciplineId")
 2354                        .HasDatabaseName("ix_course_curriculums_disciplines_discipline_id");
 2355
 2356                    b.ToTable("course_curriculums_disciplines", "syki");
 4357                });
 358
 2359            modelBuilder.Entity("Syki.Back.Domain.CourseOfferings.CourseOffering", b =>
 2360                {
 2361                    b.Property<int>("Id")
 2362                        .ValueGeneratedOnAdd()
 2363                        .HasColumnType("integer")
 2364                        .HasColumnName("id");
 2365
 2366                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 2367
 2368                    b.Property<int>("AcademicPeriodId")
 2369                        .HasColumnType("integer")
 2370                        .HasColumnName("academic_period_id");
 2371
 2372                    b.Property<int>("CampusId")
 2373                        .HasColumnType("integer")
 2374                        .HasColumnName("campus_id");
 2375
 2376                    b.Property<int>("CourseCurriculumId")
 2377                        .HasColumnType("integer")
 2378                        .HasColumnName("course_curriculum_id");
 2379
 2380                    b.Property<int>("CourseId")
 2381                        .HasColumnType("integer")
 2382                        .HasColumnName("course_id");
 2383
 2384                    b.Property<int>("InstitutionId")
 2385                        .HasColumnType("integer")
 2386                        .HasColumnName("institution_id");
 2387
 2388                    b.Property<int>("Session")
 2389                        .HasColumnType("integer")
 2390                        .HasColumnName("session");
 2391
 2392                    b.HasKey("Id")
 2393                        .HasName("pk_course_offerings");
 2394
 2395                    b.HasIndex("AcademicPeriodId")
 2396                        .HasDatabaseName("ix_course_offerings_academic_period_id");
 2397
 2398                    b.HasIndex("CampusId")
 2399                        .HasDatabaseName("ix_course_offerings_campus_id");
 2400
 2401                    b.HasIndex("CourseCurriculumId")
 2402                        .HasDatabaseName("ix_course_offerings_course_curriculum_id");
 2403
 2404                    b.HasIndex("CourseId")
 2405                        .HasDatabaseName("ix_course_offerings_course_id");
 2406
 2407                    b.HasIndex("InstitutionId")
 2408                        .HasDatabaseName("ix_course_offerings_institution_id");
 2409
 2410                    b.ToTable("course_offerings", "syki");
 4411                });
 412
 2413            modelBuilder.Entity("Syki.Back.Domain.Courses.Course", b =>
 2414                {
 2415                    b.Property<int>("Id")
 2416                        .ValueGeneratedOnAdd()
 2417                        .HasColumnType("integer")
 2418                        .HasColumnName("id");
 2419
 2420                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 2421
 2422                    b.Property<int>("CourseType")
 2423                        .HasColumnType("integer")
 2424                        .HasColumnName("course_type");
 2425
 2426                    b.Property<int>("InstitutionId")
 2427                        .HasColumnType("integer")
 2428                        .HasColumnName("institution_id");
 2429
 2430                    b.Property<string>("Name")
 2431                        .IsRequired()
 2432                        .HasColumnType("text")
 2433                        .HasColumnName("name");
 2434
 2435                    b.HasKey("Id")
 2436                        .HasName("pk_courses");
 2437
 2438                    b.HasIndex("InstitutionId")
 2439                        .HasDatabaseName("ix_courses_institution_id");
 2440
 2441                    b.ToTable("courses", "syki");
 4442                });
 443
 2444            modelBuilder.Entity("Syki.Back.Domain.Courses.CourseDiscipline", b =>
 2445                {
 2446                    b.Property<int>("CourseId")
 2447                        .HasColumnType("integer")
 2448                        .HasColumnName("course_id");
 2449
 2450                    b.Property<int>("DisciplineId")
 2451                        .HasColumnType("integer")
 2452                        .HasColumnName("discipline_id");
 2453
 2454                    b.HasKey("CourseId", "DisciplineId")
 2455                        .HasName("pk_courses_disciplines");
 2456
 2457                    b.HasIndex("DisciplineId")
 2458                        .HasDatabaseName("ix_courses_disciplines_discipline_id");
 2459
 2460                    b.ToTable("courses_disciplines", "syki");
 4461                });
 462
 2463            modelBuilder.Entity("Syki.Back.Domain.Disciplines.Discipline", b =>
 2464                {
 2465                    b.Property<int>("Id")
 2466                        .ValueGeneratedOnAdd()
 2467                        .HasColumnType("integer")
 2468                        .HasColumnName("id");
 2469
 2470                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 2471
 2472                    b.Property<string>("Code")
 2473                        .IsRequired()
 2474                        .HasColumnType("text")
 2475                        .HasColumnName("code");
 2476
 2477                    b.Property<int>("InstitutionId")
 2478                        .HasColumnType("integer")
 2479                        .HasColumnName("institution_id");
 2480
 2481                    b.Property<string>("Name")
 2482                        .IsRequired()
 2483                        .HasColumnType("text")
 2484                        .HasColumnName("name");
 2485
 2486                    b.HasKey("Id")
 2487                        .HasName("pk_disciplines");
 2488
 2489                    b.HasIndex("Code")
 2490                        .IsUnique()
 2491                        .HasDatabaseName("ix_disciplines_code");
 2492
 2493                    b.HasIndex("InstitutionId")
 2494                        .HasDatabaseName("ix_disciplines_institution_id");
 2495
 2496                    b.ToTable("disciplines", "syki");
 4497                });
 498
 2499            modelBuilder.Entity("Syki.Back.Domain.Identity.InstitutionRole", b =>
 2500                {
 2501                    b.Property<int>("InstitutionId")
 2502                        .HasColumnType("integer")
 2503                        .HasColumnName("institution_id");
 2504
 2505                    b.Property<int>("RoleId")
 2506                        .HasColumnType("integer")
 2507                        .HasColumnName("role_id");
 2508
 2509                    b.HasKey("InstitutionId", "RoleId")
 2510                        .HasName("pk_institution_roles");
 2511
 2512                    b.HasIndex("RoleId")
 2513                        .HasDatabaseName("ix_institution_roles_role_id");
 2514
 2515                    b.ToTable("institution_roles", "syki");
 4516                });
 517
 2518            modelBuilder.Entity("Syki.Back.Domain.Identity.MagicLink", b =>
 2519                {
 2520                    b.Property<Guid>("Id")
 2521                        .HasColumnType("uuid")
 2522                        .HasColumnName("id");
 2523
 2524                    b.Property<DateTime>("CreatedAt")
 2525                        .HasColumnType("timestamp with time zone")
 2526                        .HasColumnName("created_at");
 2527
 2528                    b.Property<DateTime>("ExpiresAt")
 2529                        .HasColumnType("timestamp with time zone")
 2530                        .HasColumnName("expires_at");
 2531
 2532                    b.Property<DateTime?>("UsedAt")
 2533                        .HasColumnType("timestamp with time zone")
 2534                        .HasColumnName("used_at");
 2535
 2536                    b.Property<int>("UserId")
 2537                        .HasColumnType("integer")
 2538                        .HasColumnName("user_id");
 2539
 2540                    b.HasKey("Id")
 2541                        .HasName("pk_magic_links");
 2542
 2543                    b.HasIndex("UserId")
 2544                        .HasDatabaseName("ix_magic_links_user_id");
 2545
 2546                    b.ToTable("magic_links", "syki");
 4547                });
 548
 2549            modelBuilder.Entity("Syki.Back.Domain.Identity.ResetPasswordToken", b =>
 2550                {
 2551                    b.Property<Guid>("Id")
 2552                        .HasColumnType("uuid")
 2553                        .HasColumnName("id");
 2554
 2555                    b.Property<DateTime>("CreatedAt")
 2556                        .HasColumnType("timestamp with time zone")
 2557                        .HasColumnName("created_at");
 2558
 2559                    b.Property<DateTime>("ExpiresAt")
 2560                        .HasColumnType("timestamp with time zone")
 2561                        .HasColumnName("expires_at");
 2562
 2563                    b.Property<int>("InstitutionId")
 2564                        .HasColumnType("integer")
 2565                        .HasColumnName("institution_id");
 2566
 2567                    b.Property<string>("Token")
 2568                        .IsRequired()
 2569                        .HasColumnType("text")
 2570                        .HasColumnName("token");
 2571
 2572                    b.Property<DateTime?>("UsedAt")
 2573                        .HasColumnType("timestamp with time zone")
 2574                        .HasColumnName("used_at");
 2575
 2576                    b.Property<int>("UserId")
 2577                        .HasColumnType("integer")
 2578                        .HasColumnName("user_id");
 2579
 2580                    b.HasKey("Id")
 2581                        .HasName("pk_reset_password_tokens");
 2582
 2583                    b.HasIndex("InstitutionId")
 2584                        .HasDatabaseName("ix_reset_password_tokens_institution_id");
 2585
 2586                    b.HasIndex("Token")
 2587                        .IsUnique()
 2588                        .HasDatabaseName("ix_reset_password_tokens_token");
 2589
 2590                    b.HasIndex("UserId")
 2591                        .HasDatabaseName("ix_reset_password_tokens_user_id");
 2592
 2593                    b.ToTable("reset_password_tokens", (string)null);
 4594                });
 595
 2596            modelBuilder.Entity("Syki.Back.Domain.Identity.SsoAllowedDomain", b =>
 2597                {
 2598                    b.Property<string>("Domain")
 2599                        .HasColumnType("text")
 2600                        .HasColumnName("domain");
 2601
 2602                    b.Property<int>("SsoConfigurationId")
 2603                        .HasColumnType("integer")
 2604                        .HasColumnName("sso_configuration_id");
 2605
 2606                    b.HasKey("Domain")
 2607                        .HasName("pk_sso_allowed_domains");
 2608
 2609                    b.HasIndex("SsoConfigurationId")
 2610                        .HasDatabaseName("ix_sso_allowed_domains_sso_configuration_id");
 2611
 2612                    b.ToTable("sso_allowed_domains", "syki");
 4613                });
 614
 2615            modelBuilder.Entity("Syki.Back.Domain.Identity.SsoConfiguration", b =>
 2616                {
 2617                    b.Property<int>("Id")
 2618                        .ValueGeneratedOnAdd()
 2619                        .HasColumnType("integer")
 2620                        .HasColumnName("id");
 2621
 2622                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 2623
 2624                    b.Property<string>("Authority")
 2625                        .IsRequired()
 2626                        .HasColumnType("text")
 2627                        .HasColumnName("authority");
 2628
 2629                    b.Property<string>("ClientId")
 2630                        .IsRequired()
 2631                        .HasColumnType("text")
 2632                        .HasColumnName("client_id");
 2633
 2634                    b.Property<string>("ClientSecret")
 2635                        .IsRequired()
 2636                        .HasColumnType("text")
 2637                        .HasColumnName("client_secret");
 2638
 2639                    b.Property<DateTime>("CreatedAt")
 2640                        .HasColumnType("timestamp with time zone")
 2641                        .HasColumnName("created_at");
 2642
 2643                    b.Property<int>("InstitutionId")
 2644                        .HasColumnType("integer")
 2645                        .HasColumnName("institution_id");
 2646
 2647                    b.Property<bool>("IsActive")
 2648                        .HasColumnType("boolean")
 2649                        .HasColumnName("is_active");
 2650
 2651                    b.Property<int>("ProviderType")
 2652                        .HasColumnType("integer")
 2653                        .HasColumnName("provider_type");
 2654
 2655                    b.Property<Guid>("PublicId")
 2656                        .HasColumnType("uuid")
 2657                        .HasColumnName("public_id");
 2658
 2659                    b.Property<bool>("RequireSso")
 2660                        .HasColumnType("boolean")
 2661                        .HasColumnName("require_sso");
 2662
 2663                    b.Property<DateTime>("UpdatedAt")
 2664                        .HasColumnType("timestamp with time zone")
 2665                        .HasColumnName("updated_at");
 2666
 2667                    b.HasKey("Id")
 2668                        .HasName("pk_sso_configurations");
 2669
 2670                    b.HasIndex("InstitutionId")
 2671                        .HasDatabaseName("ix_sso_configurations_institution_id");
 2672
 2673                    b.HasIndex("PublicId")
 2674                        .IsUnique()
 2675                        .HasDatabaseName("ix_sso_configurations_public_id");
 2676
 2677                    b.ToTable("sso_configurations", "syki");
 4678                });
 679
 2680            modelBuilder.Entity("Syki.Back.Domain.Identity.SykiRole", b =>
 2681                {
 2682                    b.Property<int>("Id")
 2683                        .ValueGeneratedOnAdd()
 2684                        .HasColumnType("integer")
 2685                        .HasColumnName("id");
 2686
 2687                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 2688
 2689                    b.Property<string>("ConcurrencyStamp")
 2690                        .IsConcurrencyToken()
 2691                        .HasColumnType("text")
 2692                        .HasColumnName("concurrency_stamp");
 2693
 2694                    b.Property<string>("Description")
 2695                        .IsRequired()
 2696                        .HasColumnType("text")
 2697                        .HasColumnName("description");
 2698
 2699                    b.Property<string>("Name")
 2700                        .HasMaxLength(256)
 2701                        .HasColumnType("character varying(256)")
 2702                        .HasColumnName("name");
 2703
 2704                    b.Property<string>("NormalizedName")
 2705                        .HasMaxLength(256)
 2706                        .HasColumnType("character varying(256)")
 2707                        .HasColumnName("normalized_name");
 2708
 2709                    b.Property<int?>("OwnerId")
 2710                        .HasColumnType("integer")
 2711                        .HasColumnName("owner_id");
 2712
 2713                    b.PrimitiveCollection<List<int>>("Permissions")
 2714                        .IsRequired()
 2715                        .HasColumnType("integer[]")
 2716                        .HasColumnName("permissions");
 2717
 2718                    b.HasKey("Id")
 2719                        .HasName("pk_roles");
 2720
 2721                    b.HasIndex("NormalizedName")
 2722                        .HasDatabaseName("role_name_index");
 2723
 2724                    b.HasIndex("OwnerId", "NormalizedName")
 2725                        .IsUnique()
 2726                        .HasDatabaseName("ix_roles_owner_id_normalized_name");
 2727
 2728                    NpgsqlIndexBuilderExtensions.AreNullsDistinct(b.HasIndex("OwnerId", "NormalizedName"), false);
 2729
 2730                    b.ToTable("roles", "syki");
 4731                });
 732
 2733            modelBuilder.Entity("Syki.Back.Domain.Identity.SykiRoleClaim", b =>
 2734                {
 2735                    b.Property<int>("Id")
 2736                        .ValueGeneratedOnAdd()
 2737                        .HasColumnType("integer")
 2738                        .HasColumnName("id");
 2739
 2740                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 2741
 2742                    b.Property<string>("ClaimType")
 2743                        .HasColumnType("text")
 2744                        .HasColumnName("claim_type");
 2745
 2746                    b.Property<string>("ClaimValue")
 2747                        .HasColumnType("text")
 2748                        .HasColumnName("claim_value");
 2749
 2750                    b.Property<int>("RoleId")
 2751                        .HasColumnType("integer")
 2752                        .HasColumnName("role_id");
 2753
 2754                    b.HasKey("Id")
 2755                        .HasName("pk_role_claims");
 2756
 2757                    b.HasIndex("RoleId")
 2758                        .HasDatabaseName("ix_role_claims_role_id");
 2759
 2760                    b.ToTable("role_claims", "syki");
 4761                });
 762
 2763            modelBuilder.Entity("Syki.Back.Domain.Identity.SykiUser", b =>
 2764                {
 2765                    b.Property<int>("Id")
 2766                        .ValueGeneratedOnAdd()
 2767                        .HasColumnType("integer")
 2768                        .HasColumnName("id");
 2769
 2770                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 2771
 2772                    b.Property<int>("AccessFailedCount")
 2773                        .HasColumnType("integer")
 2774                        .HasColumnName("access_failed_count");
 2775
 2776                    b.Property<string>("ConcurrencyStamp")
 2777                        .IsConcurrencyToken()
 2778                        .HasColumnType("text")
 2779                        .HasColumnName("concurrency_stamp");
 2780
 2781                    b.Property<DateTime>("CreatedAt")
 2782                        .HasColumnType("timestamp with time zone")
 2783                        .HasColumnName("created_at");
 2784
 2785                    b.Property<string>("Email")
 2786                        .HasMaxLength(256)
 2787                        .HasColumnType("character varying(256)")
 2788                        .HasColumnName("email");
 2789
 2790                    b.Property<bool>("EmailConfirmed")
 2791                        .HasColumnType("boolean")
 2792                        .HasColumnName("email_confirmed");
 2793
 2794                    b.Property<int>("InstitutionId")
 2795                        .HasColumnType("integer")
 2796                        .HasColumnName("institution_id");
 2797
 2798                    b.Property<bool>("LockoutEnabled")
 2799                        .HasColumnType("boolean")
 2800                        .HasColumnName("lockout_enabled");
 2801
 2802                    b.Property<DateTimeOffset?>("LockoutEnd")
 2803                        .HasColumnType("timestamp with time zone")
 2804                        .HasColumnName("lockout_end");
 2805
 2806                    b.Property<string>("Name")
 2807                        .IsRequired()
 2808                        .HasColumnType("text")
 2809                        .HasColumnName("name");
 2810
 2811                    b.Property<string>("NormalizedEmail")
 2812                        .HasMaxLength(256)
 2813                        .HasColumnType("character varying(256)")
 2814                        .HasColumnName("normalized_email");
 2815
 2816                    b.Property<string>("NormalizedUserName")
 2817                        .HasMaxLength(256)
 2818                        .HasColumnType("character varying(256)")
 2819                        .HasColumnName("normalized_user_name");
 2820
 2821                    b.Property<string>("PasswordHash")
 2822                        .HasColumnType("text")
 2823                        .HasColumnName("password_hash");
 2824
 2825                    b.Property<string>("PhoneNumber")
 2826                        .HasColumnType("text")
 2827                        .HasColumnName("phone_number");
 2828
 2829                    b.Property<bool>("PhoneNumberConfirmed")
 2830                        .HasColumnType("boolean")
 2831                        .HasColumnName("phone_number_confirmed");
 2832
 2833                    b.Property<string>("ProfilePhoto")
 2834                        .HasColumnType("text")
 2835                        .HasColumnName("profile_photo");
 2836
 2837                    b.Property<string>("SecurityStamp")
 2838                        .HasColumnType("text")
 2839                        .HasColumnName("security_stamp");
 2840
 2841                    b.Property<bool>("TwoFactorEnabled")
 2842                        .HasColumnType("boolean")
 2843                        .HasColumnName("two_factor_enabled");
 2844
 2845                    b.Property<string>("UserName")
 2846                        .HasMaxLength(256)
 2847                        .HasColumnType("character varying(256)")
 2848                        .HasColumnName("user_name");
 2849
 2850                    b.HasKey("Id")
 2851                        .HasName("pk_users");
 2852
 2853                    b.HasAlternateKey("InstitutionId", "Id")
 2854                        .HasName("ak_asp_net_users_institution_id_id");
 2855
 2856                    b.HasIndex("NormalizedEmail")
 2857                        .HasDatabaseName("email_index");
 2858
 2859                    b.HasIndex("NormalizedUserName")
 2860                        .IsUnique()
 2861                        .HasDatabaseName("user_name_index");
 2862
 2863                    b.ToTable("users", "syki");
 4864                });
 865
 2866            modelBuilder.Entity("Syki.Back.Domain.Identity.SykiUserClaim", b =>
 2867                {
 2868                    b.Property<int>("Id")
 2869                        .ValueGeneratedOnAdd()
 2870                        .HasColumnType("integer")
 2871                        .HasColumnName("id");
 2872
 2873                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 2874
 2875                    b.Property<string>("ClaimType")
 2876                        .HasColumnType("text")
 2877                        .HasColumnName("claim_type");
 2878
 2879                    b.Property<string>("ClaimValue")
 2880                        .HasColumnType("text")
 2881                        .HasColumnName("claim_value");
 2882
 2883                    b.Property<int>("UserId")
 2884                        .HasColumnType("integer")
 2885                        .HasColumnName("user_id");
 2886
 2887                    b.HasKey("Id")
 2888                        .HasName("pk_user_claims");
 2889
 2890                    b.HasIndex("UserId")
 2891                        .HasDatabaseName("ix_user_claims_user_id");
 2892
 2893                    b.ToTable("user_claims", "syki");
 4894                });
 895
 2896            modelBuilder.Entity("Syki.Back.Domain.Identity.SykiUserLogin", b =>
 2897                {
 2898                    b.Property<string>("LoginProvider")
 2899                        .HasColumnType("text")
 2900                        .HasColumnName("login_provider");
 2901
 2902                    b.Property<string>("ProviderKey")
 2903                        .HasColumnType("text")
 2904                        .HasColumnName("provider_key");
 2905
 2906                    b.Property<string>("ProviderDisplayName")
 2907                        .HasColumnType("text")
 2908                        .HasColumnName("provider_display_name");
 2909
 2910                    b.Property<int>("UserId")
 2911                        .HasColumnType("integer")
 2912                        .HasColumnName("user_id");
 2913
 2914                    b.HasKey("LoginProvider", "ProviderKey")
 2915                        .HasName("pk_user_logins");
 2916
 2917                    b.HasIndex("UserId")
 2918                        .HasDatabaseName("ix_user_logins_user_id");
 2919
 2920                    b.ToTable("user_logins", "syki");
 4921                });
 922
 2923            modelBuilder.Entity("Syki.Back.Domain.Identity.SykiUserRole", b =>
 2924                {
 2925                    b.Property<int>("InstitutionId")
 2926                        .HasColumnType("integer")
 2927                        .HasColumnName("institution_id");
 2928
 2929                    b.Property<int>("UserId")
 2930                        .HasColumnType("integer")
 2931                        .HasColumnName("user_id");
 2932
 2933                    b.Property<int>("RoleId")
 2934                        .HasColumnType("integer")
 2935                        .HasColumnName("role_id");
 2936
 2937                    b.HasKey("InstitutionId", "UserId", "RoleId")
 2938                        .HasName("pk_user_roles");
 2939
 2940                    b.HasIndex("RoleId")
 2941                        .HasDatabaseName("ix_user_roles_role_id");
 2942
 2943                    b.HasIndex("UserId")
 2944                        .HasDatabaseName("ix_user_roles_user_id");
 2945
 2946                    b.HasIndex("InstitutionId", "UserId")
 2947                        .IsUnique()
 2948                        .HasDatabaseName("ix_user_roles_institution_id_user_id");
 2949
 2950                    b.ToTable("user_roles", "syki");
 4951                });
 952
 2953            modelBuilder.Entity("Syki.Back.Domain.Identity.SykiUserToken", b =>
 2954                {
 2955                    b.Property<int>("UserId")
 2956                        .HasColumnType("integer")
 2957                        .HasColumnName("user_id");
 2958
 2959                    b.Property<string>("LoginProvider")
 2960                        .HasColumnType("text")
 2961                        .HasColumnName("login_provider");
 2962
 2963                    b.Property<string>("Name")
 2964                        .HasColumnType("text")
 2965                        .HasColumnName("name");
 2966
 2967                    b.Property<string>("Value")
 2968                        .HasColumnType("text")
 2969                        .HasColumnName("value");
 2970
 2971                    b.HasKey("UserId", "LoginProvider", "Name")
 2972                        .HasName("pk_user_tokens");
 2973
 2974                    b.ToTable("user_tokens", "syki");
 4975                });
 976
 2977            modelBuilder.Entity("Syki.Back.Domain.Institutions.Institution", b =>
 2978                {
 2979                    b.Property<int>("Id")
 2980                        .ValueGeneratedOnAdd()
 2981                        .HasColumnType("integer")
 2982                        .HasColumnName("id");
 2983
 2984                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 2985
 2986                    b.Property<DateTime>("CreatedAt")
 2987                        .HasColumnType("timestamp with time zone")
 2988                        .HasColumnName("created_at");
 2989
 2990                    b.Property<string>("Name")
 2991                        .IsRequired()
 2992                        .HasColumnType("text")
 2993                        .HasColumnName("name");
 2994
 2995                    b.HasKey("Id")
 2996                        .HasName("pk_institutions");
 2997
 2998                    b.ToTable("institutions", "syki");
 4999                });
 1000
 21001            modelBuilder.Entity("Syki.Back.Domain.Periods.AcademicPeriod", b =>
 21002                {
 21003                    b.Property<int>("Id")
 21004                        .ValueGeneratedOnAdd()
 21005                        .HasColumnType("integer")
 21006                        .HasColumnName("id");
 21007
 21008                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 21009
 21010                    b.Property<DateOnly>("EndAt")
 21011                        .HasColumnType("date")
 21012                        .HasColumnName("end_at");
 21013
 21014                    b.Property<int>("InstitutionId")
 21015                        .HasColumnType("integer")
 21016                        .HasColumnName("institution_id");
 21017
 21018                    b.Property<string>("Name")
 21019                        .IsRequired()
 21020                        .HasColumnType("text")
 21021                        .HasColumnName("name");
 21022
 21023                    b.Property<DateOnly>("StartAt")
 21024                        .HasColumnType("date")
 21025                        .HasColumnName("start_at");
 21026
 21027                    b.HasKey("Id")
 21028                        .HasName("pk_academic_periods");
 21029
 21030                    b.HasIndex("InstitutionId")
 21031                        .HasDatabaseName("ix_academic_periods_institution_id");
 21032
 21033                    b.ToTable("academic_periods", "syki");
 41034                });
 1035
 21036            modelBuilder.Entity("Syki.Back.Domain.Periods.EnrollmentPeriod", b =>
 21037                {
 21038                    b.Property<int>("Id")
 21039                        .ValueGeneratedOnAdd()
 21040                        .HasColumnType("integer")
 21041                        .HasColumnName("id");
 21042
 21043                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 21044
 21045                    b.Property<DateOnly>("EndAt")
 21046                        .HasColumnType("date")
 21047                        .HasColumnName("end_at");
 21048
 21049                    b.Property<int>("InstitutionId")
 21050                        .HasColumnType("integer")
 21051                        .HasColumnName("institution_id");
 21052
 21053                    b.Property<string>("Name")
 21054                        .IsRequired()
 21055                        .HasColumnType("text")
 21056                        .HasColumnName("name");
 21057
 21058                    b.Property<DateOnly>("StartAt")
 21059                        .HasColumnType("date")
 21060                        .HasColumnName("start_at");
 21061
 21062                    b.HasKey("Id")
 21063                        .HasName("pk_enrollment_periods");
 21064
 21065                    b.HasIndex("InstitutionId")
 21066                        .HasDatabaseName("ix_enrollment_periods_institution_id");
 21067
 21068                    b.ToTable("enrollment_periods", "syki");
 41069                });
 1070
 21071            modelBuilder.Entity("Syki.Back.Domain.Students.StudentCourseEnrollment", b =>
 21072                {
 21073                    b.Property<int>("Id")
 21074                        .ValueGeneratedOnAdd()
 21075                        .HasColumnType("integer")
 21076                        .HasColumnName("id");
 21077
 21078                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 21079
 21080                    b.Property<int>("CourseOfferingId")
 21081                        .HasColumnType("integer")
 21082                        .HasColumnName("course_offering_id");
 21083
 21084                    b.Property<DateTime>("EnrolledAt")
 21085                        .HasColumnType("timestamp with time zone")
 21086                        .HasColumnName("enrolled_at");
 21087
 21088                    b.Property<DateTime?>("LeftAt")
 21089                        .HasColumnType("timestamp with time zone")
 21090                        .HasColumnName("left_at");
 21091
 21092                    b.Property<int>("StudentId")
 21093                        .HasColumnType("integer")
 21094                        .HasColumnName("student_id");
 21095
 21096                    b.HasKey("Id")
 21097                        .HasName("pk_student_course_enrollments");
 21098
 21099                    b.HasIndex("CourseOfferingId")
 21100                        .HasDatabaseName("ix_student_course_enrollments_course_offering_id");
 21101
 21102                    b.HasIndex("StudentId")
 21103                        .HasDatabaseName("ix_student_course_enrollments_student_id");
 21104
 21105                    b.ToTable("student_course_enrollments", "syki");
 41106                });
 1107
 21108            modelBuilder.Entity("Syki.Back.Domain.Students.SykiStudent", b =>
 21109                {
 21110                    b.Property<int>("Id")
 21111                        .ValueGeneratedOnAdd()
 21112                        .HasColumnType("integer")
 21113                        .HasColumnName("id");
 21114
 21115                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 21116
 21117                    b.Property<string>("EnrollmentCode")
 21118                        .IsRequired()
 21119                        .HasColumnType("text")
 21120                        .HasColumnName("enrollment_code");
 21121
 21122                    b.Property<int>("InstitutionId")
 21123                        .HasColumnType("integer")
 21124                        .HasColumnName("institution_id");
 21125
 21126                    b.Property<string>("Name")
 21127                        .IsRequired()
 21128                        .HasColumnType("text")
 21129                        .HasColumnName("name");
 21130
 21131                    b.Property<int>("Status")
 21132                        .HasColumnType("integer")
 21133                        .HasColumnName("status");
 21134
 21135                    b.Property<int>("UserId")
 21136                        .HasColumnType("integer")
 21137                        .HasColumnName("user_id");
 21138
 21139                    b.Property<decimal>("YieldCoefficient")
 21140                        .HasPrecision(4, 2)
 21141                        .HasColumnType("numeric(4,2)")
 21142                        .HasColumnName("yield_coefficient");
 21143
 21144                    b.HasKey("Id")
 21145                        .HasName("pk_students");
 21146
 21147                    b.HasIndex("EnrollmentCode")
 21148                        .IsUnique()
 21149                        .HasDatabaseName("ix_students_enrollment_code");
 21150
 21151                    b.HasIndex("InstitutionId", "UserId")
 21152                        .IsUnique()
 21153                        .HasDatabaseName("ix_students_institution_id_user_id");
 21154
 21155                    b.ToTable("students", "syki");
 41156                });
 1157
 21158            modelBuilder.Entity("Syki.Back.Domain.Teachers.SykiTeacher", b =>
 21159                {
 21160                    b.Property<int>("Id")
 21161                        .ValueGeneratedOnAdd()
 21162                        .HasColumnType("integer")
 21163                        .HasColumnName("id");
 21164
 21165                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 21166
 21167                    b.Property<int>("InstitutionId")
 21168                        .HasColumnType("integer")
 21169                        .HasColumnName("institution_id");
 21170
 21171                    b.Property<string>("Name")
 21172                        .IsRequired()
 21173                        .HasColumnType("text")
 21174                        .HasColumnName("name");
 21175
 21176                    b.Property<int>("UserId")
 21177                        .HasColumnType("integer")
 21178                        .HasColumnName("user_id");
 21179
 21180                    b.HasKey("Id")
 21181                        .HasName("pk_teachers");
 21182
 21183                    b.HasIndex("InstitutionId", "UserId")
 21184                        .IsUnique()
 21185                        .HasDatabaseName("ix_teachers_institution_id_user_id");
 21186
 21187                    b.ToTable("teachers", "syki");
 41188                });
 1189
 21190            modelBuilder.Entity("Syki.Back.Domain.Teachers.TeacherCampus", b =>
 21191                {
 21192                    b.Property<int>("TeacherId")
 21193                        .HasColumnType("integer")
 21194                        .HasColumnName("teacher_id");
 21195
 21196                    b.Property<int>("CampusId")
 21197                        .HasColumnType("integer")
 21198                        .HasColumnName("campus_id");
 21199
 21200                    b.HasKey("TeacherId", "CampusId")
 21201                        .HasName("pk_teachers_campi");
 21202
 21203                    b.HasIndex("CampusId")
 21204                        .HasDatabaseName("ix_teachers_campi_campus_id");
 21205
 21206                    b.ToTable("teachers_campi", "syki");
 41207                });
 1208
 21209            modelBuilder.Entity("Syki.Back.Domain.Teachers.TeacherDiscipline", b =>
 21210                {
 21211                    b.Property<int>("TeacherId")
 21212                        .HasColumnType("integer")
 21213                        .HasColumnName("teacher_id");
 21214
 21215                    b.Property<int>("DisciplineId")
 21216                        .HasColumnType("integer")
 21217                        .HasColumnName("discipline_id");
 21218
 21219                    b.HasKey("TeacherId", "DisciplineId")
 21220                        .HasName("pk_teachers_disciplines");
 21221
 21222                    b.HasIndex("DisciplineId")
 21223                        .HasDatabaseName("ix_teachers_disciplines_discipline_id");
 21224
 21225                    b.ToTable("teachers_disciplines", "syki");
 41226                });
 1227
 21228            modelBuilder.Entity("Syki.Back.Commands.Domain.Commands.Command", b =>
 21229                {
 21230                    b.HasOne("Syki.Back.Domain.Institutions.Institution", "Institution")
 21231                        .WithMany()
 21232                        .HasForeignKey("InstitutionId")
 21233                        .OnDelete(DeleteBehavior.Cascade)
 21234                        .IsRequired()
 21235                        .HasConstraintName("fk_commands_institutions_institution_id");
 21236
 21237                    b.Navigation("Institution");
 41238                });
 1239
 21240            modelBuilder.Entity("Syki.Back.Domain.Campi.Campus", b =>
 21241                {
 21242                    b.HasOne("Syki.Back.Domain.Institutions.Institution", null)
 21243                        .WithMany("Campi")
 21244                        .HasForeignKey("InstitutionId")
 21245                        .OnDelete(DeleteBehavior.Cascade)
 21246                        .IsRequired()
 21247                        .HasConstraintName("fk_campi_institutions_institution_id");
 41248                });
 1249
 21250            modelBuilder.Entity("Syki.Back.Domain.CourseCurriculums.CourseCurriculum", b =>
 21251                {
 21252                    b.HasOne("Syki.Back.Domain.Courses.Course", "Course")
 21253                        .WithMany("CourseCurriculums")
 21254                        .HasForeignKey("CourseId")
 21255                        .OnDelete(DeleteBehavior.Cascade)
 21256                        .IsRequired()
 21257                        .HasConstraintName("fk_course_curriculums_courses_course_id");
 21258
 21259                    b.HasOne("Syki.Back.Domain.Institutions.Institution", null)
 21260                        .WithMany("CourseCurriculums")
 21261                        .HasForeignKey("InstitutionId")
 21262                        .OnDelete(DeleteBehavior.Cascade)
 21263                        .IsRequired()
 21264                        .HasConstraintName("fk_course_curriculums_institutions_institution_id");
 21265
 21266                    b.Navigation("Course");
 41267                });
 1268
 21269            modelBuilder.Entity("Syki.Back.Domain.CourseCurriculums.CourseCurriculumDiscipline", b =>
 21270                {
 21271                    b.HasOne("Syki.Back.Domain.CourseCurriculums.CourseCurriculum", null)
 21272                        .WithMany("Links")
 21273                        .HasForeignKey("CourseCurriculumId")
 21274                        .OnDelete(DeleteBehavior.Cascade)
 21275                        .IsRequired()
 21276                        .HasConstraintName("fk_course_curriculums_disciplines_course_curriculums_course_cu");
 21277
 21278                    b.HasOne("Syki.Back.Domain.Disciplines.Discipline", null)
 21279                        .WithMany()
 21280                        .HasForeignKey("DisciplineId")
 21281                        .OnDelete(DeleteBehavior.Cascade)
 21282                        .IsRequired()
 21283                        .HasConstraintName("fk_course_curriculums_disciplines_disciplines_discipline_id");
 41284                });
 1285
 21286            modelBuilder.Entity("Syki.Back.Domain.CourseOfferings.CourseOffering", b =>
 21287                {
 21288                    b.HasOne("Syki.Back.Domain.Periods.AcademicPeriod", "AcademicPeriod")
 21289                        .WithMany()
 21290                        .HasForeignKey("AcademicPeriodId")
 21291                        .OnDelete(DeleteBehavior.Cascade)
 21292                        .IsRequired()
 21293                        .HasConstraintName("fk_course_offerings_academic_periods_academic_period_id");
 21294
 21295                    b.HasOne("Syki.Back.Domain.Campi.Campus", "Campus")
 21296                        .WithMany()
 21297                        .HasForeignKey("CampusId")
 21298                        .OnDelete(DeleteBehavior.Cascade)
 21299                        .IsRequired()
 21300                        .HasConstraintName("fk_course_offerings_campi_campus_id");
 21301
 21302                    b.HasOne("Syki.Back.Domain.CourseCurriculums.CourseCurriculum", "CourseCurriculum")
 21303                        .WithMany()
 21304                        .HasForeignKey("CourseCurriculumId")
 21305                        .OnDelete(DeleteBehavior.Cascade)
 21306                        .IsRequired()
 21307                        .HasConstraintName("fk_course_offerings_course_curriculums_course_curriculum_id");
 21308
 21309                    b.HasOne("Syki.Back.Domain.Courses.Course", "Course")
 21310                        .WithMany()
 21311                        .HasForeignKey("CourseId")
 21312                        .OnDelete(DeleteBehavior.Cascade)
 21313                        .IsRequired()
 21314                        .HasConstraintName("fk_course_offerings_courses_course_id");
 21315
 21316                    b.HasOne("Syki.Back.Domain.Institutions.Institution", null)
 21317                        .WithMany("CourseOfferings")
 21318                        .HasForeignKey("InstitutionId")
 21319                        .OnDelete(DeleteBehavior.Cascade)
 21320                        .IsRequired()
 21321                        .HasConstraintName("fk_course_offerings_institutions_institution_id");
 21322
 21323                    b.Navigation("AcademicPeriod");
 21324
 21325                    b.Navigation("Campus");
 21326
 21327                    b.Navigation("Course");
 21328
 21329                    b.Navigation("CourseCurriculum");
 41330                });
 1331
 21332            modelBuilder.Entity("Syki.Back.Domain.Courses.Course", b =>
 21333                {
 21334                    b.HasOne("Syki.Back.Domain.Institutions.Institution", null)
 21335                        .WithMany("Courses")
 21336                        .HasForeignKey("InstitutionId")
 21337                        .OnDelete(DeleteBehavior.Cascade)
 21338                        .IsRequired()
 21339                        .HasConstraintName("fk_courses_institutions_institution_id");
 41340                });
 1341
 21342            modelBuilder.Entity("Syki.Back.Domain.Courses.CourseDiscipline", b =>
 21343                {
 21344                    b.HasOne("Syki.Back.Domain.Courses.Course", null)
 21345                        .WithMany("Links")
 21346                        .HasForeignKey("CourseId")
 21347                        .OnDelete(DeleteBehavior.Cascade)
 21348                        .IsRequired()
 21349                        .HasConstraintName("fk_courses_disciplines_courses_course_id");
 21350
 21351                    b.HasOne("Syki.Back.Domain.Disciplines.Discipline", null)
 21352                        .WithMany("Links")
 21353                        .HasForeignKey("DisciplineId")
 21354                        .OnDelete(DeleteBehavior.Cascade)
 21355                        .IsRequired()
 21356                        .HasConstraintName("fk_courses_disciplines_disciplines_discipline_id");
 41357                });
 1358
 21359            modelBuilder.Entity("Syki.Back.Domain.Disciplines.Discipline", b =>
 21360                {
 21361                    b.HasOne("Syki.Back.Domain.Institutions.Institution", null)
 21362                        .WithMany("Disciplines")
 21363                        .HasForeignKey("InstitutionId")
 21364                        .OnDelete(DeleteBehavior.Cascade)
 21365                        .IsRequired()
 21366                        .HasConstraintName("fk_disciplines_institutions_institution_id");
 41367                });
 1368
 21369            modelBuilder.Entity("Syki.Back.Domain.Identity.InstitutionRole", b =>
 21370                {
 21371                    b.HasOne("Syki.Back.Domain.Institutions.Institution", null)
 21372                        .WithMany()
 21373                        .HasForeignKey("InstitutionId")
 21374                        .OnDelete(DeleteBehavior.Cascade)
 21375                        .IsRequired()
 21376                        .HasConstraintName("fk_institution_roles_institutions_institution_id");
 21377
 21378                    b.HasOne("Syki.Back.Domain.Identity.SykiRole", "Role")
 21379                        .WithMany()
 21380                        .HasForeignKey("RoleId")
 21381                        .OnDelete(DeleteBehavior.Cascade)
 21382                        .IsRequired()
 21383                        .HasConstraintName("fk_institution_roles_roles_role_id");
 21384
 21385                    b.Navigation("Role");
 41386                });
 1387
 21388            modelBuilder.Entity("Syki.Back.Domain.Identity.MagicLink", b =>
 21389                {
 21390                    b.HasOne("Syki.Back.Domain.Identity.SykiUser", "User")
 21391                        .WithMany()
 21392                        .HasForeignKey("UserId")
 21393                        .OnDelete(DeleteBehavior.Cascade)
 21394                        .IsRequired()
 21395                        .HasConstraintName("fk_magic_links_asp_net_users_user_id");
 21396
 21397                    b.Navigation("User");
 41398                });
 1399
 21400            modelBuilder.Entity("Syki.Back.Domain.Identity.ResetPasswordToken", b =>
 21401                {
 21402                    b.HasOne("Syki.Back.Domain.Institutions.Institution", null)
 21403                        .WithMany()
 21404                        .HasForeignKey("InstitutionId")
 21405                        .OnDelete(DeleteBehavior.Cascade)
 21406                        .IsRequired()
 21407                        .HasConstraintName("fk_reset_password_tokens_institutions_institution_id");
 21408
 21409                    b.HasOne("Syki.Back.Domain.Identity.SykiUser", null)
 21410                        .WithMany()
 21411                        .HasForeignKey("UserId")
 21412                        .OnDelete(DeleteBehavior.Cascade)
 21413                        .IsRequired()
 21414                        .HasConstraintName("fk_reset_password_tokens_asp_net_users_user_id");
 41415                });
 1416
 21417            modelBuilder.Entity("Syki.Back.Domain.Identity.SsoAllowedDomain", b =>
 21418                {
 21419                    b.HasOne("Syki.Back.Domain.Identity.SsoConfiguration", null)
 21420                        .WithMany("AllowedDomains")
 21421                        .HasForeignKey("SsoConfigurationId")
 21422                        .OnDelete(DeleteBehavior.Cascade)
 21423                        .IsRequired()
 21424                        .HasConstraintName("fk_sso_allowed_domains_sso_configurations_sso_configuration_id");
 41425                });
 1426
 21427            modelBuilder.Entity("Syki.Back.Domain.Identity.SsoConfiguration", b =>
 21428                {
 21429                    b.HasOne("Syki.Back.Domain.Institutions.Institution", null)
 21430                        .WithMany()
 21431                        .HasForeignKey("InstitutionId")
 21432                        .OnDelete(DeleteBehavior.Cascade)
 21433                        .IsRequired()
 21434                        .HasConstraintName("fk_sso_configurations_institutions_institution_id");
 41435                });
 1436
 21437            modelBuilder.Entity("Syki.Back.Domain.Identity.SykiRole", b =>
 21438                {
 21439                    b.HasOne("Syki.Back.Domain.Institutions.Institution", null)
 21440                        .WithMany()
 21441                        .HasForeignKey("OwnerId")
 21442                        .HasConstraintName("fk_roles_institutions_owner_id");
 41443                });
 1444
 21445            modelBuilder.Entity("Syki.Back.Domain.Identity.SykiRoleClaim", b =>
 21446                {
 21447                    b.HasOne("Syki.Back.Domain.Identity.SykiRole", null)
 21448                        .WithMany()
 21449                        .HasForeignKey("RoleId")
 21450                        .OnDelete(DeleteBehavior.Cascade)
 21451                        .IsRequired()
 21452                        .HasConstraintName("fk_role_claims_roles_role_id");
 41453                });
 1454
 21455            modelBuilder.Entity("Syki.Back.Domain.Identity.SykiUser", b =>
 21456                {
 21457                    b.HasOne("Syki.Back.Domain.Institutions.Institution", "Institution")
 21458                        .WithMany("Users")
 21459                        .HasForeignKey("InstitutionId")
 21460                        .OnDelete(DeleteBehavior.Cascade)
 21461                        .IsRequired()
 21462                        .HasConstraintName("fk_users_institutions_institution_id");
 21463
 21464                    b.Navigation("Institution");
 41465                });
 1466
 21467            modelBuilder.Entity("Syki.Back.Domain.Identity.SykiUserClaim", b =>
 21468                {
 21469                    b.HasOne("Syki.Back.Domain.Identity.SykiUser", null)
 21470                        .WithMany()
 21471                        .HasForeignKey("UserId")
 21472                        .OnDelete(DeleteBehavior.Cascade)
 21473                        .IsRequired()
 21474                        .HasConstraintName("fk_user_claims_users_user_id");
 41475                });
 1476
 21477            modelBuilder.Entity("Syki.Back.Domain.Identity.SykiUserLogin", b =>
 21478                {
 21479                    b.HasOne("Syki.Back.Domain.Identity.SykiUser", null)
 21480                        .WithMany()
 21481                        .HasForeignKey("UserId")
 21482                        .OnDelete(DeleteBehavior.Cascade)
 21483                        .IsRequired()
 21484                        .HasConstraintName("fk_user_logins_users_user_id");
 41485                });
 1486
 21487            modelBuilder.Entity("Syki.Back.Domain.Identity.SykiUserRole", b =>
 21488                {
 21489                    b.HasOne("Syki.Back.Domain.Institutions.Institution", "Institution")
 21490                        .WithMany()
 21491                        .HasForeignKey("InstitutionId")
 21492                        .OnDelete(DeleteBehavior.Cascade)
 21493                        .IsRequired()
 21494                        .HasConstraintName("fk_user_roles_institutions_institution_id");
 21495
 21496                    b.HasOne("Syki.Back.Domain.Identity.SykiRole", "Role")
 21497                        .WithMany()
 21498                        .HasForeignKey("RoleId")
 21499                        .OnDelete(DeleteBehavior.Cascade)
 21500                        .IsRequired()
 21501                        .HasConstraintName("fk_user_roles_roles_role_id");
 21502
 21503                    b.HasOne("Syki.Back.Domain.Identity.SykiUser", "User")
 21504                        .WithMany()
 21505                        .HasForeignKey("UserId")
 21506                        .OnDelete(DeleteBehavior.Cascade)
 21507                        .IsRequired()
 21508                        .HasConstraintName("fk_user_roles_users_user_id");
 21509
 21510                    b.Navigation("Institution");
 21511
 21512                    b.Navigation("Role");
 21513
 21514                    b.Navigation("User");
 41515                });
 1516
 21517            modelBuilder.Entity("Syki.Back.Domain.Identity.SykiUserToken", b =>
 21518                {
 21519                    b.HasOne("Syki.Back.Domain.Identity.SykiUser", null)
 21520                        .WithMany()
 21521                        .HasForeignKey("UserId")
 21522                        .OnDelete(DeleteBehavior.Cascade)
 21523                        .IsRequired()
 21524                        .HasConstraintName("fk_user_tokens_users_user_id");
 41525                });
 1526
 21527            modelBuilder.Entity("Syki.Back.Domain.Periods.AcademicPeriod", b =>
 21528                {
 21529                    b.HasOne("Syki.Back.Domain.Institutions.Institution", null)
 21530                        .WithMany("AcademicPeriods")
 21531                        .HasForeignKey("InstitutionId")
 21532                        .OnDelete(DeleteBehavior.Cascade)
 21533                        .IsRequired()
 21534                        .HasConstraintName("fk_academic_periods_institutions_institution_id");
 41535                });
 1536
 21537            modelBuilder.Entity("Syki.Back.Domain.Periods.EnrollmentPeriod", b =>
 21538                {
 21539                    b.HasOne("Syki.Back.Domain.Institutions.Institution", null)
 21540                        .WithMany("EnrollmentPeriods")
 21541                        .HasForeignKey("InstitutionId")
 21542                        .OnDelete(DeleteBehavior.Cascade)
 21543                        .IsRequired()
 21544                        .HasConstraintName("fk_enrollment_periods_institutions_institution_id");
 41545                });
 1546
 21547            modelBuilder.Entity("Syki.Back.Domain.Students.StudentCourseEnrollment", b =>
 21548                {
 21549                    b.HasOne("Syki.Back.Domain.CourseOfferings.CourseOffering", null)
 21550                        .WithMany()
 21551                        .HasForeignKey("CourseOfferingId")
 21552                        .OnDelete(DeleteBehavior.Cascade)
 21553                        .IsRequired()
 21554                        .HasConstraintName("fk_student_course_enrollments_course_offerings_course_offering");
 21555
 21556                    b.HasOne("Syki.Back.Domain.Students.SykiStudent", null)
 21557                        .WithMany()
 21558                        .HasForeignKey("StudentId")
 21559                        .OnDelete(DeleteBehavior.Cascade)
 21560                        .IsRequired()
 21561                        .HasConstraintName("fk_student_course_enrollments_students_student_id");
 41562                });
 1563
 21564            modelBuilder.Entity("Syki.Back.Domain.Students.SykiStudent", b =>
 21565                {
 21566                    b.HasOne("Syki.Back.Domain.Institutions.Institution", null)
 21567                        .WithMany("Students")
 21568                        .HasForeignKey("InstitutionId")
 21569                        .OnDelete(DeleteBehavior.Cascade)
 21570                        .IsRequired()
 21571                        .HasConstraintName("fk_students_institutions_institution_id");
 21572
 21573                    b.HasOne("Syki.Back.Domain.Identity.SykiUser", "User")
 21574                        .WithOne()
 21575                        .HasForeignKey("Syki.Back.Domain.Students.SykiStudent", "InstitutionId", "UserId")
 21576                        .HasPrincipalKey("Syki.Back.Domain.Identity.SykiUser", "InstitutionId", "Id")
 21577                        .OnDelete(DeleteBehavior.Cascade)
 21578                        .IsRequired()
 21579                        .HasConstraintName("fk_students_asp_net_users_institution_id_user_id");
 21580
 21581                    b.Navigation("User");
 41582                });
 1583
 21584            modelBuilder.Entity("Syki.Back.Domain.Teachers.SykiTeacher", b =>
 21585                {
 21586                    b.HasOne("Syki.Back.Domain.Institutions.Institution", null)
 21587                        .WithMany("Teachers")
 21588                        .HasForeignKey("InstitutionId")
 21589                        .OnDelete(DeleteBehavior.Cascade)
 21590                        .IsRequired()
 21591                        .HasConstraintName("fk_teachers_institutions_institution_id");
 21592
 21593                    b.HasOne("Syki.Back.Domain.Identity.SykiUser", "User")
 21594                        .WithOne()
 21595                        .HasForeignKey("Syki.Back.Domain.Teachers.SykiTeacher", "InstitutionId", "UserId")
 21596                        .HasPrincipalKey("Syki.Back.Domain.Identity.SykiUser", "InstitutionId", "Id")
 21597                        .OnDelete(DeleteBehavior.Cascade)
 21598                        .IsRequired()
 21599                        .HasConstraintName("fk_teachers_asp_net_users_institution_id_user_id");
 21600
 21601                    b.Navigation("User");
 41602                });
 1603
 21604            modelBuilder.Entity("Syki.Back.Domain.Teachers.TeacherCampus", b =>
 21605                {
 21606                    b.HasOne("Syki.Back.Domain.Campi.Campus", null)
 21607                        .WithMany()
 21608                        .HasForeignKey("CampusId")
 21609                        .OnDelete(DeleteBehavior.Cascade)
 21610                        .IsRequired()
 21611                        .HasConstraintName("fk_teachers_campi_campi_campus_id");
 21612
 21613                    b.HasOne("Syki.Back.Domain.Teachers.SykiTeacher", null)
 21614                        .WithMany()
 21615                        .HasForeignKey("TeacherId")
 21616                        .OnDelete(DeleteBehavior.Cascade)
 21617                        .IsRequired()
 21618                        .HasConstraintName("fk_teachers_campi_teachers_teacher_id");
 41619                });
 1620
 21621            modelBuilder.Entity("Syki.Back.Domain.Teachers.TeacherDiscipline", b =>
 21622                {
 21623                    b.HasOne("Syki.Back.Domain.Disciplines.Discipline", null)
 21624                        .WithMany()
 21625                        .HasForeignKey("DisciplineId")
 21626                        .OnDelete(DeleteBehavior.Cascade)
 21627                        .IsRequired()
 21628                        .HasConstraintName("fk_teachers_disciplines_disciplines_discipline_id");
 21629
 21630                    b.HasOne("Syki.Back.Domain.Teachers.SykiTeacher", null)
 21631                        .WithMany()
 21632                        .HasForeignKey("TeacherId")
 21633                        .OnDelete(DeleteBehavior.Cascade)
 21634                        .IsRequired()
 21635                        .HasConstraintName("fk_teachers_disciplines_teachers_teacher_id");
 41636                });
 1637
 21638            modelBuilder.Entity("Syki.Back.Domain.CourseCurriculums.CourseCurriculum", b =>
 21639                {
 21640                    b.Navigation("Links");
 41641                });
 1642
 21643            modelBuilder.Entity("Syki.Back.Domain.Courses.Course", b =>
 21644                {
 21645                    b.Navigation("CourseCurriculums");
 21646
 21647                    b.Navigation("Links");
 41648                });
 1649
 21650            modelBuilder.Entity("Syki.Back.Domain.Disciplines.Discipline", b =>
 21651                {
 21652                    b.Navigation("Links");
 41653                });
 1654
 21655            modelBuilder.Entity("Syki.Back.Domain.Identity.SsoConfiguration", b =>
 21656                {
 21657                    b.Navigation("AllowedDomains");
 41658                });
 1659
 21660            modelBuilder.Entity("Syki.Back.Domain.Institutions.Institution", b =>
 21661                {
 21662                    b.Navigation("AcademicPeriods");
 21663
 21664                    b.Navigation("Campi");
 21665
 21666                    b.Navigation("CourseCurriculums");
 21667
 21668                    b.Navigation("CourseOfferings");
 21669
 21670                    b.Navigation("Courses");
 21671
 21672                    b.Navigation("Disciplines");
 21673
 21674                    b.Navigation("EnrollmentPeriods");
 21675
 21676                    b.Navigation("Students");
 21677
 21678                    b.Navigation("Teachers");
 21679
 21680                    b.Navigation("Users");
 41681                });
 1682#pragma warning restore 612, 618
 21683        }
 1684    }
 1685}