В redmine-data-loader добавлены функции для загрузки пользователей
This commit is contained in:
parent
b20ecee667
commit
318a0db54c
2 changed files with 27 additions and 1 deletions
|
|
@ -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`;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
1
libs/redmine-types/index.d.ts
vendored
1
libs/redmine-types/index.d.ts
vendored
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue