В redmine-data-loader добавлены функции для загрузки пользователей

This commit is contained in:
Pavel Gnedov 2022-07-18 13:24:58 +07:00
parent b20ecee667
commit 318a0db54c
2 changed files with 27 additions and 1 deletions

View file

@ -23,7 +23,7 @@ export class RedmineDataLoader {
const resp = await axios.get(url); const resp = await axios.get(url);
if (!resp || !resp.data || !resp.data.issue) { if (!resp || !resp.data || !resp.data.issue) {
this.logger.error( this.logger.error(
`Failed to load data for from redmine, issueNumber = ${issueNumber}`, `Failed to load issue from redmine, issueNumber = ${issueNumber}`,
); );
return null; return null;
} }
@ -33,10 +33,35 @@ export class RedmineDataLoader {
return resp.data.issue; return resp.data.issue;
} }
async loadUsers(users: number[]): Promise<(RedmineTypes.User | null)[]> {
const promises = users.map((user) => this.loadUser(user));
return Promise.all(promises);
}
async loadUser(userNumber: number): Promise<RedmineTypes.User | null> {
const url = this.getUserUrl(userNumber);
const resp = await axios.get(url);
if (!resp || !resp.data?.user) {
this.logger.error(
`Failed to load user from redmine, userNumber = ${userNumber}`,
);
return null;
}
const user: RedmineTypes.User = resp.data.user;
this.logger.debug(
`Loaded user, userNumber = ${userNumber}, login = ${user.login}, firstname = ${user.firstname}, lastname = ${user.lastname}`,
);
return user;
}
private getIssueUrl(issueNumber: number): string { private getIssueUrl(issueNumber: number): string {
if (typeof this.urlPrefix !== 'string' || this.urlPrefix.length === 0) { if (typeof this.urlPrefix !== 'string' || this.urlPrefix.length === 0) {
throw 'REDMINE_URL_PREFIX is undefined'; throw 'REDMINE_URL_PREFIX is undefined';
} }
return `${this.urlPrefix}/issues/${issueNumber}.json?include=children,journals,relations`; return `${this.urlPrefix}/issues/${issueNumber}.json?include=children,journals,relations`;
} }
private getUserUrl(userNumber: number): string {
return `${this.urlPrefix}/users/${userNumber}.json`;
}
} }

View file

@ -91,6 +91,7 @@ export module RedmineTypes {
export type User = { export type User = {
id: number; id: number;
login: string;
firstname: string; firstname: string;
lastname: string; lastname: string;
mail: string; mail: string;