diff --git a/src/index.tsx b/src/index.tsx index cb56791..483f275 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -3018,6 +3018,12 @@ export type ProcessingFailedErr = { processing: VideoProcessingGql; }; +export type ProcessingStatusCountGql = { + __typename?: "ProcessingStatusCountGQL"; + count: Scalars["Int"]["output"]; + status: Scalars["String"]["output"]; +}; + export enum ProcessingStatusEnum { Created = "CREATED", Failed = "FAILED", @@ -3065,6 +3071,7 @@ export type Query = { getShotsWithMetadata: GetShotsResult; getStorageStatus?: Maybe; getTableState: TableStateGql; + getUsageStats: UsageStatsGql; getUser?: Maybe; getUserRelationshipsMatching: UserRelationshipsResult; getUserSubscriptionStatus: UserSubscriptionStatusGql; @@ -3229,6 +3236,10 @@ export type QueryGetTableStateArgs = { useHomography?: InputMaybe; }; +export type QueryGetUsageStatsArgs = { + days?: Scalars["Int"]["input"]; +}; + export type QueryGetUserArgs = { userId: Scalars["Int"]["input"]; }; @@ -3944,6 +3955,35 @@ export type UploadStreamGql = { uploadsCompleted: Scalars["Int"]["output"]; }; +export type UsageStatsDailyGql = { + __typename?: "UsageStatsDailyGQL"; + activeUsers: Scalars["Int"]["output"]; + day: Scalars["Date"]["output"]; + newUsers: Scalars["Int"]["output"]; + sessions: Scalars["Int"]["output"]; + shots: Scalars["Int"]["output"]; +}; + +export type UsageStatsGql = { + __typename?: "UsageStatsGQL"; + daily: Array; + processingLast24h: Array; + totalRuns: Scalars["Int"]["output"]; + totalShots: Scalars["Int"]["output"]; + totalUsers: Scalars["Int"]["output"]; + totalVideos: Scalars["Int"]["output"]; + windows: Array; +}; + +export type UsageStatsWindowGql = { + __typename?: "UsageStatsWindowGQL"; + activeUsers: Scalars["Int"]["output"]; + label: Scalars["String"]["output"]; + newUsers: Scalars["Int"]["output"]; + sessions: Scalars["Int"]["output"]; + shots: Scalars["Int"]["output"]; +}; + export type UserGql = { __typename?: "UserGQL"; activeVideoId?: Maybe; @@ -7395,6 +7435,42 @@ export type DeleteTagsMutation = { deleteTags: boolean; }; +export type GetUsageStatsQueryVariables = Exact<{ + days?: Scalars["Int"]["input"]; +}>; + +export type GetUsageStatsQuery = { + __typename?: "Query"; + getUsageStats: { + __typename?: "UsageStatsGQL"; + totalUsers: number; + totalVideos: number; + totalShots: number; + totalRuns: number; + windows: Array<{ + __typename?: "UsageStatsWindowGQL"; + label: string; + newUsers: number; + activeUsers: number; + sessions: number; + shots: number; + }>; + daily: Array<{ + __typename?: "UsageStatsDailyGQL"; + day: any; + newUsers: number; + activeUsers: number; + sessions: number; + shots: number; + }>; + processingLast24h: Array<{ + __typename?: "ProcessingStatusCountGQL"; + status: string; + count: number; + }>; + }; +}; + export type GetProfileImageUploadLinkMutationVariables = Exact<{ fileExt?: InputMaybe; }>; @@ -15669,6 +15745,100 @@ export type DeleteTagsMutationOptions = Apollo.BaseMutationOptions< DeleteTagsMutation, DeleteTagsMutationVariables >; +export const GetUsageStatsDocument = gql` + query getUsageStats($days: Int! = 30) { + getUsageStats(days: $days) { + totalUsers + totalVideos + totalShots + totalRuns + windows { + label + newUsers + activeUsers + sessions + shots + } + daily { + day + newUsers + activeUsers + sessions + shots + } + processingLast24h { + status + count + } + } + } +`; + +/** + * __useGetUsageStatsQuery__ + * + * To run a query within a React component, call `useGetUsageStatsQuery` and pass it any options that fit your needs. + * When your component renders, `useGetUsageStatsQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetUsageStatsQuery({ + * variables: { + * days: // value for 'days' + * }, + * }); + */ +export function useGetUsageStatsQuery( + baseOptions?: Apollo.QueryHookOptions< + GetUsageStatsQuery, + GetUsageStatsQueryVariables + >, +) { + const options = { ...defaultOptions, ...baseOptions }; + return Apollo.useQuery( + GetUsageStatsDocument, + options, + ); +} +export function useGetUsageStatsLazyQuery( + baseOptions?: Apollo.LazyQueryHookOptions< + GetUsageStatsQuery, + GetUsageStatsQueryVariables + >, +) { + const options = { ...defaultOptions, ...baseOptions }; + return Apollo.useLazyQuery( + GetUsageStatsDocument, + options, + ); +} +export function useGetUsageStatsSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions< + GetUsageStatsQuery, + GetUsageStatsQueryVariables + >, +) { + const options = { ...defaultOptions, ...baseOptions }; + return Apollo.useSuspenseQuery< + GetUsageStatsQuery, + GetUsageStatsQueryVariables + >(GetUsageStatsDocument, options); +} +export type GetUsageStatsQueryHookResult = ReturnType< + typeof useGetUsageStatsQuery +>; +export type GetUsageStatsLazyQueryHookResult = ReturnType< + typeof useGetUsageStatsLazyQuery +>; +export type GetUsageStatsSuspenseQueryHookResult = ReturnType< + typeof useGetUsageStatsSuspenseQuery +>; +export type GetUsageStatsQueryResult = Apollo.QueryResult< + GetUsageStatsQuery, + GetUsageStatsQueryVariables +>; export const GetProfileImageUploadLinkDocument = gql` mutation getProfileImageUploadLink($fileExt: String = ".png") { getProfileImageUploadLink(fileExt: $fileExt) { diff --git a/src/operations/usage_stats.gql b/src/operations/usage_stats.gql new file mode 100644 index 0000000..c6090d9 --- /dev/null +++ b/src/operations/usage_stats.gql @@ -0,0 +1,26 @@ +query getUsageStats($days: Int! = 30) { + getUsageStats(days: $days) { + totalUsers + totalVideos + totalShots + totalRuns + windows { + label + newUsers + activeUsers + sessions + shots + } + daily { + day + newUsers + activeUsers + sessions + shots + } + processingLast24h { + status + count + } + } +} diff --git a/src/schema.gql b/src/schema.gql index 844aefd..465f9be 100644 --- a/src/schema.gql +++ b/src/schema.gql @@ -100,6 +100,7 @@ type Query { countRespectsLimit: Boolean! = false ): [ShotGQL!]! getShotsByIds(ids: [Int!]!): [ShotGQL!]! + getUsageStats(days: Int! = 30): UsageStatsGQL! getUser(userId: Int!): UserGQL doesUsernameExist(candidateUsername: String!): Boolean! getLoggedInUser: UserGQL @@ -1168,6 +1169,37 @@ input CreatedAfter @oneOf { createdAt: DateTime } +type UsageStatsGQL { + totalUsers: Int! + totalVideos: Int! + totalShots: Int! + totalRuns: Int! + windows: [UsageStatsWindowGQL!]! + daily: [UsageStatsDailyGQL!]! + processingLast24h: [ProcessingStatusCountGQL!]! +} + +type UsageStatsWindowGQL { + label: String! + newUsers: Int! + activeUsers: Int! + sessions: Int! + shots: Int! +} + +type UsageStatsDailyGQL { + day: Date! + newUsers: Int! + activeUsers: Int! + sessions: Int! + shots: Int! +} + +type ProcessingStatusCountGQL { + status: String! + count: Int! +} + type UserRelationshipsResult { inquiringUser: UserGQL! relationships: [UserRelationship!]!