From 6f83e89adb7915fa06ee42d83e8a1638e5c4aca3 Mon Sep 17 00:00:00 2001 From: MonicaTanios <36570681+MonicaTanios@users.noreply.github.com> Date: Tue, 15 Sep 2020 16:04:33 +0200 Subject: [PATCH] [SERVER] Initialize typeorm (#1) --- server/.env.example | 6 +- server/package.json | 4 +- server/src/entities/Assignment.ts | 38 ++++ server/src/entities/CertificationProviders.ts | 17 ++ server/src/entities/Certifications.ts | 42 +++++ server/src/entities/EmployeeCertifications.ts | 39 +++++ server/src/entities/EmployeeSkills.ts | 35 ++++ server/src/entities/EmployeeSkillsHistory.ts | 47 +++++ server/src/entities/EmployeeTraining.ts | 36 ++++ server/src/entities/EmployeesProfiles.ts | 102 +++++++++++ server/src/entities/Managers.ts | 17 ++ server/src/entities/ReleaseRequests.ts | 64 +++++++ server/src/entities/ReleaseRequestsActions.ts | 25 +++ server/src/entities/ResourceRequestActions.ts | 35 ++++ server/src/entities/ResourceRequestSkills.ts | 44 +++++ server/src/entities/ResourceRequests.ts | 74 ++++++++ server/src/entities/Role.ts | 14 ++ server/src/entities/Skills.ts | 30 ++++ server/src/entities/UserRole.ts | 34 ++++ server/src/entities/Users.ts | 20 +++ server/src/server.ts | 12 ++ yarn.lock | 164 +++++++++++++++++- 22 files changed, 889 insertions(+), 10 deletions(-) create mode 100644 server/src/entities/Assignment.ts create mode 100644 server/src/entities/CertificationProviders.ts create mode 100644 server/src/entities/Certifications.ts create mode 100644 server/src/entities/EmployeeCertifications.ts create mode 100644 server/src/entities/EmployeeSkills.ts create mode 100644 server/src/entities/EmployeeSkillsHistory.ts create mode 100644 server/src/entities/EmployeeTraining.ts create mode 100644 server/src/entities/EmployeesProfiles.ts create mode 100644 server/src/entities/Managers.ts create mode 100644 server/src/entities/ReleaseRequests.ts create mode 100644 server/src/entities/ReleaseRequestsActions.ts create mode 100644 server/src/entities/ResourceRequestActions.ts create mode 100644 server/src/entities/ResourceRequestSkills.ts create mode 100644 server/src/entities/ResourceRequests.ts create mode 100644 server/src/entities/Role.ts create mode 100644 server/src/entities/Skills.ts create mode 100644 server/src/entities/UserRole.ts create mode 100644 server/src/entities/Users.ts diff --git a/server/.env.example b/server/.env.example index 0dee1f7..e320ae7 100644 --- a/server/.env.example +++ b/server/.env.example @@ -1,2 +1,6 @@ PORT= -CLIENT_PORT= \ No newline at end of file +CLIENT_PORT= +DB_NAME= +DB_USER= +DB_PASS= +DB_HOST= \ No newline at end of file diff --git a/server/package.json b/server/package.json index 1900adf..799d986 100644 --- a/server/package.json +++ b/server/package.json @@ -14,8 +14,10 @@ "dotenv": "^8.2.0", "express": "^4.17.1", "graphql": "^15.3.0", + "mysql": "^2.18.1", "reflect-metadata": "^0.1.13", - "type-graphql": "^1.0.0" + "type-graphql": "^1.0.0", + "typeorm": "^0.2.26" }, "devDependencies": { "@types/cors": "^2.8.7", diff --git a/server/src/entities/Assignment.ts b/server/src/entities/Assignment.ts new file mode 100644 index 0000000..27e8d83 --- /dev/null +++ b/server/src/entities/Assignment.ts @@ -0,0 +1,38 @@ +import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm"; +import { EmployeesProfiles } from "./EmployeesProfiles"; + +@Index("assignment_employee_id_fk_idx", ["employeeId"], {}) +@Entity("assignment", { schema: "hackathon" }) +export class Assignment { + @Column("int", { primary: true, name: "assignment_id" }) + assignmentId: number; + + @Column("varchar", { name: "employee_id", length: 36 }) + employeeId: string; + + @Column("varchar", { name: "workgroup", length: 128 }) + workgroup: string; + + @Column("varchar", { name: "cost_center", length: 128 }) + costCenter: string; + + @Column("varchar", { name: "sdm_reporting_manager", length: 256 }) + sdmReportingManager: string; + + @Column("int", { name: "allocation_percentage" }) + allocationPercentage: number; + + @Column("date", { name: "start_date" }) + startDate: string; + + @Column("date", { name: "release_date", nullable: true }) + releaseDate: string | null; + + @ManyToOne( + () => EmployeesProfiles, + (employeesProfiles) => employeesProfiles.assignments, + { onDelete: "NO ACTION", onUpdate: "NO ACTION" } + ) + @JoinColumn([{ name: "employee_id", referencedColumnName: "id" }]) + employee: EmployeesProfiles; +} diff --git a/server/src/entities/CertificationProviders.ts b/server/src/entities/CertificationProviders.ts new file mode 100644 index 0000000..9a3fe66 --- /dev/null +++ b/server/src/entities/CertificationProviders.ts @@ -0,0 +1,17 @@ +import { Column, Entity, OneToMany } from "typeorm"; +import { Certifications } from "./Certifications"; + +@Entity("certification_providers", { schema: "hackathon" }) +export class CertificationProviders { + @Column("int", { primary: true, name: "certificatoin_provider_id" }) + certificatoinProviderId: number; + + @Column("varchar", { name: "certification_provider_name", length: 128 }) + certificationProviderName: string; + + @OneToMany( + () => Certifications, + (certifications) => certifications.certificationProvider + ) + certifications: Certifications[]; +} diff --git a/server/src/entities/Certifications.ts b/server/src/entities/Certifications.ts new file mode 100644 index 0000000..ff431a2 --- /dev/null +++ b/server/src/entities/Certifications.ts @@ -0,0 +1,42 @@ +import { + Column, + Entity, + Index, + JoinColumn, + ManyToOne, + OneToMany, +} from "typeorm"; +import { CertificationProviders } from "./CertificationProviders"; +import { EmployeeCertifications } from "./EmployeeCertifications"; + +@Index("certifications_provider_id_fk_idx", ["certificationProviderId"], {}) +@Entity("certifications", { schema: "hackathon" }) +export class Certifications { + @Column("int", { primary: true, name: "certification_id" }) + certificationId: number; + + @Column("int", { name: "certification_provider_id" }) + certificationProviderId: number; + + @Column("varchar", { name: "certification_name", length: 128 }) + certificationName: string; + + @ManyToOne( + () => CertificationProviders, + (certificationProviders) => certificationProviders.certifications, + { onDelete: "NO ACTION", onUpdate: "NO ACTION" } + ) + @JoinColumn([ + { + name: "certification_provider_id", + referencedColumnName: "certificatoinProviderId", + }, + ]) + certificationProvider: CertificationProviders; + + @OneToMany( + () => EmployeeCertifications, + (employeeCertifications) => employeeCertifications.certification + ) + employeeCertifications: EmployeeCertifications[]; +} diff --git a/server/src/entities/EmployeeCertifications.ts b/server/src/entities/EmployeeCertifications.ts new file mode 100644 index 0000000..5bea109 --- /dev/null +++ b/server/src/entities/EmployeeCertifications.ts @@ -0,0 +1,39 @@ +import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm"; +import { Certifications } from "./Certifications"; +import { EmployeesProfiles } from "./EmployeesProfiles"; + +@Index("employee_certification_employee_id_fk_idx", ["employeeId"], {}) +@Index( + "employee_certification_certification_id_fk_idx", + ["certificationId"], + {} +) +@Entity("employee_certifications", { schema: "hackathon" }) +export class EmployeeCertifications { + @Column("varchar", { primary: true, name: "employee_id", length: 36 }) + employeeId: string; + + @Column("int", { primary: true, name: "certification_id" }) + certificationId: number; + + @Column("date", { name: "expiration_date", nullable: true }) + expirationDate: string | null; + + @ManyToOne( + () => Certifications, + (certifications) => certifications.employeeCertifications, + { onDelete: "NO ACTION", onUpdate: "NO ACTION" } + ) + @JoinColumn([ + { name: "certification_id", referencedColumnName: "certificationId" }, + ]) + certification: Certifications; + + @ManyToOne( + () => EmployeesProfiles, + (employeesProfiles) => employeesProfiles.employeeCertifications, + { onDelete: "NO ACTION", onUpdate: "NO ACTION" } + ) + @JoinColumn([{ name: "employee_id", referencedColumnName: "id" }]) + employee: EmployeesProfiles; +} diff --git a/server/src/entities/EmployeeSkills.ts b/server/src/entities/EmployeeSkills.ts new file mode 100644 index 0000000..59ee085 --- /dev/null +++ b/server/src/entities/EmployeeSkills.ts @@ -0,0 +1,35 @@ +import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm"; +import { Skills } from "./Skills"; +import { EmployeesProfiles } from "./EmployeesProfiles"; + +@Index("Employee_ID_idx", ["employeeId"], {}) +@Index("Skill_ID_idx", ["skillId"], {}) +@Entity("employee_skills", { schema: "hackathon" }) +export class EmployeeSkills { + @Column("varchar", { primary: true, name: "employee_id", length: 36 }) + employeeId: string; + + @Column("int", { primary: true, name: "skill_id" }) + skillId: number; + + @Column("varchar", { name: "experience_level", length: 32 }) + experienceLevel: string; + + @Column("date", { name: "last_used_date" }) + lastUsedDate: string; + + @ManyToOne(() => Skills, (skills) => skills.employeeSkills, { + onDelete: "NO ACTION", + onUpdate: "NO ACTION", + }) + @JoinColumn([{ name: "skill_id", referencedColumnName: "skillId" }]) + skill: Skills; + + @ManyToOne( + () => EmployeesProfiles, + (employeesProfiles) => employeesProfiles.employeeSkills, + { onDelete: "NO ACTION", onUpdate: "NO ACTION" } + ) + @JoinColumn([{ name: "employee_id", referencedColumnName: "id" }]) + employee: EmployeesProfiles; +} diff --git a/server/src/entities/EmployeeSkillsHistory.ts b/server/src/entities/EmployeeSkillsHistory.ts new file mode 100644 index 0000000..5e43cd8 --- /dev/null +++ b/server/src/entities/EmployeeSkillsHistory.ts @@ -0,0 +1,47 @@ +import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm"; +import { EmployeesProfiles } from "./EmployeesProfiles"; +import { Skills } from "./Skills"; + +@Index("employee_skill_history_employee_id_fk_idx", ["employeeId"], {}) +@Index("employee_skills_history_skill_id_fk_idx", ["skillId"], {}) +@Entity("employee_skills_history", { schema: "hackathon" }) +export class EmployeeSkillsHistory { + @Column("varchar", { primary: true, name: "employee_id", length: 36 }) + employeeId: string; + + @Column("int", { primary: true, name: "skill_id" }) + skillId: number; + + @Column("varchar", { name: "experience_level", length: 32 }) + experienceLevel: string; + + @Column("date", { name: "last_used_date" }) + lastUsedDate: string; + + @Column("date", { name: "created_on" }) + createdOn: string; + + @Column("varchar", { name: "manager_name", length: 256 }) + managerName: string; + + @Column("varchar", { name: "title", length: 128 }) + title: string; + + @Column("varchar", { name: "function", length: 128 }) + function: string; + + @ManyToOne( + () => EmployeesProfiles, + (employeesProfiles) => employeesProfiles.employeeSkillsHistories, + { onDelete: "NO ACTION", onUpdate: "NO ACTION" } + ) + @JoinColumn([{ name: "employee_id", referencedColumnName: "id" }]) + employee: EmployeesProfiles; + + @ManyToOne(() => Skills, (skills) => skills.employeeSkillsHistories, { + onDelete: "NO ACTION", + onUpdate: "NO ACTION", + }) + @JoinColumn([{ name: "skill_id", referencedColumnName: "skillId" }]) + skill: Skills; +} diff --git a/server/src/entities/EmployeeTraining.ts b/server/src/entities/EmployeeTraining.ts new file mode 100644 index 0000000..f47d049 --- /dev/null +++ b/server/src/entities/EmployeeTraining.ts @@ -0,0 +1,36 @@ +import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm"; +import { EmployeesProfiles } from "./EmployeesProfiles"; + +@Index("employee_id_idx", ["employeeId"], {}) +@Entity("employee_training", { schema: "hackathon" }) +export class EmployeeTraining { + @Column("varchar", { primary: true, name: "employee_id", length: 36 }) + employeeId: string; + + @Column("varchar", { + primary: true, + name: "training_activity_name", + length: 256, + }) + trainingActivityName: string; + + @Column("varchar", { name: "training_event_name", length: 256 }) + trainingEventName: string; + + @Column("date", { name: "event_from_date" }) + eventFromDate: string; + + @Column("date", { name: "event_to_date" }) + eventToDate: string; + + @Column("int", { name: "total_training_hours" }) + totalTrainingHours: number; + + @ManyToOne( + () => EmployeesProfiles, + (employeesProfiles) => employeesProfiles.employeeTrainings, + { onDelete: "NO ACTION", onUpdate: "NO ACTION" } + ) + @JoinColumn([{ name: "employee_id", referencedColumnName: "id" }]) + employee: EmployeesProfiles; +} diff --git a/server/src/entities/EmployeesProfiles.ts b/server/src/entities/EmployeesProfiles.ts new file mode 100644 index 0000000..c0e8be0 --- /dev/null +++ b/server/src/entities/EmployeesProfiles.ts @@ -0,0 +1,102 @@ +import { + Column, + Entity, + Index, + JoinColumn, + ManyToOne, + OneToMany, +} from "typeorm"; +import { Assignment } from "./Assignment"; +import { EmployeeCertifications } from "./EmployeeCertifications"; +import { EmployeeSkills } from "./EmployeeSkills"; +import { EmployeeSkillsHistory } from "./EmployeeSkillsHistory"; +import { EmployeeTraining } from "./EmployeeTraining"; +import { Managers } from "./Managers"; +import { ReleaseRequests } from "./ReleaseRequests"; + +@Index("manager_id_fk_idx", ["directManager"], {}) +@Entity("employees_profiles", { schema: "hackathon" }) +export class EmployeesProfiles { + @Column("varchar", { primary: true, name: "id", length: 36 }) + id: string; + + @Column("varchar", { name: "name", length: 256 }) + name: string; + + @Column("varchar", { name: "title", length: 128 }) + title: string; + + @Column("date", { name: "hiring_date" }) + hiringDate: string; + + @Column("varchar", { name: "function", length: 128 }) + function: string; + + @Column("varchar", { name: "direct_manager", length: 36 }) + directManager: string; + + @Column("varchar", { name: "workgroup", length: 128 }) + workgroup: string; + + @Column("varchar", { name: "employment_type", length: 64 }) + employmentType: string; + + @Column("int", { name: "allocation_percentage" }) + allocationPercentage: number; + + @Column("date", { name: "skills_last_update_date", nullable: true }) + skillsLastUpdateDate: string | null; + + @Column("varchar", { name: "employee_email", length: 320 }) + employeeEmail: string; + + @Column("varchar", { + name: "employee_profile_picture", + nullable: true, + length: 45, + }) + employeeProfilePicture: string | null; + + @Column("varchar", { name: "mobile_number", length: 20 }) + mobileNumber: string; + + @Column("varchar", { name: "cost_center", length: 128 }) + costCenter: string; + + @OneToMany(() => Assignment, (assignment) => assignment.employee) + assignments: Assignment[]; + + @OneToMany( + () => EmployeeCertifications, + (employeeCertifications) => employeeCertifications.employee + ) + employeeCertifications: EmployeeCertifications[]; + + @OneToMany(() => EmployeeSkills, (employeeSkills) => employeeSkills.employee) + employeeSkills: EmployeeSkills[]; + + @OneToMany( + () => EmployeeSkillsHistory, + (employeeSkillsHistory) => employeeSkillsHistory.employee + ) + employeeSkillsHistories: EmployeeSkillsHistory[]; + + @OneToMany( + () => EmployeeTraining, + (employeeTraining) => employeeTraining.employee + ) + employeeTrainings: EmployeeTraining[]; + + @ManyToOne(() => Managers, (managers) => managers.employeesProfiles, { + onDelete: "NO ACTION", + onUpdate: "NO ACTION", + }) + @JoinColumn([{ name: "direct_manager", referencedColumnName: "id" }]) + directManager2: Managers; + + @OneToMany( + () => ReleaseRequests, + (releaseRequests) => releaseRequests.employee + ) + releaseRequests: ReleaseRequests[]; +} diff --git a/server/src/entities/Managers.ts b/server/src/entities/Managers.ts new file mode 100644 index 0000000..f87f703 --- /dev/null +++ b/server/src/entities/Managers.ts @@ -0,0 +1,17 @@ +import { Column, Entity, OneToMany } from "typeorm"; +import { EmployeesProfiles } from "./EmployeesProfiles"; + +@Entity("managers", { schema: "hackathon" }) +export class Managers { + @Column("varchar", { primary: true, name: "id", length: 36 }) + id: string; + + @Column("varchar", { name: "name", length: 256 }) + name: string; + + @OneToMany( + () => EmployeesProfiles, + (employeesProfiles) => employeesProfiles.directManager2 + ) + employeesProfiles: EmployeesProfiles[]; +} diff --git a/server/src/entities/ReleaseRequests.ts b/server/src/entities/ReleaseRequests.ts new file mode 100644 index 0000000..bfcffac --- /dev/null +++ b/server/src/entities/ReleaseRequests.ts @@ -0,0 +1,64 @@ +import { + Column, + Entity, + Index, + JoinColumn, + ManyToOne, + OneToOne, +} from "typeorm"; +import { EmployeesProfiles } from "./EmployeesProfiles"; +import { ReleaseRequestsActions } from "./ReleaseRequestsActions"; + +@Index("release_request_employee_id_fk_idx", ["employeeId"], {}) +@Entity("release_requests", { schema: "hackathon" }) +export class ReleaseRequests { + @Column("int", { primary: true, name: "reference_number" }) + referenceNumber: number; + + @Column("varchar", { name: "manager_name", length: 256 }) + managerName: string; + + @Column("varchar", { name: "employee_name", length: 256 }) + employeeName: string; + + @Column("varchar", { name: "employee_id", length: 36 }) + employeeId: string; + + @Column("varchar", { name: "employee_title", length: 128 }) + employeeTitle: string; + + @Column("varchar", { name: "function", length: 128 }) + function: string; + + @Column("date", { name: "release_date" }) + releaseDate: string; + + @Column("int", { name: "propability" }) + propability: number; + + @Column("int", { name: "release_percentage" }) + releasePercentage: number; + + @Column("varchar", { name: "release_reason", length: 256 }) + releaseReason: string; + + @Column("varchar", { name: "leaving", length: 1 }) + leaving: string; + + @Column("varchar", { name: "request_status", length: 32 }) + requestStatus: string; + + @ManyToOne( + () => EmployeesProfiles, + (employeesProfiles) => employeesProfiles.releaseRequests, + { onDelete: "NO ACTION", onUpdate: "NO ACTION" } + ) + @JoinColumn([{ name: "employee_id", referencedColumnName: "id" }]) + employee: EmployeesProfiles; + + @OneToOne( + () => ReleaseRequestsActions, + (releaseRequestsActions) => releaseRequestsActions.action2 + ) + releaseRequestsActions: ReleaseRequestsActions; +} diff --git a/server/src/entities/ReleaseRequestsActions.ts b/server/src/entities/ReleaseRequestsActions.ts new file mode 100644 index 0000000..bddbdec --- /dev/null +++ b/server/src/entities/ReleaseRequestsActions.ts @@ -0,0 +1,25 @@ +import { Column, Entity, JoinColumn, OneToOne } from "typeorm"; +import { ReleaseRequests } from "./ReleaseRequests"; + +@Entity("release_requests_actions", { schema: "hackathon" }) +export class ReleaseRequestsActions { + @Column("int", { primary: true, name: "action_id" }) + actionId: number; + + @Column("int", { name: "release_request_reference_number" }) + releaseRequestReferenceNumber: number; + + @Column("varchar", { name: "action", length: 32 }) + action: string; + + @Column("varchar", { name: "action_note", nullable: true, length: 64 }) + actionNote: string | null; + + @OneToOne( + () => ReleaseRequests, + (releaseRequests) => releaseRequests.releaseRequestsActions, + { onDelete: "NO ACTION", onUpdate: "NO ACTION" } + ) + @JoinColumn([{ name: "action_id", referencedColumnName: "referenceNumber" }]) + action2: ReleaseRequests; +} diff --git a/server/src/entities/ResourceRequestActions.ts b/server/src/entities/ResourceRequestActions.ts new file mode 100644 index 0000000..4aee989 --- /dev/null +++ b/server/src/entities/ResourceRequestActions.ts @@ -0,0 +1,35 @@ +import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm"; +import { ResourceRequests } from "./ResourceRequests"; + +@Index( + "resource_request_reference_number_fk_idx", + ["resourceRequestReferenceNumber"], + {} +) +@Entity("resource_request_actions", { schema: "hackathon" }) +export class ResourceRequestActions { + @Column("int", { primary: true, name: "action_id" }) + actionId: number; + + @Column("int", { name: "resource_request_reference_number" }) + resourceRequestReferenceNumber: number; + + @Column("varchar", { name: "action", length: 32 }) + action: string; + + @Column("varchar", { name: "action_note", nullable: true, length: 256 }) + actionNote: string | null; + + @ManyToOne( + () => ResourceRequests, + (resourceRequests) => resourceRequests.resourceRequestActions, + { onDelete: "NO ACTION", onUpdate: "NO ACTION" } + ) + @JoinColumn([ + { + name: "resource_request_reference_number", + referencedColumnName: "referenceNumber", + }, + ]) + resourceRequestReferenceNumber2: ResourceRequests; +} diff --git a/server/src/entities/ResourceRequestSkills.ts b/server/src/entities/ResourceRequestSkills.ts new file mode 100644 index 0000000..5ba4ab4 --- /dev/null +++ b/server/src/entities/ResourceRequestSkills.ts @@ -0,0 +1,44 @@ +import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm"; +import { ResourceRequests } from "./ResourceRequests"; +import { Skills } from "./Skills"; + +@Index("skill_id_fk_idx", ["skillId"], {}) +@Index( + "resource_request_skills_reference_number_fk_idx", + ["requestReferenceNumber"], + {} +) +@Entity("resource_request_skills", { schema: "hackathon" }) +export class ResourceRequestSkills { + @Column("int", { primary: true, name: "skill_id" }) + skillId: number; + + @Column("int", { primary: true, name: "request_reference_number" }) + requestReferenceNumber: number; + + @Column("varchar", { name: "category", length: 64 }) + category: string; + + @Column("varchar", { name: "subcategory", nullable: true, length: 64 }) + subcategory: string | null; + + @ManyToOne( + () => ResourceRequests, + (resourceRequests) => resourceRequests.resourceRequestSkills, + { onDelete: "NO ACTION", onUpdate: "NO ACTION" } + ) + @JoinColumn([ + { + name: "request_reference_number", + referencedColumnName: "referenceNumber", + }, + ]) + requestReferenceNumber2: ResourceRequests; + + @ManyToOne(() => Skills, (skills) => skills.resourceRequestSkills, { + onDelete: "NO ACTION", + onUpdate: "NO ACTION", + }) + @JoinColumn([{ name: "skill_id", referencedColumnName: "skillId" }]) + skill: Skills; +} diff --git a/server/src/entities/ResourceRequests.ts b/server/src/entities/ResourceRequests.ts new file mode 100644 index 0000000..daf8090 --- /dev/null +++ b/server/src/entities/ResourceRequests.ts @@ -0,0 +1,74 @@ +import { Column, Entity, OneToMany } from "typeorm"; +import { ResourceRequestActions } from "./ResourceRequestActions"; +import { ResourceRequestSkills } from "./ResourceRequestSkills"; + +@Entity("resource_requests", { schema: "hackathon" }) +export class ResourceRequests { + @Column("int", { primary: true, name: "reference_number" }) + referenceNumber: number; + + @Column("varchar", { name: "manager_name", length: 256 }) + managerName: string; + + @Column("varchar", { name: "function", length: 128 }) + function: string; + + @Column("varchar", { name: "title", length: 128 }) + title: string; + + @Column("date", { name: "start_date" }) + startDate: string; + + @Column("date", { name: "end_date" }) + endDate: string; + + @Column("int", { name: "propability" }) + propability: number; + + @Column("int", { name: "percentage" }) + percentage: number; + + @Column("varchar", { name: "status", length: 32 }) + status: string; + + @Column("varchar", { name: "core_team_member", nullable: true, length: 1 }) + coreTeamMember: string | null; + + @Column("varchar", { name: "replacenement", nullable: true, length: 1 }) + replacenement: string | null; + + @Column("varchar", { name: "replacement_for", nullable: true, length: 256 }) + replacementFor: string | null; + + @Column("int", { name: "requests_count", nullable: true }) + requestsCount: number | null; + + @Column("varchar", { + name: "related_opportunity", + nullable: true, + length: 128, + }) + relatedOpportunity: string | null; + + @Column("varchar", { name: "comments", nullable: true, length: 256 }) + comments: string | null; + + @Column("varchar", { name: "assigned_resource", nullable: true, length: 256 }) + assignedResource: string | null; + + @Column("int", { name: "actual_percentage", nullable: true }) + actualPercentage: number | null; + + @OneToMany( + () => ResourceRequestActions, + (resourceRequestActions) => + resourceRequestActions.resourceRequestReferenceNumber2 + ) + resourceRequestActions: ResourceRequestActions[]; + + @OneToMany( + () => ResourceRequestSkills, + (resourceRequestSkills) => resourceRequestSkills.requestReferenceNumber2 + ) + resourceRequestSkills: ResourceRequestSkills[]; +} diff --git a/server/src/entities/Role.ts b/server/src/entities/Role.ts new file mode 100644 index 0000000..d7a3c28 --- /dev/null +++ b/server/src/entities/Role.ts @@ -0,0 +1,14 @@ +import { Column, Entity, OneToMany } from "typeorm"; +import { UserRole } from "./UserRole"; + +@Entity("role", { schema: "hackathon" }) +export class Role { + @Column("int", { primary: true, name: "id" }) + id: number; + + @Column("varchar", { name: "role_name", length: 32 }) + roleName: string; + + @OneToMany(() => UserRole, (userRole) => userRole.role) + userRoles: UserRole[]; +} diff --git a/server/src/entities/Skills.ts b/server/src/entities/Skills.ts new file mode 100644 index 0000000..a1785c4 --- /dev/null +++ b/server/src/entities/Skills.ts @@ -0,0 +1,30 @@ +import { Column, Entity, Index, OneToMany } from "typeorm"; +import { EmployeeSkills } from "./EmployeeSkills"; +import { EmployeeSkillsHistory } from "./EmployeeSkillsHistory"; +import { ResourceRequestSkills } from "./ResourceRequestSkills"; + +@Index("Skill_Name_UNIQUE", ["skillName"], { unique: true }) +@Index("IDX_6c500b27556245e209296e8a3f", ["skillName"], { unique: true }) +@Entity("skills", { schema: "hackathon" }) +export class Skills { + @Column("int", { primary: true, name: "skill_id" }) + skillId: number; + + @Column("varchar", { name: "skill_name", unique: true, length: 45 }) + skillName: string; + + @OneToMany(() => EmployeeSkills, (employeeSkills) => employeeSkills.skill) + employeeSkills: EmployeeSkills[]; + + @OneToMany( + () => EmployeeSkillsHistory, + (employeeSkillsHistory) => employeeSkillsHistory.skill + ) + employeeSkillsHistories: EmployeeSkillsHistory[]; + + @OneToMany( + () => ResourceRequestSkills, + (resourceRequestSkills) => resourceRequestSkills.skill + ) + resourceRequestSkills: ResourceRequestSkills[]; +} diff --git a/server/src/entities/UserRole.ts b/server/src/entities/UserRole.ts new file mode 100644 index 0000000..186909a --- /dev/null +++ b/server/src/entities/UserRole.ts @@ -0,0 +1,34 @@ +import { + Column, + Entity, + Index, + JoinColumn, + ManyToOne, + OneToOne, +} from "typeorm"; +import { Role } from "./Role"; +import { Users } from "./Users"; + +@Index("role_id_fk_idx", ["roleId"], {}) +@Entity("user_role", { schema: "hackathon" }) +export class UserRole { + @Column("int", { primary: true, name: "user_id" }) + userId: number; + + @Column("int", { name: "role_id", nullable: true }) + roleId: number | null; + + @ManyToOne(() => Role, (role) => role.userRoles, { + onDelete: "NO ACTION", + onUpdate: "NO ACTION", + }) + @JoinColumn([{ name: "role_id", referencedColumnName: "id" }]) + role: Role; + + @OneToOne(() => Users, (users) => users.userRole, { + onDelete: "NO ACTION", + onUpdate: "NO ACTION", + }) + @JoinColumn([{ name: "user_id", referencedColumnName: "id" }]) + user: Users; +} diff --git a/server/src/entities/Users.ts b/server/src/entities/Users.ts new file mode 100644 index 0000000..9675bb3 --- /dev/null +++ b/server/src/entities/Users.ts @@ -0,0 +1,20 @@ +import { Column, Entity, OneToOne } from "typeorm"; +import { UserRole } from "./UserRole"; + +@Entity("users", { schema: "hackathon" }) +export class Users { + @Column("int", { primary: true, name: "id" }) + id: number; + + @Column("varchar", { name: "user_name", length: 32 }) + userName: string; + + @Column("varchar", { name: "password", length: 32 }) + password: string; + + @Column("varchar", { name: "email", length: 320 }) + email: string; + + @OneToOne(() => UserRole, (userRole) => userRole.user) + userRole: UserRole; +} diff --git a/server/src/server.ts b/server/src/server.ts index 452a4fe..e62fb41 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -8,8 +8,20 @@ import { buildSchema } from "type-graphql"; import { cors } from "./middlewares/cors"; import { AppContext } from "./types"; +import { createConnection } from "typeorm"; const main = async () => { + await createConnection({ + type: "mysql", + database: process.env.DB_NAME, + username: process.env.DB_USER, + password: process.env.DB_PASS, + host: process.env.DB_HOST, + logging: true, + debug: true, + entities: [path.join(__dirname, "./entities/*.[jt]s")], + }); + const app = express(); app.use(cors); diff --git a/yarn.lock b/yarn.lock index ae3bd0c..d1265a3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2225,6 +2225,11 @@ any-observable@^0.3.0: resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -2411,6 +2416,11 @@ apollo-utilities@^1.0.1, apollo-utilities@^1.3.0: ts-invariant "^0.4.0" tslib "^1.10.0" +app-root-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-3.0.0.tgz#210b6f43873227e18a4b810a032283311555d5ad" + integrity sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw== + aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -2728,6 +2738,11 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== +bignumber.js@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075" + integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== + binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" @@ -2915,7 +2930,7 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= -buffer@5.6.0: +buffer@5.6.0, buffer@^5.1.0: version "5.6.0" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== @@ -3070,7 +3085,7 @@ chalk@4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^1.0.0, chalk@^1.1.3: +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -3090,6 +3105,14 @@ chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^4.0.0, chalk@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" @@ -3206,6 +3229,18 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" +cli-highlight@^2.0.0: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.4.tgz#098cb642cf17f42adc1c1145e07f960ec4d7522b" + integrity sha512-s7Zofobm20qriqDoU9sXptQx0t2R9PEgac92mENNm7xaEe1hn71IIMsXMK+6encA6WRCWWxIGQbipr3q998tlQ== + dependencies: + chalk "^3.0.0" + highlight.js "^9.6.0" + mz "^2.4.0" + parse5 "^5.1.1" + parse5-htmlparser2-tree-adapter "^5.1.1" + yargs "^15.0.0" + cli-truncate@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" @@ -4402,6 +4437,11 @@ figgy-pudding@^3.5.1: resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== +figlet@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/figlet/-/figlet-1.5.0.tgz#2db4d00a584e5155a96080632db919213c3e003c" + integrity sha512-ZQJM4aifMpz6H19AW1VqvZ7l4pOE9p7i/3LyxgO2kp+PO/VcDYNqIHEMtkccqIhTXMKci4kjueJr/iCQEaT/Ww== + figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" @@ -4673,7 +4713,7 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -4899,6 +4939,11 @@ he@^1.1.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +highlight.js@^9.6.0: + version "9.18.3" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.3.tgz#a1a0a2028d5e3149e2380f8a865ee8516703d634" + integrity sha512-zBZAmhSupHIl5sITeMqIJnYCDfAEc3Gdkqj65wC1lpI468MMQeeQkhcIAvk+RylAkxrCcI9xy9piHiXeQ1BdzQ== + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -5442,7 +5487,7 @@ jest-worker@24.9.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.14.0: +js-yaml@^3.13.1, js-yaml@^3.14.0: version "3.14.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== @@ -6126,7 +6171,7 @@ mkdirp@^0.5.1, mkdirp@^0.5.3: dependencies: minimist "^1.2.5" -mkdirp@^1.0.4: +mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== @@ -6168,6 +6213,25 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +mysql@^2.18.1: + version "2.18.1" + resolved "https://registry.yarnpkg.com/mysql/-/mysql-2.18.1.tgz#2254143855c5a8c73825e4522baf2ea021766717" + integrity sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig== + dependencies: + bignumber.js "9.0.0" + readable-stream "2.3.7" + safe-buffer "5.1.2" + sqlstring "2.3.1" + +mz@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + nan@^2.12.1: version "2.14.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" @@ -6617,6 +6681,11 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parent-require@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parent-require/-/parent-require-1.0.0.tgz#746a167638083a860b0eef6732cb27ed46c32977" + integrity sha1-dGoWdjgIOoYLDu9nMssn7UbDKXc= + parse-asn1@^5.0.0, parse-asn1@^5.1.5: version "5.1.6" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" @@ -6662,6 +6731,18 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse5-htmlparser2-tree-adapter@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-5.1.1.tgz#e8c743d4e92194d5293ecde2b08be31e67461cbc" + integrity sha512-CF+TKjXqoqyDwHqBhFQ+3l5t83xYi6fVT1tQNg+Ye0JRLnTxWvIroCjEp1A0k4lneHNBGnICUf0cfYVYGEazqw== + dependencies: + parse5 "^5.1.1" + +parse5@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + parseurl@^1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -7791,7 +7872,7 @@ read-pkg@^4.0.1: parse-json "^4.0.0" pify "^3.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@2.3.7, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -8170,6 +8251,11 @@ sass-loader@8.0.2: schema-utils "^2.6.1" semver "^6.3.0" +sax@>=0.6.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + scheduler@^0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" @@ -8483,6 +8569,11 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +sqlstring@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40" + integrity sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A= + sshpk@^1.7.0: version "1.16.1" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" @@ -8813,6 +8904,20 @@ terser@4.8.0, terser@^4.1.2: source-map "~0.6.1" source-map-support "~0.5.12" +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + through2@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -9068,6 +9173,27 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typeorm@^0.2.26: + version "0.2.26" + resolved "https://registry.yarnpkg.com/typeorm/-/typeorm-0.2.26.tgz#1027afa13f89ab98bc3d07675fe7268bbefa55a7" + integrity sha512-sbKxK6K9sXZPCVF0weEb74UA/z1UW0sRWfI7EoOOtQaRZaLvSEwtgHPqle9t8asxEtD+gzkUdd+NqF7yH7HtIQ== + dependencies: + app-root-path "^3.0.0" + buffer "^5.1.0" + chalk "^2.4.2" + cli-highlight "^2.0.0" + debug "^4.1.1" + dotenv "^8.2.0" + glob "^7.1.2" + js-yaml "^3.13.1" + mkdirp "^1.0.3" + reflect-metadata "^0.1.13" + sha.js "^2.4.11" + tslib "^1.9.0" + xml2js "^0.4.17" + yargonaut "^1.1.2" + yargs "^13.2.1" + typescript@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.2.tgz#7ea7c88777c723c681e33bf7988be5d008d05ac2" @@ -9516,6 +9642,19 @@ ws@^6.0.0: dependencies: async-limiter "~1.0.0" +xml2js@^0.4.17: + version "0.4.23" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" + integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + xss@^1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.8.tgz#32feb87feb74b3dcd3d404b7a68ababf10700535" @@ -9559,6 +9698,15 @@ yaml@^1.10.0, yaml@^1.7.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== +yargonaut@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/yargonaut/-/yargonaut-1.1.4.tgz#c64f56432c7465271221f53f5cc517890c3d6e0c" + integrity sha512-rHgFmbgXAAzl+1nngqOcwEljqHGG9uUZoPjsdZEs1w5JW9RXYzrSvH/u70C1JE5qFi0qjsdhnUX/dJRpWqitSA== + dependencies: + chalk "^1.1.1" + figlet "^1.1.1" + parent-require "^1.0.0" + yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" @@ -9575,7 +9723,7 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@^13.3.0: +yargs@^13.2.1, yargs@^13.3.0: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== @@ -9591,7 +9739,7 @@ yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^15.3.1, yargs@^15.4.1: +yargs@^15.0.0, yargs@^15.3.1, yargs@^15.4.1: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==