mirror of
https://github.com/Unleash/unleash.git
synced 2025-08-23 13:46:45 +02:00
feat: ability to search events by type with pagination (#10217)
This helps us to use this feature to implement partial user sync by observing the changes in the audit log
This commit is contained in:
parent
67f81d5d0b
commit
0f9774800e
2
.github/workflows/build_prs_jest_report.yaml
vendored
2
.github/workflows/build_prs_jest_report.yaml
vendored
@ -14,7 +14,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
pull_requests: write
|
||||
pull-requests: write
|
||||
name: build # temporary solution to trick branch protection rules
|
||||
|
||||
services:
|
||||
|
@ -1,4 +1,4 @@
|
||||
import EventStore from '../features/events/event-store.js';
|
||||
import { EventStore } from '../features/events/event-store.js';
|
||||
// For backward compatibility
|
||||
export * from '../features/events/event-store.js';
|
||||
export default EventStore;
|
||||
|
@ -7,7 +7,7 @@ import {
|
||||
ReleasePlanTemplateStore,
|
||||
} from '../types/index.js';
|
||||
|
||||
import EventStore from '../features/events/event-store.js';
|
||||
import { EventStore } from '../features/events/event-store.js';
|
||||
import FeatureToggleStore from '../features/feature-toggle/feature-toggle-store.js';
|
||||
import FeatureTypeStore from './feature-type-store.js';
|
||||
import StrategyStore from './strategy-store.js';
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { ClientFeatureToggleDelta } from './client-feature-toggle-delta.js';
|
||||
import EventStore from '../../events/event-store.js';
|
||||
import { EventStore } from '../../events/event-store.js';
|
||||
import ConfigurationRevisionService from '../../feature-toggle/configuration-revision-service.js';
|
||||
import type { IUnleashConfig } from '../../../types/index.js';
|
||||
import type { Db } from '../../../db/db.js';
|
||||
|
@ -1,7 +1,7 @@
|
||||
import FakeEventStore from '../../../test/fixtures/fake-event-store.js';
|
||||
import FakeFeatureTagStore from '../../../test/fixtures/fake-feature-tag-store.js';
|
||||
import type { Db } from '../../db/db.js';
|
||||
import EventStore from './event-store.js';
|
||||
import { EventStore } from './event-store.js';
|
||||
import FeatureTagStore from '../../db/feature-tag-store.js';
|
||||
import { EventService } from '../../services/index.js';
|
||||
import type {
|
||||
|
@ -1,4 +1,4 @@
|
||||
import EventStore from './event-store.js';
|
||||
import { EventStore } from './event-store.js';
|
||||
import getLogger from '../../../test/fixtures/no-logger.js';
|
||||
import dbInit, {
|
||||
type ITestDb,
|
||||
|
@ -1,5 +1,5 @@
|
||||
import knex from 'knex';
|
||||
import EventStore from './event-store.js';
|
||||
import { EventStore } from './event-store.js';
|
||||
import getLogger from '../../../test/fixtures/no-logger.js';
|
||||
import { subHours, formatRFC3339 } from 'date-fns';
|
||||
import dbInit from '../../../test/e2e/helpers/database-init.js';
|
||||
|
@ -101,7 +101,7 @@ export interface IEventTable {
|
||||
|
||||
const TABLE = 'events';
|
||||
|
||||
class EventStore implements IEventStore {
|
||||
export class EventStore implements IEventStore {
|
||||
private db: Db;
|
||||
|
||||
// only one shared event emitter should exist across all event store instances
|
||||
@ -375,7 +375,7 @@ class EventStore implements IEventStore {
|
||||
): Promise<IEvent[]> {
|
||||
const query = this.buildSearchQuery(queryParams, params.query)
|
||||
.select(options?.withIp ? [...EVENT_COLUMNS, 'ip'] : EVENT_COLUMNS)
|
||||
.orderBy('created_at', 'desc')
|
||||
.orderBy('created_at', params.order || 'desc')
|
||||
.limit(Number(params.limit) ?? 100)
|
||||
.offset(Number(params.offset) ?? 0);
|
||||
|
||||
|
@ -3,7 +3,7 @@ import { FakeFeatureLifecycleStore } from './fake-feature-lifecycle-store.js';
|
||||
import { FeatureLifecycleService } from './feature-lifecycle-service.js';
|
||||
import FakeEnvironmentStore from '../project-environments/fake-environment-store.js';
|
||||
import type { IUnleashConfig } from '../../types/index.js';
|
||||
import EventStore from '../../db/event-store.js';
|
||||
import { EventStore } from '../../db/event-store.js';
|
||||
import type { Db } from '../../db/db.js';
|
||||
import { FeatureLifecycleStore } from './feature-lifecycle-store.js';
|
||||
import EnvironmentStore from '../project-environments/environment-store.js';
|
||||
|
@ -20,7 +20,7 @@ import SegmentStore from '../segment/segment-store.js';
|
||||
import RoleStore from '../../db/role-store.js';
|
||||
import SettingStore from '../../db/setting-store.js';
|
||||
import ClientInstanceStore from '../../db/client-instance-store.js';
|
||||
import EventStore from '../events/event-store.js';
|
||||
import { EventStore } from '../events/event-store.js';
|
||||
import { ApiTokenStore } from '../../db/api-token-store.js';
|
||||
import { ClientMetricsStoreV2 } from '../metrics/client-metrics/client-metrics-store-v2.js';
|
||||
import VersionService from '../../services/version-service.js';
|
||||
|
@ -7,7 +7,7 @@ import { ProjectOwnersReadModel } from '../project/project-owners-read-model.js'
|
||||
import { FakeProjectOwnersReadModel } from '../project/fake-project-owners-read-model.js';
|
||||
import { ProjectReadModel } from '../project/project-read-model.js';
|
||||
import { FakeProjectReadModel } from '../project/fake-project-read-model.js';
|
||||
import EventStore from '../../db/event-store.js';
|
||||
import { EventStore } from '../../db/event-store.js';
|
||||
import { FeatureEventFormatterMd } from '../../addons/feature-event-formatter-md.js';
|
||||
import FakeEventStore from '../../../test/fixtures/fake-event-store.js';
|
||||
import { FakePrivateProjectChecker } from '../private-project/fakePrivateProjectChecker.js';
|
||||
|
@ -1,6 +1,6 @@
|
||||
import type { Db, IUnleashConfig } from '../../types/index.js';
|
||||
import { ProjectStatusService } from './project-status-service.js';
|
||||
import EventStore from '../events/event-store.js';
|
||||
import { EventStore } from '../events/event-store.js';
|
||||
import FakeEventStore from '../../../test/fixtures/fake-event-store.js';
|
||||
import ProjectStore from '../project/project-store.js';
|
||||
import FakeProjectStore from '../../../test/fixtures/fake-project-store.js';
|
||||
|
@ -1,5 +1,5 @@
|
||||
import type { Db, IUnleashConfig } from '../../types/index.js';
|
||||
import EventStore from '../events/event-store.js';
|
||||
import { EventStore } from '../events/event-store.js';
|
||||
import GroupStore from '../../db/group-store.js';
|
||||
import { AccountStore } from '../../db/account-store.js';
|
||||
import EnvironmentStore from '../project-environments/environment-store.js';
|
||||
|
@ -126,7 +126,7 @@ import metricsHelper from './util/metrics-helper.js';
|
||||
import type { ReleasePlanMilestoneWriteModel } from './features/release-plans/release-plan-milestone-store.js';
|
||||
import type { ReleasePlanMilestoneStrategyWriteModel } from './features/release-plans/release-plan-milestone-strategy-store.js';
|
||||
import type { IChangeRequestAccessReadModel } from './features/change-request-access-service/change-request-access-read-model.js';
|
||||
import EventStore from './db/event-store.js';
|
||||
import { EventStore } from './db/event-store.js';
|
||||
import RoleStore from './db/role-store.js';
|
||||
import { AccessStore } from './db/access-store.js';
|
||||
import {
|
||||
|
@ -15,6 +15,7 @@ export interface IEventSearchParams {
|
||||
createdBy?: string;
|
||||
type?: string;
|
||||
environment?: string;
|
||||
order?: 'asc' | 'desc'; // desc by default
|
||||
offset: number;
|
||||
limit: number;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user