Skip to content

Commit

Permalink
[backend] wip Breakdown api
Browse files Browse the repository at this point in the history
  • Loading branch information
marieflorescontact committed Feb 22, 2024
1 parent b2f5070 commit 950a3a8
Show file tree
Hide file tree
Showing 5 changed files with 82 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7387,6 +7387,7 @@ type Query {
publicStixCoreObjectsDistribution(uriKey: String!, widgetId: String!, startDate: DateTime, endDate: DateTime): [Distribution]
publicStixCoreObjectsDistributionBreakdown(uriKey: String!, widgetId: String!, startDate: DateTime, endDate: DateTime): [Distribution]
publicStixRelationshipsDistribution(uriKey: String!, widgetId: String!, startDate: DateTime, endDate: DateTime): [Distribution]
publicStixRelationshipsDistributionBreakdown(uriKey: String!, widgetId: String!, startDate: DateTime, endDate: DateTime): [Distribution]
publicBookmarks(uriKey: String!, widgetId: String!): StixDomainObjectConnection
publicStixCoreObjects(uriKey: String!, widgetId: String!, startDate: DateTime, endDate: DateTime): StixCoreObjectConnection
publicStixRelationships(uriKey: String!, widgetId: String!, startDate: DateTime, endDate: DateTime): StixRelationshipConnection
Expand Down
10 changes: 10 additions & 0 deletions opencti-platform/opencti-graphql/src/generated/graphql.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17565,6 +17565,7 @@ export type Query = {
publicStixCoreObjectsNumber?: Maybe<Number>;
publicStixRelationships?: Maybe<StixRelationshipConnection>;
publicStixRelationshipsDistribution?: Maybe<Array<Maybe<Distribution>>>;
publicStixRelationshipsDistributionBreakdown?: Maybe<Array<Maybe<Distribution>>>;
publicStixRelationshipsMultiTimeSeries?: Maybe<Array<Maybe<MultiTimeSeries>>>;
publicStixRelationshipsNumber?: Maybe<Number>;
rabbitMQMetrics?: Maybe<RabbitMqMetrics>;
Expand Down Expand Up @@ -18977,6 +18978,14 @@ export type QueryPublicStixRelationshipsDistributionArgs = {
};


export type QueryPublicStixRelationshipsDistributionBreakdownArgs = {
endDate?: InputMaybe<Scalars['DateTime']['input']>;
startDate?: InputMaybe<Scalars['DateTime']['input']>;
uriKey: Scalars['String']['input'];
widgetId: Scalars['String']['input'];
};


export type QueryPublicStixRelationshipsMultiTimeSeriesArgs = {
endDate?: InputMaybe<Scalars['DateTime']['input']>;
startDate?: InputMaybe<Scalars['DateTime']['input']>;
Expand Down Expand Up @@ -34941,6 +34950,7 @@ export type QueryResolvers<ContextType = any, ParentType extends ResolversParent
publicStixCoreObjectsNumber?: Resolver<Maybe<ResolversTypes['Number']>, ParentType, ContextType, RequireFields<QueryPublicStixCoreObjectsNumberArgs, 'uriKey' | 'widgetId'>>;
publicStixRelationships?: Resolver<Maybe<ResolversTypes['StixRelationshipConnection']>, ParentType, ContextType, RequireFields<QueryPublicStixRelationshipsArgs, 'uriKey' | 'widgetId'>>;
publicStixRelationshipsDistribution?: Resolver<Maybe<Array<Maybe<ResolversTypes['Distribution']>>>, ParentType, ContextType, RequireFields<QueryPublicStixRelationshipsDistributionArgs, 'uriKey' | 'widgetId'>>;
publicStixRelationshipsDistributionBreakdown?: Resolver<Maybe<Array<Maybe<ResolversTypes['Distribution']>>>, ParentType, ContextType, RequireFields<QueryPublicStixRelationshipsDistributionBreakdownArgs, 'uriKey' | 'widgetId'>>;
publicStixRelationshipsMultiTimeSeries?: Resolver<Maybe<Array<Maybe<ResolversTypes['MultiTimeSeries']>>>, ParentType, ContextType, RequireFields<QueryPublicStixRelationshipsMultiTimeSeriesArgs, 'uriKey' | 'widgetId'>>;
publicStixRelationshipsNumber?: Resolver<Maybe<ResolversTypes['Number']>, ParentType, ContextType, RequireFields<QueryPublicStixRelationshipsNumberArgs, 'uriKey' | 'widgetId'>>;
rabbitMQMetrics?: Resolver<Maybe<ResolversTypes['RabbitMQMetrics']>, ParentType, ContextType, Partial<QueryRabbitMqMetricsArgs>>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ import type {
QueryPublicStixRelationshipsArgs,
StixCoreObjectConnection,
StixRelationshipConnection,
QueryPublicStixCoreObjectsDistributionBreakdownArgs
QueryPublicStixCoreObjectsDistributionBreakdownArgs,
QueryPublicStixRelationshipsDistributionBreakdownArgs,
} from '../../generated/graphql';
import { FunctionalError, UnsupportedError } from '../../config/errors';
import { SYSTEM_USER } from '../../utils/access';
Expand Down Expand Up @@ -390,7 +391,32 @@ export const publicStixCoreObjectsDistributionBreakdown = async (
context: AuthContext,
args: QueryPublicStixCoreObjectsDistributionBreakdownArgs
) => {
const { user, dataSelection } = await getWidgetArguments(context, args.uriKey, args.widgetId);

const selection = dataSelection[0];
const filters = {
filterGroups: [selection.filters],
filters: [],
mode: 'and'
};

const parameters = {
startDate: args.startDate,
endDate: args.endDate,
filters,
toTypes: selection.toTypes,
field: selection.attribute,
dateAttribute: selection.date_attribute || 'created_at',
operation: 'count',
limit: selection.number ?? 10,
types: [
ABSTRACT_STIX_CORE_OBJECT,
],
};

const rootDistribution = await stixCoreObjectsDistribution(context, user, parameters);
console.log(rootDistribution);
return rootDistribution;
};

export const publicStixRelationshipsDistribution = async (
Expand Down Expand Up @@ -424,6 +450,39 @@ export const publicStixRelationshipsDistribution = async (
return stixRelationshipsDistribution(context, user, parameters);
};

export const publicStixRelationshipsDistributionBreakdown = async (
context: AuthContext,
args: QueryPublicStixRelationshipsDistributionBreakdownArgs
) => {
const { user, dataSelection } = await getWidgetArguments(context, args.uriKey, args.widgetId);
context.user = user;

const selection = dataSelection[0];
const filters = {
filterGroups: [selection.filters],
filters: [],
mode: 'and'
};

const parameters = {
operation: 'count',
field: selection.attribute || 'entity_type',
startDate: args.startDate,
endDate: args.endDate,
filters,
dynamicFrom: selection.dynamicFrom,
dynamicTo: selection.dynamicTo,
dateAttribute: selection.date_attribute,
isTo: selection.isTo,
limit: selection.number,
};

// Use standard API
const rootDistribution = await stixRelationshipsDistribution(context, user, parameters);
console.log(rootDistribution);
return rootDistribution;
};

// bookmarks
export const publicBookmarks = async (
context: AuthContext,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ import {
publicStixRelationshipsDistribution,
publicBookmarks,
publicStixCoreObjects,
publicStixRelationships
publicStixRelationships,
publicStixCoreObjectsDistributionBreakdown,
publicStixRelationshipsDistributionBreakdown,
} from './publicDashboard-domain';
import { getAuthorizedMembers } from '../../utils/authorizedMembers';

Expand All @@ -29,7 +31,9 @@ const publicDashboardResolvers: Resolvers = {
publicStixRelationshipsMultiTimeSeries: (_, args, context) => publicStixRelationshipsMultiTimeSeries(context, args),
publicStixRelationshipsNumber: (_, args, context) => publicStixRelationshipsNumber(context, args),
publicStixCoreObjectsDistribution: (_, args, context) => publicStixCoreObjectsDistribution(context, args),
publicStixCoreObjectsDistributionBreakdown: (_, args, context) => publicStixCoreObjectsDistributionBreakdown(context, args),
publicStixRelationshipsDistribution: (_, args, context) => publicStixRelationshipsDistribution(context, args),
publicStixRelationshipsDistributionBreakdown: (_, args, context) => publicStixRelationshipsDistributionBreakdown(context, args),
publicBookmarks: (_, args, context) => publicBookmarks(context, args),
publicStixCoreObjects: (_, args, context) => publicStixCoreObjects(context, args),
publicStixRelationships: (_, args, context) => publicStixRelationships(context, args),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,12 @@ type Query {
startDate: DateTime
endDate: DateTime
): [Distribution]
publicStixRelationshipsDistributionBreakdown(
uriKey: String!
widgetId : String!
startDate: DateTime
endDate: DateTime
): [Distribution]
publicBookmarks(
uriKey: String!
widgetId : String!
Expand Down

0 comments on commit 950a3a8

Please sign in to comment.