Skip to content

Commit

Permalink
Merge pull request #52 from TeamHSE/feature/orm
Browse files Browse the repository at this point in the history
add realtions between entities at orm + logger
  • Loading branch information
disk0Dancer authored Jun 19, 2024
2 parents 2df0139 + b2416d8 commit 1b73b74
Show file tree
Hide file tree
Showing 12 changed files with 137 additions and 1,414 deletions.
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -133,4 +133,8 @@ dist
./backend/node_modules/
.idea/
./backend/*.js
./backend/dist/*
./backend/dist/*

# rm extra package at rood dir
./package.json
./*-lock.y*ml
23 changes: 19 additions & 4 deletions backend/src/entity/Course.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,31 @@
import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from "typeorm";
import {
Entity,
PrimaryGeneratedColumn,
Column,
OneToMany,
ManyToOne,
} from "typeorm";
import { CoursesModule } from "./CoursesModules";
import { CoursesStep } from "./CoursesStep";
import { CoursesViewer } from "./CoursesViewers";

@Entity("courses")
export class Course extends BaseEntity {
@PrimaryGeneratedColumn("uuid")
courseId: "uuid" | undefined;

@Column({ unique: true, type: "varchar", length: 250 })
name: string | undefined;
name: string;

@Column("text")
description: string | undefined;
description: string;

@Column({ default: false, type: "boolean" })
isVisible: boolean | undefined;
isVisible: boolean;

@OneToMany(() => CoursesModule, (module) => module.course)
modules: CoursesModule[];

@ManyToOne(() => CoursesViewer, (viewer) => viewer.user)
viewers: CoursesViewer;
}
17 changes: 16 additions & 1 deletion backend/src/entity/CoursesModules.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from "typeorm";
import {
BaseEntity,
Column,
Entity,
ManyToOne,
OneToMany,
PrimaryGeneratedColumn,
} from "typeorm";
import { Course } from "./Course";
import { CoursesStep } from "./CoursesStep";

@Entity("courses_modules")
export class CoursesModule extends BaseEntity {
Expand All @@ -19,4 +28,10 @@ export class CoursesModule extends BaseEntity {

@Column({ type: "integer" })
moduleNumber: number | undefined;

@ManyToOne(() => Course, (course) => course.modules)
course: Course;

@OneToMany(() => CoursesStep, (course) => course.module)
steps: CoursesStep[];
}
17 changes: 16 additions & 1 deletion backend/src/entity/CoursesStep.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from "typeorm";
import {
BaseEntity,
Column,
Entity,
ManyToOne,
OneToMany,
PrimaryGeneratedColumn,
} from "typeorm";
import { CoursesModule } from "./CoursesModules";
import { UsersActivity } from "./UsersActivity";

@Entity("courses_steps")
export class CoursesStep extends BaseEntity {
Expand Down Expand Up @@ -28,4 +37,10 @@ export class CoursesStep extends BaseEntity {

@Column({ default: 1, type: "integer" })
ratingAward: number | undefined;

@OneToMany(() => UsersActivity, (activity) => activity.step)
activities: UsersActivity[];

@ManyToOne(() => CoursesModule, (module) => module.steps)
module: CoursesModule;
}
21 changes: 20 additions & 1 deletion backend/src/entity/CoursesViewers.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from "typeorm";
import {
BaseEntity,
Column,
Entity,
OneToMany,
PrimaryGeneratedColumn,
} from "typeorm";
import { UsersRole } from "./UsersRoles";
import { Course } from "./Course";
import { User } from "./User";

@Entity("courses_viewers")
export class CoursesViewer extends BaseEntity {
Expand All @@ -13,4 +22,14 @@ export class CoursesViewer extends BaseEntity {

@Column({ type: "uuid" })
roleId: "uuid" | undefined;

@OneToMany(() => UsersRole, (role) => role.viewer)
roles: UsersRole[];

@OneToMany(() => User, (user) => user.viewers)
user: User[];

@OneToMany(() => Course, (course) => course.viewers)
course: Course[];

}
19 changes: 18 additions & 1 deletion backend/src/entity/User.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,15 @@
import { Column, Entity, PrimaryGeneratedColumn } from "typeorm";
import {
Column,
Entity,
ManyToOne,
OneToMany,
PrimaryGeneratedColumn,
} from "typeorm";
import { UUID } from "crypto";
import { UsersActivity } from "./UsersActivity";
import { UsersRole } from "./UsersRoles";
import { Course } from "./Course";
import { CoursesViewer } from "./CoursesViewers";

@Entity("users")
export class User {
Expand Down Expand Up @@ -37,4 +48,10 @@ export class User {

@Column({ type: "text", nullable: true })
healthIssues: string;

@OneToMany(() => UsersActivity, (activity) => activity.user)
activities: UsersActivity[];

@ManyToOne(() => CoursesViewer, (viewer) => viewer.user)
viewers: CoursesViewer;
}
16 changes: 15 additions & 1 deletion backend/src/entity/UsersActivity.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from "typeorm";
import {
BaseEntity,
Column,
Entity,
ManyToOne,
PrimaryGeneratedColumn,
} from "typeorm";
import { User } from "./User";
import { CoursesStep } from "./CoursesStep";

@Entity("users_activity")
export class UsersActivity extends BaseEntity {
Expand All @@ -13,4 +21,10 @@ export class UsersActivity extends BaseEntity {

@Column({ type: "timestamp with time zone" })
timestamp: Date | undefined;

@ManyToOne(() => User, (user) => user.activities)
user: User;

@ManyToOne(() => CoursesStep, (step) => step.activities)
step: CoursesStep;
}
13 changes: 12 additions & 1 deletion backend/src/entity/UsersRoles.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from "typeorm";
import {
BaseEntity,
Column,
Entity,
ManyToOne,
PrimaryGeneratedColumn,
} from "typeorm";
import { User } from "./User";
import { CoursesViewer } from "./CoursesViewers";

@Entity("users_roles")
export class UsersRole extends BaseEntity {
Expand All @@ -7,4 +15,7 @@ export class UsersRole extends BaseEntity {

@Column({ unique: true, type: "varchar", length: 50 })
name: string | undefined;

@ManyToOne(() => CoursesViewer, (viewer) => viewer.roles)
viewer: CoursesViewer;
}
14 changes: 14 additions & 0 deletions backend/src/middlewares/logger.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { NextFunction, Request, Response } from "express";

export const loggerMiddleware = (
request: Request,
response: Response,
next: NextFunction,
) => {
response.on("finish", function () {
console.log(
`[${new Date().toISOString()}]\t[${response.statusCode}]\t${request.method}\t-->\t${request.path}`,
);
});
next();
};
2 changes: 2 additions & 0 deletions backend/src/server.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import express from "express";
import { loggerMiddleware } from "./middlewares/logger";
import { config } from "../src/config/Config";
import cors from "cors";

export const app = express();
const port = 3000;

app.use(loggerMiddleware);
app.use(express.json());

const corsOptions = {
Expand Down
5 changes: 0 additions & 5 deletions package.json

This file was deleted.

Loading

0 comments on commit 1b73b74

Please sign in to comment.