Compare commits
5 Commits
shot-lab-b
...
dean/usage
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6f356f9535 | ||
|
|
5c0ff8c31b | ||
|
|
582c20170d | ||
| ef4782fc14 | |||
| 905a1ca6db |
224
src/index.tsx
224
src/index.tsx
@@ -2299,6 +2299,20 @@ export type FloatRangeFilter = {
|
||||
lessThanInclusive?: Scalars["Boolean"]["input"];
|
||||
};
|
||||
|
||||
export type FunnelStatsGql = {
|
||||
__typename?: "FunnelStatsGQL";
|
||||
activationActivated: Scalars["Int"]["output"];
|
||||
activationCohort: Scalars["Int"]["output"];
|
||||
eraPaying: Scalars["Int"]["output"];
|
||||
eraSignups: Scalars["Int"]["output"];
|
||||
freemiumEpoch: Scalars["Date"]["output"];
|
||||
newPaid7d: Scalars["Int"]["output"];
|
||||
newPaid30d: Scalars["Int"]["output"];
|
||||
payingUsers: Scalars["Int"]["output"];
|
||||
retentionPrevActive: Scalars["Int"]["output"];
|
||||
retentionReturned: Scalars["Int"]["output"];
|
||||
};
|
||||
|
||||
export type GameTypeTagMetric = {
|
||||
__typename?: "GameTypeTagMetric";
|
||||
madeShots: Scalars["Int"]["output"];
|
||||
@@ -3018,6 +3032,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 +3085,7 @@ export type Query = {
|
||||
getShotsWithMetadata: GetShotsResult;
|
||||
getStorageStatus?: Maybe<StorageStatusGql>;
|
||||
getTableState: TableStateGql;
|
||||
getUsageStats: UsageStatsGql;
|
||||
getUser?: Maybe<UserGql>;
|
||||
getUserRelationshipsMatching: UserRelationshipsResult;
|
||||
getUserSubscriptionStatus: UserSubscriptionStatusGql;
|
||||
@@ -3229,6 +3250,10 @@ export type QueryGetTableStateArgs = {
|
||||
useHomography?: InputMaybe<HomographyInputGql>;
|
||||
};
|
||||
|
||||
export type QueryGetUsageStatsArgs = {
|
||||
days?: Scalars["Int"]["input"];
|
||||
};
|
||||
|
||||
export type QueryGetUserArgs = {
|
||||
userId: Scalars["Int"]["input"];
|
||||
};
|
||||
@@ -3944,6 +3969,36 @@ 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<UsageStatsDailyGql>;
|
||||
funnel: FunnelStatsGql;
|
||||
processingLast24h: Array<ProcessingStatusCountGql>;
|
||||
totalRuns: Scalars["Int"]["output"];
|
||||
totalShots: Scalars["Int"]["output"];
|
||||
totalUsers: Scalars["Int"]["output"];
|
||||
totalVideos: Scalars["Int"]["output"];
|
||||
windows: Array<UsageStatsWindowGql>;
|
||||
};
|
||||
|
||||
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<Scalars["Int"]["output"]>;
|
||||
@@ -6745,6 +6800,10 @@ export type GetTableStateQuery = {
|
||||
getTableState: {
|
||||
__typename?: "TableStateGQL";
|
||||
identifierToPosition: Array<Array<number>>;
|
||||
identifierToColor: Array<{
|
||||
__typename?: "RGBColorGQL";
|
||||
hex: string;
|
||||
} | null>;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -6761,6 +6820,10 @@ export type GetLiveTableStateQuery = {
|
||||
tableState: {
|
||||
__typename?: "TableStateGQL";
|
||||
identifierToPosition: Array<Array<number>>;
|
||||
identifierToColor: Array<{
|
||||
__typename?: "RGBColorGQL";
|
||||
hex: string;
|
||||
} | null>;
|
||||
homography?: {
|
||||
__typename?: "HomographyInfoGQL";
|
||||
id: number;
|
||||
@@ -7387,6 +7450,55 @@ 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;
|
||||
funnel: {
|
||||
__typename?: "FunnelStatsGQL";
|
||||
freemiumEpoch: any;
|
||||
eraSignups: number;
|
||||
eraPaying: number;
|
||||
activationCohort: number;
|
||||
activationActivated: number;
|
||||
payingUsers: number;
|
||||
newPaid7d: number;
|
||||
newPaid30d: number;
|
||||
retentionPrevActive: number;
|
||||
retentionReturned: 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<Scalars["String"]["input"]>;
|
||||
}>;
|
||||
@@ -14426,6 +14538,9 @@ export const GetTableStateDocument = gql`
|
||||
useHomography: $useHomography
|
||||
) {
|
||||
identifierToPosition
|
||||
identifierToColor {
|
||||
hex
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
@@ -14504,6 +14619,9 @@ export const GetLiveTableStateDocument = gql`
|
||||
frameIndex
|
||||
tableState {
|
||||
identifierToPosition
|
||||
identifierToColor {
|
||||
hex
|
||||
}
|
||||
homography {
|
||||
...HomographyInfo
|
||||
}
|
||||
@@ -15655,6 +15773,112 @@ export type DeleteTagsMutationOptions = Apollo.BaseMutationOptions<
|
||||
DeleteTagsMutation,
|
||||
DeleteTagsMutationVariables
|
||||
>;
|
||||
export const GetUsageStatsDocument = gql`
|
||||
query getUsageStats($days: Int! = 30) {
|
||||
getUsageStats(days: $days) {
|
||||
funnel {
|
||||
freemiumEpoch
|
||||
eraSignups
|
||||
eraPaying
|
||||
activationCohort
|
||||
activationActivated
|
||||
payingUsers
|
||||
newPaid7d
|
||||
newPaid30d
|
||||
retentionPrevActive
|
||||
retentionReturned
|
||||
}
|
||||
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<GetUsageStatsQuery, GetUsageStatsQueryVariables>(
|
||||
GetUsageStatsDocument,
|
||||
options,
|
||||
);
|
||||
}
|
||||
export function useGetUsageStatsLazyQuery(
|
||||
baseOptions?: Apollo.LazyQueryHookOptions<
|
||||
GetUsageStatsQuery,
|
||||
GetUsageStatsQueryVariables
|
||||
>,
|
||||
) {
|
||||
const options = { ...defaultOptions, ...baseOptions };
|
||||
return Apollo.useLazyQuery<GetUsageStatsQuery, GetUsageStatsQueryVariables>(
|
||||
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) {
|
||||
|
||||
@@ -9,6 +9,9 @@ query GetTableState(
|
||||
useHomography: $useHomography
|
||||
) {
|
||||
identifierToPosition
|
||||
identifierToColor {
|
||||
hex
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +21,9 @@ query GetLiveTableState($videoId: Int!) {
|
||||
frameIndex
|
||||
tableState {
|
||||
identifierToPosition
|
||||
identifierToColor {
|
||||
hex
|
||||
}
|
||||
homography {
|
||||
...HomographyInfo
|
||||
}
|
||||
|
||||
38
src/operations/usage_stats.gql
Normal file
38
src/operations/usage_stats.gql
Normal file
@@ -0,0 +1,38 @@
|
||||
query getUsageStats($days: Int! = 30) {
|
||||
getUsageStats(days: $days) {
|
||||
funnel {
|
||||
freemiumEpoch
|
||||
eraSignups
|
||||
eraPaying
|
||||
activationCohort
|
||||
activationActivated
|
||||
payingUsers
|
||||
newPaid7d
|
||||
newPaid30d
|
||||
retentionPrevActive
|
||||
retentionReturned
|
||||
}
|
||||
totalUsers
|
||||
totalVideos
|
||||
totalShots
|
||||
totalRuns
|
||||
windows {
|
||||
label
|
||||
newUsers
|
||||
activeUsers
|
||||
sessions
|
||||
shots
|
||||
}
|
||||
daily {
|
||||
day
|
||||
newUsers
|
||||
activeUsers
|
||||
sessions
|
||||
shots
|
||||
}
|
||||
processingLast24h {
|
||||
status
|
||||
count
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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,51 @@ input CreatedAfter @oneOf {
|
||||
createdAt: DateTime
|
||||
}
|
||||
|
||||
type UsageStatsGQL {
|
||||
funnel: FunnelStatsGQL!
|
||||
totalUsers: Int!
|
||||
totalVideos: Int!
|
||||
totalShots: Int!
|
||||
totalRuns: Int!
|
||||
windows: [UsageStatsWindowGQL!]!
|
||||
daily: [UsageStatsDailyGQL!]!
|
||||
processingLast24h: [ProcessingStatusCountGQL!]!
|
||||
}
|
||||
|
||||
type FunnelStatsGQL {
|
||||
freemiumEpoch: Date!
|
||||
eraSignups: Int!
|
||||
eraPaying: Int!
|
||||
activationCohort: Int!
|
||||
activationActivated: Int!
|
||||
payingUsers: Int!
|
||||
newPaid7d: Int!
|
||||
newPaid30d: Int!
|
||||
retentionPrevActive: Int!
|
||||
retentionReturned: Int!
|
||||
}
|
||||
|
||||
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!]!
|
||||
|
||||
Reference in New Issue
Block a user