minor v1.6.0 #114

Merged
jkeffects merged 14 commits from develop into main 2025-06-06 07:35:59 +00:00
3 changed files with 84 additions and 10 deletions
Showing only changes of commit c849b8eb18 - Show all commits

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