В 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);
if (!resp || !resp.data || !resp.data.issue) {
this.logger.error(
`Failed to load data for from redmine, issueNumber = ${issueNumber}`,
`Failed to load issue from redmine, issueNumber = ${issueNumber}`,
);
return null;
}
@ -33,10 +33,35 @@ export class RedmineDataLoader {
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 {
if (typeof this.urlPrefix !== 'string' || this.urlPrefix.length === 0) {
throw 'REDMINE_URL_PREFIX is undefined';
}
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 = {
id: number;
login: string;
firstname: string;
lastname: string;
mail: string;