Skip to content

Commit

Permalink
[SERVER] Initialize typeorm (#1)
Browse files Browse the repository at this point in the history
  • Loading branch information
MonicaTanios committed Sep 15, 2020
1 parent 11a9355 commit 6f83e89
Show file tree
Hide file tree
Showing 22 changed files with 889 additions and 10 deletions.
6 changes: 5 additions & 1 deletion server/.env.example
@@ -1,2 +1,6 @@
PORT=
CLIENT_PORT=
CLIENT_PORT=
DB_NAME=
DB_USER=
DB_PASS=
DB_HOST=
4 changes: 3 additions & 1 deletion server/package.json
Expand Up @@ -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",
Expand Down
38 changes: 38 additions & 0 deletions 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;
}
17 changes: 17 additions & 0 deletions 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[];
}
42 changes: 42 additions & 0 deletions 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[];
}
39 changes: 39 additions & 0 deletions 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;
}
35 changes: 35 additions & 0 deletions 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;
}
47 changes: 47 additions & 0 deletions 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;
}
36 changes: 36 additions & 0 deletions 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;
}
102 changes: 102 additions & 0 deletions 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[];
}

0 comments on commit 6f83e89

Please sign in to comment.