mirror of
https://github.com/jdalrymple/gitbeaker.git
synced 2026-01-25 16:04:01 +00:00
67 lines
1.7 KiB
TypeScript
67 lines
1.7 KiB
TypeScript
import { BaseResource } from '@gitbeaker/requester-utils';
|
|
import { RequestHelper, endpoint } from '../infrastructure';
|
|
import type {
|
|
BaseRequestOptions,
|
|
GitlabAPIResponse,
|
|
MappedOmit,
|
|
OneOrNoneOf,
|
|
PaginationRequestOptions,
|
|
PaginationTypes,
|
|
} from '../infrastructure';
|
|
import { SimpleUserSchema } from './Users';
|
|
|
|
export type AllEventOptions = {
|
|
action?:
|
|
| 'created'
|
|
| 'updated'
|
|
| 'closed'
|
|
| 'reopened'
|
|
| 'pushed'
|
|
| 'commented'
|
|
| 'merged'
|
|
| 'joined'
|
|
| 'left'
|
|
| 'destroyed'
|
|
| 'expired';
|
|
targetType?: 'issue' | 'milestone' | 'merge_request' | 'note' | 'project' | 'snippet' | 'user';
|
|
before?: string;
|
|
after?: string;
|
|
scope?: string;
|
|
sort?: 'asc' | 'desc';
|
|
};
|
|
|
|
export interface EventSchema extends Record<string, unknown> {
|
|
id: number;
|
|
title?: string;
|
|
project_id: number;
|
|
action_name: string;
|
|
target_id: number;
|
|
target_type: string;
|
|
author_id: number;
|
|
target_title: string;
|
|
created_at: string;
|
|
author: MappedOmit<SimpleUserSchema, 'created_at'>;
|
|
author_username: string;
|
|
}
|
|
|
|
export class Events<C extends boolean = false> extends BaseResource<C> {
|
|
all<E extends boolean = false, P extends PaginationTypes = 'offset'>(
|
|
{
|
|
projectId,
|
|
userId,
|
|
...options
|
|
}: OneOrNoneOf<{ projectId?: string | number; userId: string | number }> &
|
|
AllEventOptions &
|
|
PaginationRequestOptions<P> &
|
|
BaseRequestOptions<E> = {} as any,
|
|
): Promise<GitlabAPIResponse<EventSchema[], C, E, P>> {
|
|
let url: string;
|
|
|
|
if (projectId) url = endpoint`projects/${projectId}/events`;
|
|
else if (userId) url = endpoint`users/${userId}/events`;
|
|
else url = 'events';
|
|
|
|
return RequestHelper.get<EventSchema[]>()(this, url, options);
|
|
}
|
|
}
|