fix: full fun of migrations from start

This commit is contained in:
Julian Krauser 2025-06-06 09:33:06 +02:00
parent 0582cb3af7
commit c849b8eb18
3 changed files with 84 additions and 10 deletions

View file

@ -6,7 +6,9 @@ export class NewsletterColumnType1744351418751 implements MigrationInterface {
name = "NewsletterColumnType1744351418751"; name = "NewsletterColumnType1744351418751";
public async up(queryRunner: QueryRunner): Promise<void> { public async up(queryRunner: QueryRunner): Promise<void> {
let newsletters = await queryRunner.manager.getRepository("newsletter").find(); let newsletters = await queryRunner.manager
.getRepository("newsletter")
.find({ select: { id: true, newsletterTitle: true, newsletterSignatur: true } });
await queryRunner.dropColumn("newsletter", "newsletterTitle"); await queryRunner.dropColumn("newsletter", "newsletterTitle");
await queryRunner.dropColumn("newsletter", "newsletterSignatur"); await queryRunner.dropColumn("newsletter", "newsletterSignatur");
@ -24,7 +26,9 @@ export class NewsletterColumnType1744351418751 implements MigrationInterface {
} }
public async down(queryRunner: QueryRunner): Promise<void> { public async down(queryRunner: QueryRunner): Promise<void> {
let newsletters = await queryRunner.manager.getRepository("newsletter").find(); let newsletters = await queryRunner.manager
.getRepository("newsletter")
.find({ select: { id: true, newsletterTitle: true, newsletterSignatur: true } });
await queryRunner.dropColumn("newsletter", "newsletterTitle"); await queryRunner.dropColumn("newsletter", "newsletterTitle");
await queryRunner.dropColumn("newsletter", "newsletterSignatur"); await queryRunner.dropColumn("newsletter", "newsletterSignatur");

View file

@ -2,9 +2,9 @@ import { MigrationInterface, QueryRunner, TableColumn } from "typeorm";
import { import {
education_table, education_table,
member_educations_table, member_educations_table,
member_view_mysql, member_view2_mysql,
member_view_postgres, member_view2_postgres,
member_view_sqlite, member_view2_sqlite,
} from "./baseSchemaTables/member"; } from "./baseSchemaTables/member";
import { getDefaultByORM, getTypeByORM } from "./ormHelper"; import { getDefaultByORM, getTypeByORM } from "./ormHelper";
import { DB_TYPE } from "../env.defaults"; import { DB_TYPE } from "../env.defaults";
@ -21,9 +21,9 @@ export class MemberExtendData1748953828644 implements MigrationInterface {
); );
await queryRunner.dropView("member_view"); await queryRunner.dropView("member_view");
if (DB_TYPE == "postgres") await queryRunner.createView(member_view_postgres, true); if (DB_TYPE == "postgres") await queryRunner.createView(member_view2_postgres, true);
else if (DB_TYPE == "mysql") await queryRunner.createView(member_view_mysql, true); else if (DB_TYPE == "mysql") await queryRunner.createView(member_view2_mysql, true);
else if (DB_TYPE == "sqlite") await queryRunner.createView(member_view_sqlite, true); else if (DB_TYPE == "sqlite") await queryRunner.createView(member_view2_sqlite, true);
} }
public async down(queryRunner: QueryRunner): Promise<void> { public async down(queryRunner: QueryRunner): Promise<void> {

View file

@ -267,7 +267,6 @@ export const member_view_mysql = new View({
SELECT SELECT
\`member\`.\`id\` AS \`id\`, \`member\`.\`id\` AS \`id\`,
\`member\`.\`internalId\` AS \`internalId\`, \`member\`.\`internalId\` AS \`internalId\`,
\`member\`.\`note\` AS \`note\`,
\`member\`.\`firstname\` AS \`firstname\`, \`member\`.\`firstname\` AS \`firstname\`,
\`member\`.\`lastname\` AS \`lastname\`, \`member\`.\`lastname\` AS \`lastname\`,
\`member\`.\`nameaffix\` AS \`nameaffix\`, \`member\`.\`nameaffix\` AS \`nameaffix\`,
@ -297,7 +296,6 @@ export const member_view_postgres = new View({
SELECT SELECT
"member"."id" AS "id", "member"."id" AS "id",
"member"."internalId" AS "internalId", "member"."internalId" AS "internalId",
"member"."note" AS "note",
"member"."firstname" AS "firstname", "member"."firstname" AS "firstname",
"member"."lastname" AS "lastname", "member"."lastname" AS "lastname",
"member"."nameaffix" AS "nameaffix", "member"."nameaffix" AS "nameaffix",
@ -312,6 +310,78 @@ export const member_view_postgres = new View({
}); });
export const member_view_sqlite = new View({ export const member_view_sqlite = new View({
name: "member_view",
expression: `
SELECT
member.id AS id,
member.internalId AS internalId,
member.firstname AS firstname,
member.lastname AS lastname,
member.nameaffix AS nameaffix,
member.birthdate AS birthdate,
salutation.salutation AS salutation,
(strftime('%Y', 'now') - strftime('%Y', member.birthdate) - (strftime('%m-%d', 'now') < strftime('%m-%d', member.birthdate))) AS todayAge,
FLOOR(strftime('%Y', 'now') - strftime('%Y', member.birthdate)) AS ageThisYear,
(strftime('%Y', 'now') - strftime('%Y', member.birthdate)) || ' years ' ||
(strftime('%m', 'now') - strftime('%m', member.birthdate)) || ' months ' ||
(strftime('%d', 'now') - strftime('%d', member.birthdate)) || ' days'
AS exactAge
FROM member member
LEFT JOIN salutation salutation ON salutation.id=member.salutationId
`,
});
export const member_view2_mysql = new View({
name: "member_view",
expression: `
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\`,
\`member\`.\`birthdate\` AS \`birthdate\`,
\`salutation\`.\`salutation\` AS \`salutation\`,
TIMESTAMPDIFF(YEAR, \`member\`.\`birthdate\`, CURDATE()) AS \`todayAge\`,
YEAR(CURDATE()) - YEAR(\`member\`.\`birthdate\`) AS \`ageThisYear\`,
CONCAT(
TIMESTAMPDIFF(YEAR, \`member\`.\`birthdate\`, CURDATE()), ' years ',
TIMESTAMPDIFF(MONTH, \`member\`.\`birthdate\`, CURDATE()) % 12, ' months ',
TIMESTAMPDIFF(DAY,
DATE_ADD(
\`member\`.\`birthdate\`,
INTERVAL TIMESTAMPDIFF(MONTH, \`member\`.\`birthdate\`, CURDATE()) MONTH
),
CURDATE()
), ' days'
) AS \`exactAge\`
FROM \`member\` \`member\`
LEFT JOIN \`salutation\` \`salutation\` ON \`salutation\`.\`id\`=\`member\`.\`salutationId\`
`,
});
export const member_view2_postgres = new View({
name: "member_view",
expression: `
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",
"member"."birthdate" AS "birthdate",
"salutation"."salutation" AS "salutation",
DATE_PART('year', AGE(CURRENT_DATE, member.birthdate)) AS "todayAge",
EXTRACT(YEAR FROM CURRENT_DATE) - EXTRACT(YEAR FROM member.birthdate) AS "ageThisYear",
AGE(CURRENT_DATE, member.birthdate) AS "exactAge"
FROM "member" "member"
LEFT JOIN "salutation" "salutation" ON "salutation"."id"="member"."salutationId"
`,
});
export const member_view2_sqlite = new View({
name: "member_view", name: "member_view",
expression: ` expression: `
SELECT SELECT