Skip to content

Commit

Permalink
[backend] add publicDashboards api (#4903)
Browse files Browse the repository at this point in the history
  • Loading branch information
marieflorescontact committed Jan 13, 2024
1 parent 782f994 commit fc0a9bf
Show file tree
Hide file tree
Showing 5 changed files with 115 additions and 4 deletions.
20 changes: 19 additions & 1 deletion opencti-platform/opencti-front/src/schema/relay.schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -7279,6 +7279,7 @@ type Query {
csvMappers(first: Int, after: ID, orderBy: CsvMapperOrdering, orderMode: OrderingMode, filters: FilterGroup, search: String): CsvMapperConnection
csvMapperTest(configuration: String!, content: String!): CsvMapperTestResult
publicDashboard(id: String!): PublicDashboard
publicDashboards(first: Int, after: ID, orderBy: PublicDashboardsOrdering, orderMode: OrderingMode, filters: FilterGroup, includeAuthorities: Boolean, search: String): PublicDashboardConnection
publicDashboardPublic(uri_key: String!): PublicDashboard
}

Expand Down Expand Up @@ -10896,8 +10897,25 @@ type PublicDashboard implements InternalObject & BasicObject {
editContext: [EditUserContext!]
}

enum PublicDashboardsOrdering {
name
created_at
updated_at
creator
}

type PublicDashboardConnection {
pageInfo: PageInfo!
edges: [PublicDashboardEdge!]!
}

type PublicDashboardEdge {
cursor: String!
node: PublicDashboard!
}

input PublicDashboardAddInput {
name: String!
description: String
dashboard_id: String!
}
}
51 changes: 51 additions & 0 deletions opencti-platform/opencti-graphql/src/generated/graphql.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16913,6 +16913,25 @@ export type PublicDashboardAddInput = {
name: Scalars['String']['input'];
};

export type PublicDashboardConnection = {
__typename?: 'PublicDashboardConnection';
edges: Array<PublicDashboardEdge>;
pageInfo: PageInfo;
};

export type PublicDashboardEdge = {
__typename?: 'PublicDashboardEdge';
cursor: Scalars['String']['output'];
node: PublicDashboard;
};

export enum PublicDashboardsOrdering {
CreatedAt = 'created_at',
Creator = 'creator',
Name = 'name',
UpdatedAt = 'updated_at'
}

export type Query = {
__typename?: 'Query';
about?: Maybe<AppInfo>;
Expand Down Expand Up @@ -17083,6 +17102,7 @@ export type Query = {
positions?: Maybe<PositionConnection>;
publicDashboard?: Maybe<PublicDashboard>;
publicDashboardPublic?: Maybe<PublicDashboard>;
publicDashboards?: Maybe<PublicDashboardConnection>;
publicStixCoreObjectsMultiTimeSeries?: Maybe<Array<Maybe<MultiTimeSeries>>>;
rabbitMQMetrics?: Maybe<RabbitMqMetrics>;
region?: Maybe<Region>;
Expand Down Expand Up @@ -18389,6 +18409,17 @@ export type QueryPublicDashboardPublicArgs = {
};


export type QueryPublicDashboardsArgs = {
after?: InputMaybe<Scalars['ID']['input']>;
filters?: InputMaybe<FilterGroup>;
first?: InputMaybe<Scalars['Int']['input']>;
includeAuthorities?: InputMaybe<Scalars['Boolean']['input']>;
orderBy?: InputMaybe<PublicDashboardsOrdering>;
orderMode?: InputMaybe<OrderingMode>;
search?: InputMaybe<Scalars['String']['input']>;
};


export type QueryPublicStixCoreObjectsMultiTimeSeriesArgs = {
dashboardId: Scalars['String']['input'];
endDate?: InputMaybe<Scalars['DateTime']['input']>;
Expand Down Expand Up @@ -27668,6 +27699,9 @@ export type ResolversTypes = ResolversObject<{
Provider: ResolverTypeWrapper<Provider>;
PublicDashboard: ResolverTypeWrapper<BasicStoreEntityPublicDashboard>;
PublicDashboardAddInput: PublicDashboardAddInput;
PublicDashboardConnection: ResolverTypeWrapper<Omit<PublicDashboardConnection, 'edges'> & { edges: Array<ResolversTypes['PublicDashboardEdge']> }>;
PublicDashboardEdge: ResolverTypeWrapper<Omit<PublicDashboardEdge, 'node'> & { node: ResolversTypes['PublicDashboard'] }>;
PublicDashboardsOrdering: PublicDashboardsOrdering;
Query: ResolverTypeWrapper<{}>;
QueryTask: ResolverTypeWrapper<QueryTask>;
QueryTaskAddInput: QueryTaskAddInput;
Expand Down Expand Up @@ -28345,6 +28379,8 @@ export type ResolversParentTypes = ResolversObject<{
Provider: Provider;
PublicDashboard: BasicStoreEntityPublicDashboard;
PublicDashboardAddInput: PublicDashboardAddInput;
PublicDashboardConnection: Omit<PublicDashboardConnection, 'edges'> & { edges: Array<ResolversParentTypes['PublicDashboardEdge']> };
PublicDashboardEdge: Omit<PublicDashboardEdge, 'node'> & { node: ResolversParentTypes['PublicDashboard'] };
Query: {};
QueryTask: QueryTask;
QueryTaskAddInput: QueryTaskAddInput;
Expand Down Expand Up @@ -33814,6 +33850,18 @@ export type PublicDashboardResolvers<ContextType = any, ParentType extends Resol
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
}>;

export type PublicDashboardConnectionResolvers<ContextType = any, ParentType extends ResolversParentTypes['PublicDashboardConnection'] = ResolversParentTypes['PublicDashboardConnection']> = ResolversObject<{
edges?: Resolver<Array<ResolversTypes['PublicDashboardEdge']>, ParentType, ContextType>;
pageInfo?: Resolver<ResolversTypes['PageInfo'], ParentType, ContextType>;
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
}>;

export type PublicDashboardEdgeResolvers<ContextType = any, ParentType extends ResolversParentTypes['PublicDashboardEdge'] = ResolversParentTypes['PublicDashboardEdge']> = ResolversObject<{
cursor?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
node?: Resolver<ResolversTypes['PublicDashboard'], ParentType, ContextType>;
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
}>;

export type QueryResolvers<ContextType = any, ParentType extends ResolversParentTypes['Query'] = ResolversParentTypes['Query']> = ResolversObject<{
about?: Resolver<Maybe<ResolversTypes['AppInfo']>, ParentType, ContextType>;
administrativeArea?: Resolver<Maybe<ResolversTypes['AdministrativeArea']>, ParentType, ContextType, RequireFields<QueryAdministrativeAreaArgs, 'id'>>;
Expand Down Expand Up @@ -33983,6 +34031,7 @@ export type QueryResolvers<ContextType = any, ParentType extends ResolversParent
positions?: Resolver<Maybe<ResolversTypes['PositionConnection']>, ParentType, ContextType, Partial<QueryPositionsArgs>>;
publicDashboard?: Resolver<Maybe<ResolversTypes['PublicDashboard']>, ParentType, ContextType, RequireFields<QueryPublicDashboardArgs, 'id'>>;
publicDashboardPublic?: Resolver<Maybe<ResolversTypes['PublicDashboard']>, ParentType, ContextType, RequireFields<QueryPublicDashboardPublicArgs, 'uri_key'>>;
publicDashboards?: Resolver<Maybe<ResolversTypes['PublicDashboardConnection']>, ParentType, ContextType, Partial<QueryPublicDashboardsArgs>>;
publicStixCoreObjectsMultiTimeSeries?: Resolver<Maybe<Array<Maybe<ResolversTypes['MultiTimeSeries']>>>, ParentType, ContextType, RequireFields<QueryPublicStixCoreObjectsMultiTimeSeriesArgs, 'dashboardId' | 'interval' | 'startDate' | 'widgetId'>>;
rabbitMQMetrics?: Resolver<Maybe<ResolversTypes['RabbitMQMetrics']>, ParentType, ContextType, Partial<QueryRabbitMqMetricsArgs>>;
region?: Resolver<Maybe<ResolversTypes['Region']>, ParentType, ContextType, RequireFields<QueryRegionArgs, 'id'>>;
Expand Down Expand Up @@ -37059,6 +37108,8 @@ export type Resolvers<ContextType = any> = ResolversObject<{
Process?: ProcessResolvers<ContextType>;
Provider?: ProviderResolvers<ContextType>;
PublicDashboard?: PublicDashboardResolvers<ContextType>;
PublicDashboardConnection?: PublicDashboardConnectionResolvers<ContextType>;
PublicDashboardEdge?: PublicDashboardEdgeResolvers<ContextType>;
Query?: QueryResolvers<ContextType>;
QueryTask?: QueryTaskResolvers<ContextType>;
QueueArguments?: QueueArgumentsResolvers<ContextType>;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { v4 as uuidv4 } from 'uuid';
import type { AuthContext, AuthUser } from '../../types/user';
import { storeLoadById } from '../../database/middleware-loader';
import { listEntitiesPaginated, storeLoadById } from '../../database/middleware-loader';
import { ENTITY_TYPE_PUBLIC_DASHBOARD, type BasicStoreEntityPublicDashboard } from './publicDashboard-types';
import { createEntity, deleteElementById, updateAttribute } from '../../database/middleware';
import { type BasicStoreEntityWorkspace, ENTITY_TYPE_WORKSPACE } from '../workspace/workspace-types';
import { fromBase64, toBase64 } from '../../database/utils';
import { notify } from '../../database/redis';
import { BUS_TOPICS } from '../../config/conf';
import type { EditInput, PublicDashboardAddInput } from '../../generated/graphql';
import type { EditInput, PublicDashboardAddInput, QueryPublicDashboardsArgs } from '../../generated/graphql';

export const findById = (
context: AuthContext,
Expand All @@ -22,6 +22,19 @@ export const findById = (
);
};

export const findAll = (
context: AuthContext,
user: AuthUser,
args: QueryPublicDashboardsArgs,
) => {
return listEntitiesPaginated<BasicStoreEntityPublicDashboard>(
context,
user,
[ENTITY_TYPE_PUBLIC_DASHBOARD],
args,
);
};

export const publicDashboardPublic = async (
context: AuthContext,
user: AuthUser,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import type { Resolvers } from '../../generated/graphql';
import { addPublicDashboard, findById, publicDashboardDelete, publicDashboardEditField, publicDashboardPublic } from './publicDashboard-domain';
import { addPublicDashboard, findById, findAll, publicDashboardDelete, publicDashboardEditField, publicDashboardPublic } from './publicDashboard-domain';

const publicDashboardResolvers: Resolvers = {
Query: {
publicDashboard: (_, { id }, context) => findById(context, context.user, id),
publicDashboards: (_, args, context) => findAll(context, context.user, args),
publicDashboardPublic: (_, { uri_key }, context) => publicDashboardPublic(context, context.user, uri_key),
},
Mutation: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,40 @@ type PublicDashboard implements InternalObject & BasicObject {
editContext: [EditUserContext!] @auth(for: [KNOWLEDGE, EXPLORE])
}

# Ordering
enum PublicDashboardsOrdering {
name
created_at
updated_at
creator
}

# Relay connections
type PublicDashboardConnection {
pageInfo: PageInfo!
edges: [PublicDashboardEdge!]!
}

# Queries
type Query {
publicDashboard(id: String!): PublicDashboard @auth(for: [KNOWLEDGE, EXPLORE])
publicDashboards(
first: Int
after: ID
orderBy: PublicDashboardsOrdering
orderMode: OrderingMode
filters: FilterGroup
includeAuthorities: Boolean
search: String
): PublicDashboardConnection @auth(for: [EXPLORE])
publicDashboardPublic(uri_key: String!): PublicDashboard
}

type PublicDashboardEdge {
cursor: String!
node: PublicDashboard!
}

# Mutation
input PublicDashboardAddInput {
name: String!
Expand Down

0 comments on commit fc0a9bf

Please sign in to comment.