From b5f4d732bedba19a7b7fda075191d39fa290b45f Mon Sep 17 00:00:00 2001 From: Rayyan Mridha <66543565+rayyanmridha@users.noreply.github.com> Date: Sun, 15 Feb 2026 19:28:29 -0500 Subject: [PATCH 1/3] add discipline migration file --- .../1771191788744-CreateDisciplineTable.ts | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 apps/backend/src/migrations/1771191788744-CreateDisciplineTable.ts diff --git a/apps/backend/src/migrations/1771191788744-CreateDisciplineTable.ts b/apps/backend/src/migrations/1771191788744-CreateDisciplineTable.ts new file mode 100644 index 00000000..32a90844 --- /dev/null +++ b/apps/backend/src/migrations/1771191788744-CreateDisciplineTable.ts @@ -0,0 +1,71 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class CreateDisciplineTable1771191788744 implements MigrationInterface { + name = 'CreateDisciplineTable1771191788744'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TYPE "public"."admins_discipline_enum" AS ENUM('MD/Medical Student/Pre-Med', 'Medical NP/PA', 'Psychiatry or Psychiatric NP/PA', 'Public Health', 'RN', 'Social Work', 'Other')`, + ); + await queryRunner.query( + `CREATE TABLE "admins" ("id" SERIAL NOT NULL, "firstName" character varying NOT NULL, "lastName" character varying NOT NULL, "email" character varying NOT NULL, "discipline" "public"."admins_discipline_enum" NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "UQ_051db7d37d478a69a7432df1479" UNIQUE ("email"), CONSTRAINT "PK_e3b38270c97a854c48d2e80874e" PRIMARY KEY ("id"))`, + ); + await queryRunner.query( + `CREATE TYPE "public"."application_discipline_enum" AS ENUM('MD/Medical Student/Pre-Med', 'Medical NP/PA', 'Psychiatry or Psychiatric NP/PA', 'Public Health', 'RN', 'Social Work', 'Other')`, + ); + await queryRunner.query( + `CREATE TYPE "public"."application_appstatus_enum" AS ENUM('App submitted', 'In review', 'Forms sent', 'Accepted', 'No Availability', 'Declined', 'Active', 'Inactive')`, + ); + await queryRunner.query( + `CREATE TYPE "public"."application_experiencetype_enum" AS ENUM('BS', 'MS', 'PhD', 'MD', 'MD PhD', 'RN', 'NP', 'PA', 'Other')`, + ); + await queryRunner.query( + `CREATE TYPE "public"."application_interest_enum" AS ENUM('Women''s Health', 'Medical Respite/Inpatient', 'Street Medicine', 'Addiction Medicine', 'Primary Care', 'Behavioral Health', 'Veterans Services', 'Family and Youth Services', 'Hep C Care', 'HIV Services', 'Case Management', 'Dental')`, + ); + await queryRunner.query( + `CREATE TYPE "public"."application_applicanttype_enum" AS ENUM('Learner', 'Volunteer')`, + ); + await queryRunner.query( + `CREATE TYPE "public"."application_school_enum" AS ENUM('Harvard Medical School', 'Johns Hopkins', 'Stanford Medicine', 'Mayo Clinic', 'Other')`, + ); + await queryRunner.query( + `CREATE TABLE "application" ("appId" SERIAL NOT NULL, "email" character varying NOT NULL, "discipline" "public"."application_discipline_enum" NOT NULL, "otherDisciplineDescription" character varying, "appStatus" "public"."application_appstatus_enum" NOT NULL DEFAULT 'App submitted', "mondayAvailability" character varying NOT NULL, "tuesdayAvailability" character varying NOT NULL, "wednesdayAvailability" character varying NOT NULL, "thursdayAvailability" character varying NOT NULL, "fridayAvailability" character varying NOT NULL, "saturdayAvailability" character varying NOT NULL, "experienceType" "public"."application_experiencetype_enum" NOT NULL, "interest" "public"."application_interest_enum" NOT NULL, "license" character varying NOT NULL, "phone" character varying NOT NULL, "applicantType" "public"."application_applicanttype_enum" NOT NULL, "school" "public"."application_school_enum" NOT NULL, "otherSchool" character varying, "referred" boolean DEFAULT false, "referredEmail" character varying, "weeklyHours" integer NOT NULL, "pronouns" character varying NOT NULL, "nonEnglishLangs" character varying, "desiredExperience" character varying NOT NULL, "elaborateOtherDiscipline" character varying, "resume" character varying NOT NULL, "coverLetter" character varying NOT NULL, "emergencyContactName" character varying NOT NULL, "emergencyContactPhone" character varying NOT NULL, "emergencyContactRelationship" character varying NOT NULL, CONSTRAINT "PK_bad7d3374806099608903c43d2c" PRIMARY KEY ("appId"))`, + ); + await queryRunner.query( + `CREATE TYPE "public"."discipline_name_enum" AS ENUM('MD/Medical Student/Pre-Med', 'Medical NP/PA', 'Psychiatry or Psychiatric NP/PA', 'Public Health', 'RN', 'Social Work', 'Other')`, + ); + await queryRunner.query( + `CREATE TABLE "discipline" ("id" SERIAL NOT NULL, "name" "public"."discipline_name_enum" NOT NULL, "admin_ids" integer array NOT NULL DEFAULT '{}', CONSTRAINT "PK_139512aefbb11a5b2fa92696828" PRIMARY KEY ("id"))`, + ); + await queryRunner.query( + `CREATE TYPE "public"."learner_info_school_enum" AS ENUM('Harvard Medical School', 'Johns Hopkins', 'Stanford Medicine', 'Mayo Clinic', 'Other')`, + ); + await queryRunner.query( + `CREATE TABLE "learner_info" ("appId" integer NOT NULL, "school" "public"."learner_info_school_enum" NOT NULL, "schoolDepartment" character varying, "isSupervisorApplying" boolean NOT NULL, "isLegalAdult" boolean NOT NULL, "dateOfBirth" date, "courseRequirements" character varying, "instructorInfo" character varying, "syllabus" character varying, CONSTRAINT "PK_235c32ff8a2161278e21f4b5ff9" PRIMARY KEY ("appId"))`, + ); + await queryRunner.query( + `CREATE TABLE "volunteer_info" ("appId" integer NOT NULL, "license" character varying NOT NULL, CONSTRAINT "PK_4df167dc51855ca6dfae345e0fc" PRIMARY KEY ("appId"))`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP TABLE "volunteer_info"`); + await queryRunner.query(`DROP TABLE "learner_info"`); + await queryRunner.query(`DROP TYPE "public"."learner_info_school_enum"`); + await queryRunner.query(`DROP TABLE "discipline"`); + await queryRunner.query(`DROP TYPE "public"."discipline_name_enum"`); + await queryRunner.query(`DROP TABLE "application"`); + await queryRunner.query(`DROP TYPE "public"."application_school_enum"`); + await queryRunner.query( + `DROP TYPE "public"."application_applicanttype_enum"`, + ); + await queryRunner.query(`DROP TYPE "public"."application_interest_enum"`); + await queryRunner.query( + `DROP TYPE "public"."application_experiencetype_enum"`, + ); + await queryRunner.query(`DROP TYPE "public"."application_appstatus_enum"`); + await queryRunner.query(`DROP TYPE "public"."application_discipline_enum"`); + await queryRunner.query(`DROP TABLE "admins"`); + await queryRunner.query(`DROP TYPE "public"."admins_discipline_enum"`); + } +} From 076023fbe0bd1a45832b422078c7b0aeb9808e87 Mon Sep 17 00:00:00 2001 From: Sam Nie <147653722+SamNie2027@users.noreply.github.com> Date: Tue, 17 Feb 2026 08:18:16 -0500 Subject: [PATCH 2/3] Removing old tables from init --- .../src/migrations/1754254886189-init.ts | 70 ------------------- 1 file changed, 70 deletions(-) diff --git a/apps/backend/src/migrations/1754254886189-init.ts b/apps/backend/src/migrations/1754254886189-init.ts index f3813f69..10f1d6d5 100644 --- a/apps/backend/src/migrations/1754254886189-init.ts +++ b/apps/backend/src/migrations/1754254886189-init.ts @@ -28,76 +28,6 @@ export class Init1754254886189 implements MigrationInterface { await queryRunner.query( `CREATE TYPE "public"."interest_area_enum" AS ENUM('Nursing', 'HarmReduction', 'WomensHealth')`, ); - - // Use Site enum values dynamically - const siteValues = Object.values(Site) - .map((site) => `'${site}'`) - .join(', '); - await queryRunner.query( - `CREATE TYPE "public"."admins_site_enum" AS ENUM(${siteValues})`, - ); - - await queryRunner.query( - `CREATE TABLE "admin" ( - "id" SERIAL NOT NULL, - "name" character varying NOT NULL, - "email" character varying NOT NULL UNIQUE, - CONSTRAINT "PK_admin_id" PRIMARY KEY ("id") - )`, - ); - - await queryRunner.query( - `CREATE TABLE "admins" ( - "id" SERIAL NOT NULL, - "name" character varying NOT NULL, - "email" character varying NOT NULL UNIQUE, - "site" "public"."admins_site_enum" NOT NULL, - "createdAt" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - CONSTRAINT "PK_admins_id" PRIMARY KEY ("id") - )`, - ); - - await queryRunner.query( - `CREATE TABLE "discipline" ( - "id" SERIAL NOT NULL, - "name" character varying NOT NULL, - "admin_ids" integer[] NOT NULL DEFAULT '{}', - CONSTRAINT "PK_discipline_id" PRIMARY KEY ("id") - )`, - ); - - await queryRunner.query( - `CREATE TABLE "application" ( - "appId" SERIAL NOT NULL, - "phone" character varying NOT NULL, - "school" "public"."school_enum" NOT NULL, - "daysAvailable" character varying NOT NULL, - "weeklyHours" integer NOT NULL, - "experienceType" "public"."experience_type_enum" NOT NULL, - "interest" "public"."interest_area_enum" NOT NULL, - "license" character varying NOT NULL, - "appStatus" "public"."app_status_enum" NOT NULL DEFAULT 'App submitted', - "isInternational" boolean NOT NULL DEFAULT false, - "isLearner" boolean NOT NULL DEFAULT false, - "referredEmail" character varying, - "referred" boolean DEFAULT false, - "fileUploads" text[] NOT NULL DEFAULT '{}', - CONSTRAINT "PK_application_appId" PRIMARY KEY ("appId") - )`, - ); - - await queryRunner.query( - `CREATE TABLE "learner" ( - "id" SERIAL NOT NULL, - "app_id" integer NOT NULL, - "name" character varying NOT NULL, - "startDate" DATE NOT NULL, - "endDate" DATE NOT NULL, - CONSTRAINT "PK_learner_id" PRIMARY KEY ("id"), - CONSTRAINT "FK_learner_app_id" FOREIGN KEY ("app_id") REFERENCES "application"("appId") ON DELETE CASCADE - )`, - ); } public async down(queryRunner: QueryRunner): Promise { From d3dc3f45108d2188b69270fd41e6236c5c93d46a Mon Sep 17 00:00:00 2001 From: Rayyan Mridha <66543565+rayyanmridha@users.noreply.github.com> Date: Tue, 17 Feb 2026 21:14:00 -0500 Subject: [PATCH 3/3] fix discipline migration and delete init --- .../src/migrations/1754254886189-init.ts | 117 ------------------ .../1771191788744-CreateDisciplineTable.ts | 62 ++-------- 2 files changed, 9 insertions(+), 170 deletions(-) delete mode 100644 apps/backend/src/migrations/1754254886189-init.ts diff --git a/apps/backend/src/migrations/1754254886189-init.ts b/apps/backend/src/migrations/1754254886189-init.ts deleted file mode 100644 index f3813f69..00000000 --- a/apps/backend/src/migrations/1754254886189-init.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { MigrationInterface, QueryRunner } from 'typeorm'; -import { Site } from '../users/types'; - -export class Init1754254886189 implements MigrationInterface { - name = 'Init1754254886189'; - - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query( - `CREATE TYPE "public"."commit_length_enum" AS ENUM('Semester', 'Month', 'Year')`, - ); - - await queryRunner.query( - `CREATE TYPE "public"."site_enum" AS ENUM('Downtown Campus', 'North Campus', 'West Campus', 'East Campus')`, - ); - - await queryRunner.query( - `CREATE TYPE "public"."app_status_enum" AS ENUM('App submitted', 'In review', 'Forms sent', 'Accepted', 'Rejected')`, - ); - - await queryRunner.query( - `CREATE TYPE "public"."school_enum" AS ENUM('Harvard Medical School', 'Johns Hopkins', 'Stanford Medicine', 'Mayo Clinic', 'Other')`, - ); - - await queryRunner.query( - `CREATE TYPE "public"."experience_type_enum" AS ENUM('BS', 'MS', 'PhD', 'MD', 'MD PhD', 'RN', 'NP', 'PA', 'Other')`, - ); - - await queryRunner.query( - `CREATE TYPE "public"."interest_area_enum" AS ENUM('Nursing', 'HarmReduction', 'WomensHealth')`, - ); - - // Use Site enum values dynamically - const siteValues = Object.values(Site) - .map((site) => `'${site}'`) - .join(', '); - await queryRunner.query( - `CREATE TYPE "public"."admins_site_enum" AS ENUM(${siteValues})`, - ); - - await queryRunner.query( - `CREATE TABLE "admin" ( - "id" SERIAL NOT NULL, - "name" character varying NOT NULL, - "email" character varying NOT NULL UNIQUE, - CONSTRAINT "PK_admin_id" PRIMARY KEY ("id") - )`, - ); - - await queryRunner.query( - `CREATE TABLE "admins" ( - "id" SERIAL NOT NULL, - "name" character varying NOT NULL, - "email" character varying NOT NULL UNIQUE, - "site" "public"."admins_site_enum" NOT NULL, - "createdAt" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - CONSTRAINT "PK_admins_id" PRIMARY KEY ("id") - )`, - ); - - await queryRunner.query( - `CREATE TABLE "discipline" ( - "id" SERIAL NOT NULL, - "name" character varying NOT NULL, - "admin_ids" integer[] NOT NULL DEFAULT '{}', - CONSTRAINT "PK_discipline_id" PRIMARY KEY ("id") - )`, - ); - - await queryRunner.query( - `CREATE TABLE "application" ( - "appId" SERIAL NOT NULL, - "phone" character varying NOT NULL, - "school" "public"."school_enum" NOT NULL, - "daysAvailable" character varying NOT NULL, - "weeklyHours" integer NOT NULL, - "experienceType" "public"."experience_type_enum" NOT NULL, - "interest" "public"."interest_area_enum" NOT NULL, - "license" character varying NOT NULL, - "appStatus" "public"."app_status_enum" NOT NULL DEFAULT 'App submitted', - "isInternational" boolean NOT NULL DEFAULT false, - "isLearner" boolean NOT NULL DEFAULT false, - "referredEmail" character varying, - "referred" boolean DEFAULT false, - "fileUploads" text[] NOT NULL DEFAULT '{}', - CONSTRAINT "PK_application_appId" PRIMARY KEY ("appId") - )`, - ); - - await queryRunner.query( - `CREATE TABLE "learner" ( - "id" SERIAL NOT NULL, - "app_id" integer NOT NULL, - "name" character varying NOT NULL, - "startDate" DATE NOT NULL, - "endDate" DATE NOT NULL, - CONSTRAINT "PK_learner_id" PRIMARY KEY ("id"), - CONSTRAINT "FK_learner_app_id" FOREIGN KEY ("app_id") REFERENCES "application"("appId") ON DELETE CASCADE - )`, - ); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`DROP TABLE "learner"`); - await queryRunner.query(`DROP TABLE "application"`); - await queryRunner.query(`DROP TABLE "discipline"`); - await queryRunner.query(`DROP TABLE "admins"`); - await queryRunner.query(`DROP TABLE "admin"`); - await queryRunner.query(`DROP TYPE "public"."interest_area_enum"`); - await queryRunner.query(`DROP TYPE "public"."experience_type_enum"`); - await queryRunner.query(`DROP TYPE "public"."school_enum"`); - await queryRunner.query(`DROP TYPE "public"."app_status_enum"`); - await queryRunner.query(`DROP TYPE "public"."site_enum"`); - await queryRunner.query(`DROP TYPE "public"."admins_site_enum"`); - await queryRunner.query(`DROP TYPE "public"."commit_length_enum"`); - } -} diff --git a/apps/backend/src/migrations/1771191788744-CreateDisciplineTable.ts b/apps/backend/src/migrations/1771191788744-CreateDisciplineTable.ts index 32a90844..2366e69f 100644 --- a/apps/backend/src/migrations/1771191788744-CreateDisciplineTable.ts +++ b/apps/backend/src/migrations/1771191788744-CreateDisciplineTable.ts @@ -5,67 +5,23 @@ export class CreateDisciplineTable1771191788744 implements MigrationInterface { public async up(queryRunner: QueryRunner): Promise { await queryRunner.query( - `CREATE TYPE "public"."admins_discipline_enum" AS ENUM('MD/Medical Student/Pre-Med', 'Medical NP/PA', 'Psychiatry or Psychiatric NP/PA', 'Public Health', 'RN', 'Social Work', 'Other')`, - ); - await queryRunner.query( - `CREATE TABLE "admins" ("id" SERIAL NOT NULL, "firstName" character varying NOT NULL, "lastName" character varying NOT NULL, "email" character varying NOT NULL, "discipline" "public"."admins_discipline_enum" NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "UQ_051db7d37d478a69a7432df1479" UNIQUE ("email"), CONSTRAINT "PK_e3b38270c97a854c48d2e80874e" PRIMARY KEY ("id"))`, - ); - await queryRunner.query( - `CREATE TYPE "public"."application_discipline_enum" AS ENUM('MD/Medical Student/Pre-Med', 'Medical NP/PA', 'Psychiatry or Psychiatric NP/PA', 'Public Health', 'RN', 'Social Work', 'Other')`, - ); - await queryRunner.query( - `CREATE TYPE "public"."application_appstatus_enum" AS ENUM('App submitted', 'In review', 'Forms sent', 'Accepted', 'No Availability', 'Declined', 'Active', 'Inactive')`, - ); - await queryRunner.query( - `CREATE TYPE "public"."application_experiencetype_enum" AS ENUM('BS', 'MS', 'PhD', 'MD', 'MD PhD', 'RN', 'NP', 'PA', 'Other')`, - ); - await queryRunner.query( - `CREATE TYPE "public"."application_interest_enum" AS ENUM('Women''s Health', 'Medical Respite/Inpatient', 'Street Medicine', 'Addiction Medicine', 'Primary Care', 'Behavioral Health', 'Veterans Services', 'Family and Youth Services', 'Hep C Care', 'HIV Services', 'Case Management', 'Dental')`, - ); - await queryRunner.query( - `CREATE TYPE "public"."application_applicanttype_enum" AS ENUM('Learner', 'Volunteer')`, - ); - await queryRunner.query( - `CREATE TYPE "public"."application_school_enum" AS ENUM('Harvard Medical School', 'Johns Hopkins', 'Stanford Medicine', 'Mayo Clinic', 'Other')`, - ); - await queryRunner.query( - `CREATE TABLE "application" ("appId" SERIAL NOT NULL, "email" character varying NOT NULL, "discipline" "public"."application_discipline_enum" NOT NULL, "otherDisciplineDescription" character varying, "appStatus" "public"."application_appstatus_enum" NOT NULL DEFAULT 'App submitted', "mondayAvailability" character varying NOT NULL, "tuesdayAvailability" character varying NOT NULL, "wednesdayAvailability" character varying NOT NULL, "thursdayAvailability" character varying NOT NULL, "fridayAvailability" character varying NOT NULL, "saturdayAvailability" character varying NOT NULL, "experienceType" "public"."application_experiencetype_enum" NOT NULL, "interest" "public"."application_interest_enum" NOT NULL, "license" character varying NOT NULL, "phone" character varying NOT NULL, "applicantType" "public"."application_applicanttype_enum" NOT NULL, "school" "public"."application_school_enum" NOT NULL, "otherSchool" character varying, "referred" boolean DEFAULT false, "referredEmail" character varying, "weeklyHours" integer NOT NULL, "pronouns" character varying NOT NULL, "nonEnglishLangs" character varying, "desiredExperience" character varying NOT NULL, "elaborateOtherDiscipline" character varying, "resume" character varying NOT NULL, "coverLetter" character varying NOT NULL, "emergencyContactName" character varying NOT NULL, "emergencyContactPhone" character varying NOT NULL, "emergencyContactRelationship" character varying NOT NULL, CONSTRAINT "PK_bad7d3374806099608903c43d2c" PRIMARY KEY ("appId"))`, - ); - await queryRunner.query( - `CREATE TYPE "public"."discipline_name_enum" AS ENUM('MD/Medical Student/Pre-Med', 'Medical NP/PA', 'Psychiatry or Psychiatric NP/PA', 'Public Health', 'RN', 'Social Work', 'Other')`, + `CREATE TYPE "public"."discipline_name_enum" AS ENUM( + 'MD/Medical Student/Pre-Med', + 'Medical NP/PA', + 'Psychiatry or Psychiatric NP/PA', + 'Public Health', + 'RN', + 'Social Work', + 'Other' + )`, ); await queryRunner.query( `CREATE TABLE "discipline" ("id" SERIAL NOT NULL, "name" "public"."discipline_name_enum" NOT NULL, "admin_ids" integer array NOT NULL DEFAULT '{}', CONSTRAINT "PK_139512aefbb11a5b2fa92696828" PRIMARY KEY ("id"))`, ); - await queryRunner.query( - `CREATE TYPE "public"."learner_info_school_enum" AS ENUM('Harvard Medical School', 'Johns Hopkins', 'Stanford Medicine', 'Mayo Clinic', 'Other')`, - ); - await queryRunner.query( - `CREATE TABLE "learner_info" ("appId" integer NOT NULL, "school" "public"."learner_info_school_enum" NOT NULL, "schoolDepartment" character varying, "isSupervisorApplying" boolean NOT NULL, "isLegalAdult" boolean NOT NULL, "dateOfBirth" date, "courseRequirements" character varying, "instructorInfo" character varying, "syllabus" character varying, CONSTRAINT "PK_235c32ff8a2161278e21f4b5ff9" PRIMARY KEY ("appId"))`, - ); - await queryRunner.query( - `CREATE TABLE "volunteer_info" ("appId" integer NOT NULL, "license" character varying NOT NULL, CONSTRAINT "PK_4df167dc51855ca6dfae345e0fc" PRIMARY KEY ("appId"))`, - ); } public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`DROP TABLE "volunteer_info"`); - await queryRunner.query(`DROP TABLE "learner_info"`); - await queryRunner.query(`DROP TYPE "public"."learner_info_school_enum"`); await queryRunner.query(`DROP TABLE "discipline"`); await queryRunner.query(`DROP TYPE "public"."discipline_name_enum"`); - await queryRunner.query(`DROP TABLE "application"`); - await queryRunner.query(`DROP TYPE "public"."application_school_enum"`); - await queryRunner.query( - `DROP TYPE "public"."application_applicanttype_enum"`, - ); - await queryRunner.query(`DROP TYPE "public"."application_interest_enum"`); - await queryRunner.query( - `DROP TYPE "public"."application_experiencetype_enum"`, - ); - await queryRunner.query(`DROP TYPE "public"."application_appstatus_enum"`); - await queryRunner.query(`DROP TYPE "public"."application_discipline_enum"`); - await queryRunner.query(`DROP TABLE "admins"`); - await queryRunner.query(`DROP TYPE "public"."admins_discipline_enum"`); } }