education controller, service, command
This commit is contained in:
parent
5368a96d0f
commit
fded8a663a
29 changed files with 884 additions and 5 deletions
34
src/migrations/1748953828644-memberExtendData.ts
Normal file
34
src/migrations/1748953828644-memberExtendData.ts
Normal file
|
@ -0,0 +1,34 @@
|
|||
import { MigrationInterface, QueryRunner, TableColumn } from "typeorm";
|
||||
import {
|
||||
education_table,
|
||||
member_educations_table,
|
||||
member_view_mysql,
|
||||
member_view_postgres,
|
||||
member_view_sqlite,
|
||||
} from "./baseSchemaTables/member";
|
||||
import { getDefaultByORM, getTypeByORM } from "./ormHelper";
|
||||
import { DB_TYPE } from "../env.defaults";
|
||||
|
||||
export class MemberExtendData1748953828644 implements MigrationInterface {
|
||||
name = "MemberExtendData1748953828644";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.createTable(education_table, true, true, true);
|
||||
await queryRunner.createTable(member_educations_table, true, true, true);
|
||||
await queryRunner.addColumn(
|
||||
"member",
|
||||
new TableColumn({ name: "note", ...getTypeByORM("varchar", true), default: getDefaultByORM("null") })
|
||||
);
|
||||
|
||||
await queryRunner.dropView("member_view");
|
||||
if (DB_TYPE == "postgres") await queryRunner.createView(member_view_postgres, true);
|
||||
else if (DB_TYPE == "mysql") await queryRunner.createView(member_view_mysql, true);
|
||||
else if (DB_TYPE == "sqlite") await queryRunner.createView(member_view_sqlite, true);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.dropTable(member_educations_table, true, true, true);
|
||||
await queryRunner.dropTable(education_table, true, true, true);
|
||||
await queryRunner.dropColumn("member", "note");
|
||||
}
|
||||
}
|
|
@ -51,6 +51,15 @@ export const qualification_table = new Table({
|
|||
],
|
||||
});
|
||||
|
||||
export const education_table = new Table({
|
||||
name: "education",
|
||||
columns: [
|
||||
{ name: "id", ...getTypeByORM("int"), ...isIncrementPrimary },
|
||||
{ name: "education", ...getTypeByORM("varchar"), isUnique: true },
|
||||
{ name: "description", ...getTypeByORM("varchar"), isNullable: true },
|
||||
],
|
||||
});
|
||||
|
||||
/** member and relations */
|
||||
export const member_table = new Table({
|
||||
name: "member",
|
||||
|
@ -222,6 +231,35 @@ export const member_communication_table = new Table({
|
|||
],
|
||||
});
|
||||
|
||||
export const member_educations_table = new Table({
|
||||
name: "member_educations",
|
||||
columns: [
|
||||
{ name: "id", ...getTypeByORM("int"), ...isIncrementPrimary },
|
||||
{ name: "start", ...getTypeByORM("date") },
|
||||
{ name: "end", ...getTypeByORM("date", true), default: getDefaultByORM("null") },
|
||||
{ name: "note", ...getTypeByORM("varchar"), isNullable: true },
|
||||
{ name: "place", ...getTypeByORM("varchar"), isNullable: true },
|
||||
{ name: "memberId", ...getTypeByORM("uuid") },
|
||||
{ name: "educationId", ...getTypeByORM("int") },
|
||||
],
|
||||
foreignKeys: [
|
||||
new TableForeignKey({
|
||||
columnNames: ["memberId"],
|
||||
referencedTableName: "member",
|
||||
referencedColumnNames: ["id"],
|
||||
onDelete: "CASCADE",
|
||||
onUpdate: "RESTRICT",
|
||||
}),
|
||||
new TableForeignKey({
|
||||
columnNames: ["educationId"],
|
||||
referencedTableName: "education",
|
||||
referencedColumnNames: ["id"],
|
||||
onDelete: "RESTRICT",
|
||||
onUpdate: "RESTRICT",
|
||||
}),
|
||||
],
|
||||
});
|
||||
|
||||
/** views */
|
||||
export const member_view_mysql = new View({
|
||||
name: "member_view",
|
||||
|
@ -229,6 +267,7 @@ export const member_view_mysql = new View({
|
|||
SELECT
|
||||
\`member\`.\`id\` AS \`id\`,
|
||||
\`member\`.\`internalId\` AS \`internalId\`,
|
||||
\`member\`.\`note\` AS \`note\`,
|
||||
\`member\`.\`firstname\` AS \`firstname\`,
|
||||
\`member\`.\`lastname\` AS \`lastname\`,
|
||||
\`member\`.\`nameaffix\` AS \`nameaffix\`,
|
||||
|
@ -258,6 +297,7 @@ export const member_view_postgres = new View({
|
|||
SELECT
|
||||
"member"."id" AS "id",
|
||||
"member"."internalId" AS "internalId",
|
||||
"member"."note" AS "note",
|
||||
"member"."firstname" AS "firstname",
|
||||
"member"."lastname" AS "lastname",
|
||||
"member"."nameaffix" AS "nameaffix",
|
||||
|
@ -277,6 +317,7 @@ export const member_view_sqlite = new View({
|
|||
SELECT
|
||||
member.id AS id,
|
||||
member.internalId AS internalId,
|
||||
member.note AS note,
|
||||
member.firstname AS firstname,
|
||||
member.lastname AS lastname,
|
||||
member.nameaffix AS nameaffix,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue