|  | 
|  | 1 | +import { MigrationInterface, QueryRunner } from 'typeorm'; | 
|  | 2 | + | 
|  | 3 | +export class Init1754254886189 implements MigrationInterface { | 
|  | 4 | +  name = 'Init1754254886189'; | 
|  | 5 | + | 
|  | 6 | +  public async up(queryRunner: QueryRunner): Promise<void> { | 
|  | 7 | +    await queryRunner.query( | 
|  | 8 | +      `CREATE TYPE "public"."commit_length_enum" AS ENUM('Semester', 'Month', 'Year')`, | 
|  | 9 | +    ); | 
|  | 10 | + | 
|  | 11 | +    await queryRunner.query( | 
|  | 12 | +      `CREATE TYPE "public"."site_enum" AS ENUM('Downtown Campus', 'North Campus', 'West Campus', 'East Campus')`, | 
|  | 13 | +    ); | 
|  | 14 | + | 
|  | 15 | +    await queryRunner.query( | 
|  | 16 | +      `CREATE TYPE "public"."app_status_enum" AS ENUM('App submitted', 'in review', 'forms sent', 'accepted', 'rejected')`, | 
|  | 17 | +    ); | 
|  | 18 | + | 
|  | 19 | +    await queryRunner.query( | 
|  | 20 | +      `CREATE TYPE "public"."school_enum" AS ENUM('Harvard Medical School', 'Johns Hopkins', 'Stanford Medicine', 'Mayo Clinic', 'Other')`, | 
|  | 21 | +    ); | 
|  | 22 | + | 
|  | 23 | +    await queryRunner.query( | 
|  | 24 | +      `CREATE TYPE "public"."experience_type_enum" AS ENUM('BS', 'MS', 'PhD', 'MD', 'MD PhD', 'RN', 'NP', 'PA', 'Other')`, | 
|  | 25 | +    ); | 
|  | 26 | + | 
|  | 27 | +    await queryRunner.query( | 
|  | 28 | +      `CREATE TYPE "public"."interest_area_enum" AS ENUM('Nursing', 'HarmReduction', 'WomensHealth')`, | 
|  | 29 | +    ); | 
|  | 30 | + | 
|  | 31 | +    await queryRunner.query( | 
|  | 32 | +      `CREATE TABLE "admin" ( | 
|  | 33 | +                "id" SERIAL NOT NULL,  | 
|  | 34 | +                "name" character varying NOT NULL,  | 
|  | 35 | +                "email" character varying NOT NULL UNIQUE,  | 
|  | 36 | +                CONSTRAINT "PK_admin_id" PRIMARY KEY ("id") | 
|  | 37 | +            )`, | 
|  | 38 | +    ); | 
|  | 39 | + | 
|  | 40 | +    await queryRunner.query( | 
|  | 41 | +      `CREATE TABLE "discipline" ( | 
|  | 42 | +                "id" SERIAL NOT NULL,  | 
|  | 43 | +                "name" character varying NOT NULL,  | 
|  | 44 | +                "admin_ids" integer[] NOT NULL DEFAULT '{}',  | 
|  | 45 | +                CONSTRAINT "PK_discipline_id" PRIMARY KEY ("id") | 
|  | 46 | +            )`, | 
|  | 47 | +    ); | 
|  | 48 | + | 
|  | 49 | +    await queryRunner.query( | 
|  | 50 | +      `CREATE TABLE "application" ( | 
|  | 51 | +                "appId" SERIAL NOT NULL,  | 
|  | 52 | +                "phone" character varying NOT NULL,  | 
|  | 53 | +                "school" "public"."school_enum" NOT NULL,  | 
|  | 54 | +                "daysAvailable" character varying NOT NULL,  | 
|  | 55 | +                "weeklyHours" integer NOT NULL,  | 
|  | 56 | +                "experienceType" "public"."experience_type_enum" NOT NULL,  | 
|  | 57 | +                "interest" "public"."interest_area_enum" NOT NULL,  | 
|  | 58 | +                "license" character varying,  | 
|  | 59 | +                "appStatus" "public"."app_status_enum" NOT NULL DEFAULT 'App submitted',  | 
|  | 60 | +                "isInternational" boolean NOT NULL DEFAULT false,  | 
|  | 61 | +                "isLearner" boolean NOT NULL DEFAULT false,  | 
|  | 62 | +                "referredEmail" character varying,  | 
|  | 63 | +                "referred" boolean NOT NULL DEFAULT false,  | 
|  | 64 | +                CONSTRAINT "PK_application_appId" PRIMARY KEY ("appId") | 
|  | 65 | +            )`, | 
|  | 66 | +    ); | 
|  | 67 | + | 
|  | 68 | +    await queryRunner.query( | 
|  | 69 | +      `CREATE TABLE "learner" ( | 
|  | 70 | +                "id" SERIAL NOT NULL,  | 
|  | 71 | +                "app_id" integer NOT NULL,  | 
|  | 72 | +                "name" character varying NOT NULL,  | 
|  | 73 | +                "startDate" DATE NOT NULL,  | 
|  | 74 | +                "endDate" DATE NOT NULL,  | 
|  | 75 | +                CONSTRAINT "PK_learner_id" PRIMARY KEY ("id"), | 
|  | 76 | +                CONSTRAINT "FK_learner_app_id" FOREIGN KEY ("app_id") REFERENCES "application"("appId") ON DELETE CASCADE | 
|  | 77 | +            )`, | 
|  | 78 | +    ); | 
|  | 79 | +  } | 
|  | 80 | +  public async down(queryRunner: QueryRunner): Promise<void> { | 
|  | 81 | +    await queryRunner.query(`DROP TABLE "learner"`); | 
|  | 82 | +    await queryRunner.query(`DROP TABLE "application"`); | 
|  | 83 | +    await queryRunner.query(`DROP TABLE "discipline"`); | 
|  | 84 | +    await queryRunner.query(`DROP TABLE "admin"`); | 
|  | 85 | +    await queryRunner.query(`DROP TYPE "public"."interest_area_enum"`); | 
|  | 86 | +    await queryRunner.query(`DROP TYPE "public"."experience_type_enum"`); | 
|  | 87 | +    await queryRunner.query(`DROP TYPE "public"."school_enum"`); | 
|  | 88 | +    await queryRunner.query(`DROP TYPE "public"."app_status_enum"`); | 
|  | 89 | +    await queryRunner.query(`DROP TYPE "public"."site_enum"`); | 
|  | 90 | +    await queryRunner.query(`DROP TYPE "public"."commit_length_enum"`); | 
|  | 91 | +  } | 
|  | 92 | +} | 
0 commit comments