Compare commits
No commits in common. "753cfdd5da9ce74a955177ac55ba6072ea7edfd2" and "41cb4eb5691e70f3b812b85a5435255c2257fa7e" have entirely different histories.
753cfdd5da
...
41cb4eb569
8 changed files with 11 additions and 85 deletions
|
@ -92,18 +92,6 @@ export async function getMembersByIds(req: Request, res: Response): Promise<any>
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @description get member latest inserted InternalId
|
|
||||||
* @param req {Request} Express req object
|
|
||||||
* @param res {Response} Express res object
|
|
||||||
* @returns {Promise<*>}
|
|
||||||
*/
|
|
||||||
export async function getMemberLastInternalId(req: Request, res: Response): Promise<any> {
|
|
||||||
let latest = await MemberService.getLatestInternalId();
|
|
||||||
|
|
||||||
res.send(latest);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description get member by id
|
* @description get member by id
|
||||||
* @param req {Request} Express req object
|
* @param req {Request} Express req object
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import "dotenv/config";
|
import "dotenv/config";
|
||||||
import "reflect-metadata";
|
import "reflect-metadata";
|
||||||
import { DataSource } from "typeorm";
|
import { DataSource } from "typeorm";
|
||||||
import { DB_HOST, DB_NAME, DB_PASSWORD, DB_PORT, DB_TYPE, DB_USERNAME } from "./env.defaults";
|
|
||||||
|
|
||||||
import { user } from "./entity/management/user";
|
import { user } from "./entity/management/user";
|
||||||
import { refresh } from "./entity/refresh";
|
import { refresh } from "./entity/refresh";
|
||||||
|
@ -44,7 +43,6 @@ import { newsletterConfig } from "./entity/configuration/newsletterConfig";
|
||||||
import { webapi } from "./entity/management/webapi";
|
import { webapi } from "./entity/management/webapi";
|
||||||
import { webapiPermission } from "./entity/management/webapi_permission";
|
import { webapiPermission } from "./entity/management/webapi_permission";
|
||||||
import { salutation } from "./entity/configuration/salutation";
|
import { salutation } from "./entity/configuration/salutation";
|
||||||
import { setting } from "./entity/management/setting";
|
|
||||||
|
|
||||||
import { BackupAndResetDatabase1738166124200 } from "./migrations/1738166124200-BackupAndResetDatabase";
|
import { BackupAndResetDatabase1738166124200 } from "./migrations/1738166124200-BackupAndResetDatabase";
|
||||||
import { CreateSchema1738166167472 } from "./migrations/1738166167472-CreateSchema";
|
import { CreateSchema1738166167472 } from "./migrations/1738166167472-CreateSchema";
|
||||||
|
@ -52,8 +50,9 @@ import { TemplatesAndProtocolSort1742549956787 } from "./migrations/174254995678
|
||||||
import { QueryToUUID1742922178643 } from "./migrations/1742922178643-queryToUUID";
|
import { QueryToUUID1742922178643 } from "./migrations/1742922178643-queryToUUID";
|
||||||
import { NewsletterColumnType1744351418751 } from "./migrations/1744351418751-newsletterColumnType";
|
import { NewsletterColumnType1744351418751 } from "./migrations/1744351418751-newsletterColumnType";
|
||||||
import { QueryUpdatedAt1744795756230 } from "./migrations/1744795756230-QueryUpdatedAt";
|
import { QueryUpdatedAt1744795756230 } from "./migrations/1744795756230-QueryUpdatedAt";
|
||||||
|
import { setting } from "./entity/management/setting";
|
||||||
import { SettingsFromEnv1745059495808 } from "./migrations/1745059495808-settingsFromEnv";
|
import { SettingsFromEnv1745059495808 } from "./migrations/1745059495808-settingsFromEnv";
|
||||||
import { MemberCreatedAt1746006549262 } from "./migrations/1746006549262-memberCreatedAt";
|
import { DB_HOST, DB_NAME, DB_PASSWORD, DB_PORT, DB_TYPE, DB_USERNAME } from "./env.defaults";
|
||||||
|
|
||||||
const dataSource = new DataSource({
|
const dataSource = new DataSource({
|
||||||
type: DB_TYPE as any,
|
type: DB_TYPE as any,
|
||||||
|
@ -116,7 +115,6 @@ const dataSource = new DataSource({
|
||||||
NewsletterColumnType1744351418751,
|
NewsletterColumnType1744351418751,
|
||||||
QueryUpdatedAt1744795756230,
|
QueryUpdatedAt1744795756230,
|
||||||
SettingsFromEnv1745059495808,
|
SettingsFromEnv1745059495808,
|
||||||
MemberCreatedAt1746006549262,
|
|
||||||
],
|
],
|
||||||
migrationsRun: true,
|
migrationsRun: true,
|
||||||
migrationsTransactionMode: "each",
|
migrationsTransactionMode: "each",
|
||||||
|
|
|
@ -1,14 +1,4 @@
|
||||||
import {
|
import { Column, ColumnType, Entity, JoinColumn, ManyToOne, OneToMany, OneToOne, PrimaryColumn } from "typeorm";
|
||||||
Column,
|
|
||||||
ColumnType,
|
|
||||||
CreateDateColumn,
|
|
||||||
Entity,
|
|
||||||
JoinColumn,
|
|
||||||
ManyToOne,
|
|
||||||
OneToMany,
|
|
||||||
OneToOne,
|
|
||||||
PrimaryColumn,
|
|
||||||
} from "typeorm";
|
|
||||||
import { membership } from "./membership";
|
import { membership } from "./membership";
|
||||||
import { memberAwards } from "./memberAwards";
|
import { memberAwards } from "./memberAwards";
|
||||||
import { memberQualifications } from "./memberQualifications";
|
import { memberQualifications } from "./memberQualifications";
|
||||||
|
@ -40,9 +30,6 @@ export class member {
|
||||||
@Column()
|
@Column()
|
||||||
salutationId: number;
|
salutationId: number;
|
||||||
|
|
||||||
@CreateDateColumn()
|
|
||||||
createdAt: Date;
|
|
||||||
|
|
||||||
@ManyToOne(() => salutation, (salutation) => salutation.members, {
|
@ManyToOne(() => salutation, (salutation) => salutation.members, {
|
||||||
nullable: false,
|
nullable: false,
|
||||||
onDelete: "RESTRICT",
|
onDelete: "RESTRICT",
|
||||||
|
|
|
@ -18,6 +18,7 @@ export default abstract class NewsletterFactory {
|
||||||
newsletterSignatur: record.newsletterSignatur,
|
newsletterSignatur: record.newsletterSignatur,
|
||||||
isSent: record.isSent,
|
isSent: record.isSent,
|
||||||
recipientsByQueryId: record?.recipientsByQuery ? record.recipientsByQuery.id : null,
|
recipientsByQueryId: record?.recipientsByQuery ? record.recipientsByQuery.id : null,
|
||||||
|
recipientsByQuery: record?.recipientsByQuery ? QueryStoreFactory.mapToSingle(record.recipientsByQuery) : null,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
import { MigrationInterface, QueryRunner, TableColumn } from "typeorm";
|
|
||||||
import { getTypeByORM, getDefaultByORM } from "./ormHelper";
|
|
||||||
|
|
||||||
export class MemberCreatedAt1746006549262 implements MigrationInterface {
|
|
||||||
name = "MemberCreatedAt1746006549262";
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.addColumn(
|
|
||||||
"member",
|
|
||||||
new TableColumn({
|
|
||||||
name: "createdAt",
|
|
||||||
...getTypeByORM("datetime", false, 6),
|
|
||||||
default: getDefaultByORM("currentTimestamp", 6),
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.dropColumn("member", "createdAt");
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -20,7 +20,6 @@ import {
|
||||||
getExecutivePositionByMemberAndRecord,
|
getExecutivePositionByMemberAndRecord,
|
||||||
getExecutivePositionsByMember,
|
getExecutivePositionsByMember,
|
||||||
getMemberById,
|
getMemberById,
|
||||||
getMemberLastInternalId,
|
|
||||||
getMemberPrintoutById,
|
getMemberPrintoutById,
|
||||||
getMembersByIds,
|
getMembersByIds,
|
||||||
getMembershipByMemberAndRecord,
|
getMembershipByMemberAndRecord,
|
||||||
|
@ -44,10 +43,6 @@ router.get("/", async (req: Request, res: Response) => {
|
||||||
await getAllMembers(req, res);
|
await getAllMembers(req, res);
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get("/last/internalId", async (req: Request, res: Response) => {
|
|
||||||
await getMemberLastInternalId(req, res);
|
|
||||||
});
|
|
||||||
|
|
||||||
router.post("/ids", async (req: Request, res: Response) => {
|
router.post("/ids", async (req: Request, res: Response) => {
|
||||||
await getMembersByIds(req, res);
|
await getMembersByIds(req, res);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { Brackets, Like, Not, SelectQueryBuilder } from "typeorm";
|
import { Brackets, Like, SelectQueryBuilder } from "typeorm";
|
||||||
import { dataSource } from "../../../data-source";
|
import { dataSource } from "../../../data-source";
|
||||||
import { member } from "../../../entity/club/member/member";
|
import { member } from "../../../entity/club/member/member";
|
||||||
import DatabaseActionException from "../../../exceptions/databaseActionException";
|
import DatabaseActionException from "../../../exceptions/databaseActionException";
|
||||||
|
@ -29,12 +29,9 @@ export default abstract class MemberService {
|
||||||
let searchBits = search.split(" ");
|
let searchBits = search.split(" ");
|
||||||
|
|
||||||
if (searchBits.length < 2) {
|
if (searchBits.length < 2) {
|
||||||
query = query.where(
|
query = query.where(`member.firstname LIKE :searchQuery OR member.lastname LIKE :searchQuery`, {
|
||||||
`member.firstname LIKE :searchQuery OR member.lastname LIKE :searchQuery OR member.internalId LIKE :searchQuery`,
|
searchQuery: `%${searchBits[0]}%`,
|
||||||
{
|
});
|
||||||
searchQuery: `%${searchBits[0]}%`,
|
|
||||||
}
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
searchBits
|
searchBits
|
||||||
.flatMap((v, i) => searchBits.slice(i + 1).map((w) => [v, w]))
|
.flatMap((v, i) => searchBits.slice(i + 1).map((w) => [v, w]))
|
||||||
|
@ -158,28 +155,6 @@ export default abstract class MemberService {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @description get latest inserted memberId
|
|
||||||
* @returns {Promise<string>}
|
|
||||||
*/
|
|
||||||
static async getLatestInternalId(): Promise<string> {
|
|
||||||
return await dataSource
|
|
||||||
.getRepository(member)
|
|
||||||
.createQueryBuilder("member")
|
|
||||||
.where("member.internalId IS NOT NULL")
|
|
||||||
.andWhere({ internalId: Not("") })
|
|
||||||
.orderBy("member.createdAt", "DESC")
|
|
||||||
.addOrderBy("member.internalId", "DESC")
|
|
||||||
.limit(1)
|
|
||||||
.getOne()
|
|
||||||
.then((res) => {
|
|
||||||
return res?.internalId ?? "";
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
throw new DatabaseActionException("SELECT", "memberId", err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description apply member joins to query
|
* @description apply member joins to query
|
||||||
* @returns {SelectQueryBuilder<member>}
|
* @returns {SelectQueryBuilder<member>}
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { QueryStoreViewModel } from "../../configuration/queryStore.models";
|
||||||
|
|
||||||
export interface NewsletterViewModel {
|
export interface NewsletterViewModel {
|
||||||
id: number;
|
id: number;
|
||||||
title: string;
|
title: string;
|
||||||
|
@ -7,4 +9,5 @@ export interface NewsletterViewModel {
|
||||||
newsletterSignatur: string;
|
newsletterSignatur: string;
|
||||||
isSent: boolean;
|
isSent: boolean;
|
||||||
recipientsByQueryId?: string;
|
recipientsByQueryId?: string;
|
||||||
|
recipientsByQuery?: QueryStoreViewModel;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue