Compare commits

...

4 Commits

Author SHA1 Message Date
d31d171ac3 getQuotaStatus, expectedDurationSeconds in createUploadStream 2026-02-03 16:30:56 -08:00
c76220b65f Merge pull request 'Lightweight Query Operation - getVideoFeedSessionCount' (#223) from loewy/video-feed-session-count-query into master
Reviewed-on: #223
2026-01-30 22:37:59 +00:00
1218ecdaaa Merge branch 'master' into loewy/video-feed-session-count-query
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2026-01-30 22:37:38 +00:00
c3156bac05 leightweight query to get totalshots
Some checks failed
Tests / Tests (pull_request) Failing after 10s
2026-01-30 13:36:37 -08:00
3 changed files with 151 additions and 0 deletions

View File

@@ -2432,6 +2432,7 @@ export type MutationCreateSubscriptionArgs = {
}; };
export type MutationCreateUploadStreamArgs = { export type MutationCreateUploadStreamArgs = {
expectedDurationSeconds?: InputMaybe<Scalars["Float"]["input"]>;
videoMetadata: VideoMetadataInput; videoMetadata: VideoMetadataInput;
}; };
@@ -2716,6 +2717,7 @@ export type Query = {
getMedals: RequestedMedalsGql; getMedals: RequestedMedalsGql;
getOrderedShots: GetShotsResult; getOrderedShots: GetShotsResult;
getPlayTime: UserPlayTimeGql; getPlayTime: UserPlayTimeGql;
getQuotaStatus: QuotaStatusGql;
getRuns: GetRunsResult; getRuns: GetRunsResult;
getShotAnnotationTypes: Array<ShotAnnotationTypeGql>; getShotAnnotationTypes: Array<ShotAnnotationTypeGql>;
getShots: Array<ShotGql>; getShots: Array<ShotGql>;
@@ -2905,6 +2907,18 @@ export type QueryWaitForArgs = {
duration: Scalars["Float"]["input"]; duration: Scalars["Float"]["input"];
}; };
export type QuotaStatusGql = {
__typename?: "QuotaStatusGQL";
canUpload: Scalars["Boolean"]["output"];
durationLimitSeconds?: Maybe<Scalars["Int"]["output"]>;
durationRemainingSeconds?: Maybe<Scalars["Float"]["output"]>;
durationUsedSeconds: Scalars["Float"]["output"];
maxVideoDurationSeconds?: Maybe<Scalars["Int"]["output"]>;
periodEnd: Scalars["DateTime"]["output"];
periodStart: Scalars["DateTime"]["output"];
tierName: Scalars["String"]["output"];
};
export enum ReactionEnum { export enum ReactionEnum {
Bullseye = "BULLSEYE", Bullseye = "BULLSEYE",
Heart = "HEART", Heart = "HEART",
@@ -4213,6 +4227,21 @@ export type VideoCardFieldsFragment = {
}>; }>;
}; };
export type GetVideoFeedSessionCountQueryVariables = Exact<{
limit?: Scalars["Int"]["input"];
filters?: InputMaybe<VideoFilterInput>;
includePrivate?: InputMaybe<IncludePrivateEnum>;
feedInput?: InputMaybe<VideoFeedInputGql>;
}>;
export type GetVideoFeedSessionCountQuery = {
__typename?: "Query";
getFeedVideos: {
__typename?: "VideoHistoryGQL";
videos: Array<{ __typename?: "VideoGQL"; id: number; totalShots: number }>;
};
};
export type GetVideoFeedQueryVariables = Exact<{ export type GetVideoFeedQueryVariables = Exact<{
limit?: Scalars["Int"]["input"]; limit?: Scalars["Int"]["input"];
after?: InputMaybe<Scalars["String"]["input"]>; after?: InputMaybe<Scalars["String"]["input"]>;
@@ -8522,6 +8551,95 @@ export type GetFeedQueryResult = Apollo.QueryResult<
GetFeedQuery, GetFeedQuery,
GetFeedQueryVariables GetFeedQueryVariables
>; >;
export const GetVideoFeedSessionCountDocument = gql`
query GetVideoFeedSessionCount(
$limit: Int! = 100
$filters: VideoFilterInput = null
$includePrivate: IncludePrivateEnum = MINE
$feedInput: VideoFeedInputGQL = null
) {
getFeedVideos(
limit: $limit
filters: $filters
includePrivate: $includePrivate
feedInput: $feedInput
) {
videos {
id
totalShots
}
}
}
`;
/**
* __useGetVideoFeedSessionCountQuery__
*
* To run a query within a React component, call `useGetVideoFeedSessionCountQuery` and pass it any options that fit your needs.
* When your component renders, `useGetVideoFeedSessionCountQuery` 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 } = useGetVideoFeedSessionCountQuery({
* variables: {
* limit: // value for 'limit'
* filters: // value for 'filters'
* includePrivate: // value for 'includePrivate'
* feedInput: // value for 'feedInput'
* },
* });
*/
export function useGetVideoFeedSessionCountQuery(
baseOptions?: Apollo.QueryHookOptions<
GetVideoFeedSessionCountQuery,
GetVideoFeedSessionCountQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useQuery<
GetVideoFeedSessionCountQuery,
GetVideoFeedSessionCountQueryVariables
>(GetVideoFeedSessionCountDocument, options);
}
export function useGetVideoFeedSessionCountLazyQuery(
baseOptions?: Apollo.LazyQueryHookOptions<
GetVideoFeedSessionCountQuery,
GetVideoFeedSessionCountQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useLazyQuery<
GetVideoFeedSessionCountQuery,
GetVideoFeedSessionCountQueryVariables
>(GetVideoFeedSessionCountDocument, options);
}
export function useGetVideoFeedSessionCountSuspenseQuery(
baseOptions?: Apollo.SuspenseQueryHookOptions<
GetVideoFeedSessionCountQuery,
GetVideoFeedSessionCountQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useSuspenseQuery<
GetVideoFeedSessionCountQuery,
GetVideoFeedSessionCountQueryVariables
>(GetVideoFeedSessionCountDocument, options);
}
export type GetVideoFeedSessionCountQueryHookResult = ReturnType<
typeof useGetVideoFeedSessionCountQuery
>;
export type GetVideoFeedSessionCountLazyQueryHookResult = ReturnType<
typeof useGetVideoFeedSessionCountLazyQuery
>;
export type GetVideoFeedSessionCountSuspenseQueryHookResult = ReturnType<
typeof useGetVideoFeedSessionCountSuspenseQuery
>;
export type GetVideoFeedSessionCountQueryResult = Apollo.QueryResult<
GetVideoFeedSessionCountQuery,
GetVideoFeedSessionCountQueryVariables
>;
export const GetVideoFeedDocument = gql` export const GetVideoFeedDocument = gql`
query GetVideoFeed( query GetVideoFeed(
$limit: Int! = 5 $limit: Int! = 5

View File

@@ -90,6 +90,26 @@ fragment VideoCardFields on VideoGQL {
} }
} }
# Lightweight version of GetVideoFeed for counting sessions only
query GetVideoFeedSessionCount(
$limit: Int! = 100
$filters: VideoFilterInput = null
$includePrivate: IncludePrivateEnum = MINE
$feedInput: VideoFeedInputGQL = null
) {
getFeedVideos(
limit: $limit
filters: $filters
includePrivate: $includePrivate
feedInput: $feedInput
) {
videos {
id
totalShots
}
}
}
query GetVideoFeed( query GetVideoFeed(
$limit: Int! = 5 $limit: Int! = 5
$after: String = null $after: String = null

View File

@@ -97,6 +97,7 @@ type Query {
): UserRelationshipsResult! ): UserRelationshipsResult!
getAvailableSubscriptionOptions: StripeSubscriptionOptionsGQL! getAvailableSubscriptionOptions: StripeSubscriptionOptionsGQL!
getUserSubscriptionStatus: UserSubscriptionStatusGQL! getUserSubscriptionStatus: UserSubscriptionStatusGQL!
getQuotaStatus: QuotaStatusGQL!
getPlayTime(userId: Int!, filters: VideoFilterInput = null): UserPlayTimeGQL! getPlayTime(userId: Int!, filters: VideoFilterInput = null): UserPlayTimeGQL!
getUserVideos( getUserVideos(
userId: Int = null userId: Int = null
@@ -977,6 +978,17 @@ enum StripeSubscriptionStatusEnum {
PAUSED PAUSED
} }
type QuotaStatusGQL {
tierName: String!
periodStart: DateTime!
periodEnd: DateTime!
durationUsedSeconds: Float!
durationLimitSeconds: Int
maxVideoDurationSeconds: Int
durationRemainingSeconds: Float
canUpload: Boolean!
}
type UserPlayTimeGQL { type UserPlayTimeGQL {
totalSeconds: Float! totalSeconds: Float!
} }
@@ -1082,6 +1094,7 @@ type Mutation {
findPrerecordTableLayout(b64Image: String!, videoId: Int!): HomographyInfoGQL findPrerecordTableLayout(b64Image: String!, videoId: Int!): HomographyInfoGQL
createUploadStream( createUploadStream(
videoMetadata: VideoMetadataInput! videoMetadata: VideoMetadataInput!
expectedDurationSeconds: Float = null
): CreateUploadStreamReturn! ): CreateUploadStreamReturn!
getUploadLink(videoId: Int!, segmentIndex: Int!): GetUploadLinkReturn! getUploadLink(videoId: Int!, segmentIndex: Int!): GetUploadLinkReturn!
getHlsInitUploadLink(videoId: Int!): GetUploadLinkReturn! getHlsInitUploadLink(videoId: Int!): GetUploadLinkReturn!