Compare commits

...

26 Commits

Author SHA1 Message Date
0999c88797 added resolution
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-07-18 20:10:23 -07:00
d3559ede21 Merge pull request 'Add frames_per_second' (#21) from loewy/add-fps into master
Reviewed-on: #21
Reviewed-by: countablecloud <countablecloud@gmail.com>
2024-07-18 17:51:30 -06:00
ef6ccca3f9 fix black issue
All checks were successful
Tests / Tests (pull_request) Successful in 14s
2024-07-18 16:46:27 -07:00
f781e9648f add pycache to gitignore
Some checks failed
Tests / Tests (pull_request) Failing after 15s
2024-07-18 16:37:59 -07:00
18d2eea029 add shot_pb2 2024-07-18 16:34:22 -07:00
a95bdab8bf ad frames per second to schema 2024-07-18 16:14:28 -07:00
eaeb1ed0ea Add resolution 2024-07-18 01:14:18 -06:00
f9d6377fe4 Update durations in seconds 2024-07-16 21:48:15 -06:00
30cf72de78 Merge pull request 'Add initPlaylistUploadStatus' (#20) from loewy/update-video-gql-operations into master
Reviewed-on: #20
2024-07-16 20:24:58 -06:00
fd49dec34c add initPlaylistUploadStatus
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-07-16 19:23:54 -07:00
cdd1cdd526 Fix segment parameter again 2024-07-16 20:22:16 -06:00
bce363e8ff Parameter to setSegmentDuration should be segmentIndex 2024-07-16 20:20:37 -06:00
80f609b8a2 Merge pull request 'Add operation for set segment duration' (#19) from loewy/set-segment-duration-operation into master
Reviewed-on: #19
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-07-16 17:54:19 -06:00
6205e9a353 add operation for set segment duration
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-07-16 16:33:22 -07:00
12f7e1f115 Merge pull request 'Add operation getHlsInitUploadLink' (#18) from loewy/operation-get-hls-init-upload-link into master
Reviewed-on: #18
2024-07-16 15:28:43 -06:00
296ad969f4 Merge branch 'master' into loewy/operation-get-hls-init-upload-link
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-07-16 15:27:37 -06:00
d25c08447e Merge pull request 'Adds init playlist status' (#17) from mk/add-init-file-uploaded-marking into master
Reviewed-on: #17
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-07-16 15:26:27 -06:00
7502a75753 Merge remote-tracking branch 'origin' into mk/add-init-file-uploaded-marking
All checks were successful
Tests / Tests (pull_request) Successful in 7s
2024-07-16 14:23:32 -07:00
1a14db1a17 Adds init playlist status
All checks were successful
Tests / Tests (pull_request) Successful in 14s
2024-07-16 14:21:45 -07:00
67d8bcac21 add operation for hls init link
All checks were successful
Tests / Tests (pull_request) Successful in 14s
2024-07-15 17:29:55 -07:00
4ca27317b4 Add operation for shot annotation types 2024-07-15 15:37:43 -06:00
dc214e878f Add annotations to shot gql 2024-07-15 15:32:21 -06:00
d669dba320 Add getUsernames operation 2024-07-14 00:16:02 -06:00
235f4a58e9 Add getUsernames 2024-07-13 23:43:18 -06:00
03c1d08d8c Request isAdmin in getLoggedInUser 2024-07-13 17:47:41 -06:00
cc36a8b51d Add isAdmin 2024-07-13 17:40:30 -06:00
7 changed files with 429 additions and 4 deletions

1
.gitignore vendored
View File

@@ -3,3 +3,4 @@ dist
.direnv .direnv
/after.txt /after.txt
/before.txt /before.txt
**/__pycache__/**

View File

@@ -833,6 +833,12 @@ export type HomographyInfoGql = {
sourcePoints: PocketPointsGql; sourcePoints: PocketPointsGql;
}; };
export enum InitPlaylistUploadStatusEnum {
NotApplicable = "NOT_APPLICABLE",
NotUploaded = "NOT_UPLOADED",
Uploaded = "UPLOADED",
}
export type IntPoint2D = { export type IntPoint2D = {
__typename?: "IntPoint2D"; __typename?: "IntPoint2D";
x: Scalars["Int"]["output"]; x: Scalars["Int"]["output"];
@@ -900,7 +906,7 @@ export type MutationSetLoggerLevelArgs = {
export type MutationSetSegmentDurationArgs = { export type MutationSetSegmentDurationArgs = {
duration: Scalars["Float"]["input"]; duration: Scalars["Float"]["input"];
segmentId: Scalars["Int"]["input"]; segmentIndex: Scalars["Int"]["input"];
videoId: Scalars["Int"]["input"]; videoId: Scalars["Int"]["input"];
}; };
@@ -944,6 +950,7 @@ export type Query = {
getShots: Array<ShotGql>; getShots: Array<ShotGql>;
getUser?: Maybe<UserGql>; getUser?: Maybe<UserGql>;
getUserVideos: VideoHistoryGql; getUserVideos: VideoHistoryGql;
getUsernames: Array<Scalars["String"]["output"]>;
getVideo: VideoGql; getVideo: VideoGql;
getVideoMakePercentageIntervals: Array<MakePercentageIntervalGql>; getVideoMakePercentageIntervals: Array<MakePercentageIntervalGql>;
getVideos: Array<VideoGql>; getVideos: Array<VideoGql>;
@@ -976,6 +983,12 @@ export type QueryGetUserVideosArgs = {
userId?: InputMaybe<Scalars["Int"]["input"]>; userId?: InputMaybe<Scalars["Int"]["input"]>;
}; };
export type QueryGetUsernamesArgs = {
after?: InputMaybe<Scalars["String"]["input"]>;
limit?: InputMaybe<Scalars["Int"]["input"]>;
matchString?: InputMaybe<Scalars["String"]["input"]>;
};
export type QueryGetVideoArgs = { export type QueryGetVideoArgs = {
videoId: Scalars["Int"]["input"]; videoId: Scalars["Int"]["input"];
}; };
@@ -999,6 +1012,16 @@ export type SerializedShotPathsGql = {
b64EncodedBuffer?: Maybe<Scalars["String"]["output"]>; b64EncodedBuffer?: Maybe<Scalars["String"]["output"]>;
}; };
export type ShotAnnotationGql = {
__typename?: "ShotAnnotationGQL";
createdAt?: Maybe<Scalars["DateTime"]["output"]>;
creator: UserGql;
notes: Scalars["String"]["output"];
shotId: Scalars["Int"]["output"];
type: ShotAnnotationTypeGql;
updatedAt?: Maybe<Scalars["DateTime"]["output"]>;
};
export type ShotAnnotationInput = { export type ShotAnnotationInput = {
name: Scalars["String"]["input"]; name: Scalars["String"]["input"];
}; };
@@ -1017,6 +1040,7 @@ export enum ShotDirectionEnum {
export type ShotGql = { export type ShotGql = {
__typename?: "ShotGQL"; __typename?: "ShotGQL";
annotations: Array<ShotAnnotationGql>;
bankFeatures?: Maybe<BankFeaturesGql>; bankFeatures?: Maybe<BankFeaturesGql>;
createdAt?: Maybe<Scalars["DateTime"]["output"]>; createdAt?: Maybe<Scalars["DateTime"]["output"]>;
cueObjectFeatures?: Maybe<CueObjectFeaturesGql>; cueObjectFeatures?: Maybe<CueObjectFeaturesGql>;
@@ -1049,7 +1073,7 @@ export type TargetMetricsGql = {
export type UploadSegmentGql = { export type UploadSegmentGql = {
__typename?: "UploadSegmentGQL"; __typename?: "UploadSegmentGQL";
durationsInSeconds?: Maybe<Scalars["Float"]["output"]>; durationInSeconds?: Maybe<Scalars["Float"]["output"]>;
endFrameIndex?: Maybe<Scalars["Int"]["output"]>; endFrameIndex?: Maybe<Scalars["Int"]["output"]>;
framesPerSecond?: Maybe<Scalars["Float"]["output"]>; framesPerSecond?: Maybe<Scalars["Float"]["output"]>;
linksRequested: Scalars["Int"]["output"]; linksRequested: Scalars["Int"]["output"];
@@ -1063,6 +1087,7 @@ export type UploadStreamGql = {
createdAt: Scalars["DateTime"]["output"]; createdAt: Scalars["DateTime"]["output"];
errors: Array<StreamErrorGql>; errors: Array<StreamErrorGql>;
id: Scalars["ID"]["output"]; id: Scalars["ID"]["output"];
initPlaylistUploadStatus?: Maybe<InitPlaylistUploadStatusEnum>;
isCompleted: Scalars["Boolean"]["output"]; isCompleted: Scalars["Boolean"]["output"];
lastIntendedSegmentBound?: Maybe<Scalars["Int"]["output"]>; lastIntendedSegmentBound?: Maybe<Scalars["Int"]["output"]>;
linksRequested: Scalars["Int"]["output"]; linksRequested: Scalars["Int"]["output"];
@@ -1092,6 +1117,7 @@ export type UserGql = {
createdAt?: Maybe<Scalars["DateTime"]["output"]>; createdAt?: Maybe<Scalars["DateTime"]["output"]>;
firebaseUid: Scalars["String"]["output"]; firebaseUid: Scalars["String"]["output"];
id: Scalars["Int"]["output"]; id: Scalars["Int"]["output"];
isAdmin: Scalars["Boolean"]["output"];
profileImageUri?: Maybe<Scalars["String"]["output"]>; profileImageUri?: Maybe<Scalars["String"]["output"]>;
updatedAt?: Maybe<Scalars["DateTime"]["output"]>; updatedAt?: Maybe<Scalars["DateTime"]["output"]>;
username: Scalars["String"]["output"]; username: Scalars["String"]["output"];
@@ -1141,8 +1167,10 @@ export type VideoHistoryGql = {
export type VideoMetadataInput = { export type VideoMetadataInput = {
endStream?: Scalars["Boolean"]["input"]; endStream?: Scalars["Boolean"]["input"];
endTime?: InputMaybe<Scalars["DateTime"]["input"]>; endTime?: InputMaybe<Scalars["DateTime"]["input"]>;
framesPerSecond?: InputMaybe<Scalars["Float"]["input"]>;
gameType?: InputMaybe<Scalars["String"]["input"]>; gameType?: InputMaybe<Scalars["String"]["input"]>;
lastIntendedSegmentBound?: InputMaybe<Scalars["Int"]["input"]>; lastIntendedSegmentBound?: InputMaybe<Scalars["Int"]["input"]>;
resolution: VideoResolution;
startTime?: InputMaybe<Scalars["DateTime"]["input"]>; startTime?: InputMaybe<Scalars["DateTime"]["input"]>;
streamSegmentType?: InputMaybe<StreamSegmentTypeEnum>; streamSegmentType?: InputMaybe<StreamSegmentTypeEnum>;
tableSize?: InputMaybe<Scalars["String"]["input"]>; tableSize?: InputMaybe<Scalars["String"]["input"]>;
@@ -1162,6 +1190,11 @@ export type VideoProcessingGql = {
errors: Array<VideoProcessingErrorGql>; errors: Array<VideoProcessingErrorGql>;
}; };
export type VideoResolution = {
height: Scalars["Int"]["input"];
width: Scalars["Int"]["input"];
};
export type VideoTag = { export type VideoTag = {
__typename?: "VideoTag"; __typename?: "VideoTag";
name: Scalars["String"]["output"]; name: Scalars["String"]["output"];
@@ -1316,6 +1349,19 @@ export type GetShotsQuery = {
}>; }>;
}; };
export type GetShotAnnotationTypesQueryVariables = Exact<{
[key: string]: never;
}>;
export type GetShotAnnotationTypesQuery = {
__typename?: "Query";
getShotAnnotationTypes: Array<{
__typename?: "ShotAnnotationTypeGQL";
id: number;
name: string;
}>;
};
export type GetProfileImageUploadLinkMutationVariables = Exact<{ export type GetProfileImageUploadLinkMutationVariables = Exact<{
fileExt?: InputMaybe<Scalars["String"]["input"]>; fileExt?: InputMaybe<Scalars["String"]["input"]>;
}>; }>;
@@ -1359,6 +1405,7 @@ export type GetLoggedInUserQuery = {
id: number; id: number;
firebaseUid: string; firebaseUid: string;
username: string; username: string;
isAdmin: boolean;
profileImageUri?: string | null; profileImageUri?: string | null;
activeVideoId?: number | null; activeVideoId?: number | null;
createdAt?: any | null; createdAt?: any | null;
@@ -1375,6 +1422,17 @@ export type GetUserPlayTimeQuery = {
getPlayTime: { __typename?: "UserPlayTimeGQL"; totalSeconds: number }; getPlayTime: { __typename?: "UserPlayTimeGQL"; totalSeconds: number };
}; };
export type GetUsernamesQueryVariables = Exact<{
matchString: Scalars["String"]["input"];
limit?: InputMaybe<Scalars["Int"]["input"]>;
after?: InputMaybe<Scalars["String"]["input"]>;
}>;
export type GetUsernamesQuery = {
__typename?: "Query";
getUsernames: Array<string>;
};
export type GetStreamMonitoringDetailsQueryVariables = Exact<{ export type GetStreamMonitoringDetailsQueryVariables = Exact<{
videoId: Scalars["Int"]["input"]; videoId: Scalars["Int"]["input"];
}>; }>;
@@ -1421,6 +1479,7 @@ export type GetStreamMonitoringDetailsQuery = {
isCompleted: boolean; isCompleted: boolean;
uploadCompletionCursor: number; uploadCompletionCursor: number;
lastIntendedSegmentBound?: number | null; lastIntendedSegmentBound?: number | null;
initPlaylistUploadStatus?: InitPlaylistUploadStatusEnum | null;
} | null; } | null;
currentProcessing?: { currentProcessing?: {
__typename?: "VideoProcessingGQL"; __typename?: "VideoProcessingGQL";
@@ -1618,6 +1677,34 @@ export type GetUploadLinkMutation = {
}; };
}; };
export type GetHlsInitUploadLinkMutationVariables = Exact<{
videoId: Scalars["Int"]["input"];
}>;
export type GetHlsInitUploadLinkMutation = {
__typename?: "Mutation";
getHlsInitUploadLink: {
__typename?: "GetUploadLinkReturn";
uploadUrl: string;
headers: Array<{
__typename?: "Header";
key: string;
value: string;
} | null>;
};
};
export type SetSegmentDurationMutationVariables = Exact<{
videoId: Scalars["Int"]["input"];
segmentIndex: Scalars["Int"]["input"];
duration: Scalars["Float"]["input"];
}>;
export type SetSegmentDurationMutation = {
__typename?: "Mutation";
setSegmentDuration: boolean;
};
export type EditUploadStreamMutationVariables = Exact<{ export type EditUploadStreamMutationVariables = Exact<{
videoId: Scalars["Int"]["input"]; videoId: Scalars["Int"]["input"];
videoMetadataInput: VideoMetadataInput; videoMetadataInput: VideoMetadataInput;
@@ -2126,6 +2213,79 @@ export type GetShotsQueryResult = Apollo.QueryResult<
GetShotsQuery, GetShotsQuery,
GetShotsQueryVariables GetShotsQueryVariables
>; >;
export const GetShotAnnotationTypesDocument = gql`
query GetShotAnnotationTypes {
getShotAnnotationTypes {
id
name
}
}
`;
/**
* __useGetShotAnnotationTypesQuery__
*
* To run a query within a React component, call `useGetShotAnnotationTypesQuery` and pass it any options that fit your needs.
* When your component renders, `useGetShotAnnotationTypesQuery` 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 } = useGetShotAnnotationTypesQuery({
* variables: {
* },
* });
*/
export function useGetShotAnnotationTypesQuery(
baseOptions?: Apollo.QueryHookOptions<
GetShotAnnotationTypesQuery,
GetShotAnnotationTypesQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useQuery<
GetShotAnnotationTypesQuery,
GetShotAnnotationTypesQueryVariables
>(GetShotAnnotationTypesDocument, options);
}
export function useGetShotAnnotationTypesLazyQuery(
baseOptions?: Apollo.LazyQueryHookOptions<
GetShotAnnotationTypesQuery,
GetShotAnnotationTypesQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useLazyQuery<
GetShotAnnotationTypesQuery,
GetShotAnnotationTypesQueryVariables
>(GetShotAnnotationTypesDocument, options);
}
export function useGetShotAnnotationTypesSuspenseQuery(
baseOptions?: Apollo.SuspenseQueryHookOptions<
GetShotAnnotationTypesQuery,
GetShotAnnotationTypesQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useSuspenseQuery<
GetShotAnnotationTypesQuery,
GetShotAnnotationTypesQueryVariables
>(GetShotAnnotationTypesDocument, options);
}
export type GetShotAnnotationTypesQueryHookResult = ReturnType<
typeof useGetShotAnnotationTypesQuery
>;
export type GetShotAnnotationTypesLazyQueryHookResult = ReturnType<
typeof useGetShotAnnotationTypesLazyQuery
>;
export type GetShotAnnotationTypesSuspenseQueryHookResult = ReturnType<
typeof useGetShotAnnotationTypesSuspenseQuery
>;
export type GetShotAnnotationTypesQueryResult = Apollo.QueryResult<
GetShotAnnotationTypesQuery,
GetShotAnnotationTypesQueryVariables
>;
export const GetProfileImageUploadLinkDocument = gql` export const GetProfileImageUploadLinkDocument = gql`
mutation getProfileImageUploadLink($fileExt: String = ".png") { mutation getProfileImageUploadLink($fileExt: String = ".png") {
getProfileImageUploadLink(fileExt: $fileExt) { getProfileImageUploadLink(fileExt: $fileExt) {
@@ -2242,6 +2402,7 @@ export const GetLoggedInUserDocument = gql`
id id
firebaseUid firebaseUid
username username
isAdmin
profileImageUri profileImageUri
activeVideoId activeVideoId
createdAt createdAt
@@ -2387,6 +2548,83 @@ export type GetUserPlayTimeQueryResult = Apollo.QueryResult<
GetUserPlayTimeQuery, GetUserPlayTimeQuery,
GetUserPlayTimeQueryVariables GetUserPlayTimeQueryVariables
>; >;
export const GetUsernamesDocument = gql`
query getUsernames(
$matchString: String!
$limit: Int = null
$after: String = null
) {
getUsernames(matchString: $matchString, limit: $limit, after: $after)
}
`;
/**
* __useGetUsernamesQuery__
*
* To run a query within a React component, call `useGetUsernamesQuery` and pass it any options that fit your needs.
* When your component renders, `useGetUsernamesQuery` 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 } = useGetUsernamesQuery({
* variables: {
* matchString: // value for 'matchString'
* limit: // value for 'limit'
* after: // value for 'after'
* },
* });
*/
export function useGetUsernamesQuery(
baseOptions: Apollo.QueryHookOptions<
GetUsernamesQuery,
GetUsernamesQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useQuery<GetUsernamesQuery, GetUsernamesQueryVariables>(
GetUsernamesDocument,
options,
);
}
export function useGetUsernamesLazyQuery(
baseOptions?: Apollo.LazyQueryHookOptions<
GetUsernamesQuery,
GetUsernamesQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useLazyQuery<GetUsernamesQuery, GetUsernamesQueryVariables>(
GetUsernamesDocument,
options,
);
}
export function useGetUsernamesSuspenseQuery(
baseOptions?: Apollo.SuspenseQueryHookOptions<
GetUsernamesQuery,
GetUsernamesQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useSuspenseQuery<GetUsernamesQuery, GetUsernamesQueryVariables>(
GetUsernamesDocument,
options,
);
}
export type GetUsernamesQueryHookResult = ReturnType<
typeof useGetUsernamesQuery
>;
export type GetUsernamesLazyQueryHookResult = ReturnType<
typeof useGetUsernamesLazyQuery
>;
export type GetUsernamesSuspenseQueryHookResult = ReturnType<
typeof useGetUsernamesSuspenseQuery
>;
export type GetUsernamesQueryResult = Apollo.QueryResult<
GetUsernamesQuery,
GetUsernamesQueryVariables
>;
export const GetStreamMonitoringDetailsDocument = gql` export const GetStreamMonitoringDetailsDocument = gql`
query GetStreamMonitoringDetails($videoId: Int!) { query GetStreamMonitoringDetails($videoId: Int!) {
getVideo(videoId: $videoId) { getVideo(videoId: $videoId) {
@@ -2441,6 +2679,7 @@ export const GetStreamMonitoringDetailsDocument = gql`
isCompleted isCompleted
uploadCompletionCursor uploadCompletionCursor
lastIntendedSegmentBound lastIntendedSegmentBound
initPlaylistUploadStatus
} }
currentProcessing { currentProcessing {
errors { errors {
@@ -3232,6 +3471,118 @@ export type GetUploadLinkMutationOptions = Apollo.BaseMutationOptions<
GetUploadLinkMutation, GetUploadLinkMutation,
GetUploadLinkMutationVariables GetUploadLinkMutationVariables
>; >;
export const GetHlsInitUploadLinkDocument = gql`
mutation GetHlsInitUploadLink($videoId: Int!) {
getHlsInitUploadLink(videoId: $videoId) {
uploadUrl
headers {
key
value
}
}
}
`;
export type GetHlsInitUploadLinkMutationFn = Apollo.MutationFunction<
GetHlsInitUploadLinkMutation,
GetHlsInitUploadLinkMutationVariables
>;
/**
* __useGetHlsInitUploadLinkMutation__
*
* To run a mutation, you first call `useGetHlsInitUploadLinkMutation` within a React component and pass it any options that fit your needs.
* When your component renders, `useGetHlsInitUploadLinkMutation` returns a tuple that includes:
* - A mutate function that you can call at any time to execute the mutation
* - An object with fields that represent the current status of the mutation's execution
*
* @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;
*
* @example
* const [getHlsInitUploadLinkMutation, { data, loading, error }] = useGetHlsInitUploadLinkMutation({
* variables: {
* videoId: // value for 'videoId'
* },
* });
*/
export function useGetHlsInitUploadLinkMutation(
baseOptions?: Apollo.MutationHookOptions<
GetHlsInitUploadLinkMutation,
GetHlsInitUploadLinkMutationVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useMutation<
GetHlsInitUploadLinkMutation,
GetHlsInitUploadLinkMutationVariables
>(GetHlsInitUploadLinkDocument, options);
}
export type GetHlsInitUploadLinkMutationHookResult = ReturnType<
typeof useGetHlsInitUploadLinkMutation
>;
export type GetHlsInitUploadLinkMutationResult =
Apollo.MutationResult<GetHlsInitUploadLinkMutation>;
export type GetHlsInitUploadLinkMutationOptions = Apollo.BaseMutationOptions<
GetHlsInitUploadLinkMutation,
GetHlsInitUploadLinkMutationVariables
>;
export const SetSegmentDurationDocument = gql`
mutation SetSegmentDuration(
$videoId: Int!
$segmentIndex: Int!
$duration: Float!
) {
setSegmentDuration(
videoId: $videoId
segmentIndex: $segmentIndex
duration: $duration
)
}
`;
export type SetSegmentDurationMutationFn = Apollo.MutationFunction<
SetSegmentDurationMutation,
SetSegmentDurationMutationVariables
>;
/**
* __useSetSegmentDurationMutation__
*
* To run a mutation, you first call `useSetSegmentDurationMutation` within a React component and pass it any options that fit your needs.
* When your component renders, `useSetSegmentDurationMutation` returns a tuple that includes:
* - A mutate function that you can call at any time to execute the mutation
* - An object with fields that represent the current status of the mutation's execution
*
* @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;
*
* @example
* const [setSegmentDurationMutation, { data, loading, error }] = useSetSegmentDurationMutation({
* variables: {
* videoId: // value for 'videoId'
* segmentIndex: // value for 'segmentIndex'
* duration: // value for 'duration'
* },
* });
*/
export function useSetSegmentDurationMutation(
baseOptions?: Apollo.MutationHookOptions<
SetSegmentDurationMutation,
SetSegmentDurationMutationVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useMutation<
SetSegmentDurationMutation,
SetSegmentDurationMutationVariables
>(SetSegmentDurationDocument, options);
}
export type SetSegmentDurationMutationHookResult = ReturnType<
typeof useSetSegmentDurationMutation
>;
export type SetSegmentDurationMutationResult =
Apollo.MutationResult<SetSegmentDurationMutation>;
export type SetSegmentDurationMutationOptions = Apollo.BaseMutationOptions<
SetSegmentDurationMutation,
SetSegmentDurationMutationVariables
>;
export const EditUploadStreamDocument = gql` export const EditUploadStreamDocument = gql`
mutation EditUploadStream( mutation EditUploadStream(
$videoId: Int! $videoId: Int!

View File

@@ -36,3 +36,10 @@ query GetShots(
} }
} }
} }
query GetShotAnnotationTypes {
getShotAnnotationTypes {
id
name
}
}

View File

@@ -24,6 +24,7 @@ query getLoggedInUser {
id id
firebaseUid firebaseUid
username username
isAdmin
profileImageUri profileImageUri
activeVideoId activeVideoId
createdAt createdAt
@@ -36,3 +37,11 @@ query GetUserPlayTime($userId: Int!) {
totalSeconds totalSeconds
} }
} }
query getUsernames(
$matchString: String!
$limit: Int = null
$after: String = null
) {
getUsernames(matchString: $matchString, limit: $limit, after: $after)
}

View File

@@ -51,6 +51,7 @@ query GetStreamMonitoringDetails($videoId: Int!) {
isCompleted isCompleted
uploadCompletionCursor uploadCompletionCursor
lastIntendedSegmentBound lastIntendedSegmentBound
initPlaylistUploadStatus
} }
currentProcessing { currentProcessing {
errors { errors {

View File

@@ -14,6 +14,28 @@ mutation GetUploadLink($videoId: Int!, $segmentIndex: Int!) {
} }
} }
mutation GetHlsInitUploadLink($videoId: Int!) {
getHlsInitUploadLink(videoId: $videoId) {
uploadUrl
headers {
key
value
}
}
}
mutation SetSegmentDuration(
$videoId: Int!
$segmentIndex: Int!
$duration: Float!
) {
setSegmentDuration(
videoId: $videoId
segmentIndex: $segmentIndex
duration: $duration
)
}
mutation EditUploadStream( mutation EditUploadStream(
$videoId: Int! $videoId: Int!
$videoMetadataInput: VideoMetadataInput! $videoMetadataInput: VideoMetadataInput!

View File

@@ -12,6 +12,11 @@ type Query {
getShotAnnotationTypes: [ShotAnnotationTypeGQL!]! getShotAnnotationTypes: [ShotAnnotationTypeGQL!]!
getUser(userId: Int!): UserGQL getUser(userId: Int!): UserGQL
getLoggedInUser: UserGQL getLoggedInUser: UserGQL
getUsernames(
matchString: String = null
limit: Int = null
after: String = null
): [String!]!
getPlayTime(userId: Int!): UserPlayTimeGQL! getPlayTime(userId: Int!): UserPlayTimeGQL!
getUserVideos( getUserVideos(
userId: Int = null userId: Int = null
@@ -155,6 +160,7 @@ type ShotGQL {
bankFeatures: BankFeaturesGQL bankFeatures: BankFeaturesGQL
serializedShotPaths: SerializedShotPathsGQL serializedShotPaths: SerializedShotPathsGQL
user: UserGQL user: UserGQL
annotations: [ShotAnnotationGQL!]!
} }
""" """
@@ -195,12 +201,22 @@ type UserGQL {
id: Int! id: Int!
firebaseUid: String! firebaseUid: String!
username: String! username: String!
isAdmin: Boolean!
activeVideoId: Int activeVideoId: Int
profileImageUri: String profileImageUri: String
createdAt: DateTime createdAt: DateTime
updatedAt: DateTime updatedAt: DateTime
} }
type ShotAnnotationGQL {
shotId: Int!
type: ShotAnnotationTypeGQL!
creator: UserGQL!
notes: String!
createdAt: DateTime
updatedAt: DateTime
}
type ShotAnnotationTypeGQL { type ShotAnnotationTypeGQL {
id: Int! id: Int!
name: String! name: String!
@@ -246,6 +262,7 @@ type UploadStreamGQL {
segmentProcessingCursor: Int! segmentProcessingCursor: Int!
lastIntendedSegmentBound: Int lastIntendedSegmentBound: Int
isCompleted: Boolean! isCompleted: Boolean!
initPlaylistUploadStatus: InitPlaylistUploadStatusEnum
lowestUnuploadedSegmentIndex: Int! lowestUnuploadedSegmentIndex: Int!
uploadCompletionCursor: Int! uploadCompletionCursor: Int!
errors: [StreamErrorGQL!]! errors: [StreamErrorGQL!]!
@@ -254,6 +271,12 @@ type UploadStreamGQL {
segments: [UploadSegmentGQL!]! segments: [UploadSegmentGQL!]!
} }
enum InitPlaylistUploadStatusEnum {
NOT_APPLICABLE
NOT_UPLOADED
UPLOADED
}
type StreamErrorGQL { type StreamErrorGQL {
message: String! message: String!
} }
@@ -264,7 +287,7 @@ type UploadSegmentGQL {
valid: Boolean! valid: Boolean!
endFrameIndex: Int endFrameIndex: Int
framesPerSecond: Float framesPerSecond: Float
durationsInSeconds: Float durationInSeconds: Float
linksRequested: Int! linksRequested: Int!
} }
@@ -342,7 +365,11 @@ type Mutation {
): CreateUploadStreamReturn! ): CreateUploadStreamReturn!
getUploadLink(videoId: Int!, segmentIndex: Int!): GetUploadLinkReturn! getUploadLink(videoId: Int!, segmentIndex: Int!): GetUploadLinkReturn!
getHlsInitUploadLink(videoId: Int!): GetUploadLinkReturn! getHlsInitUploadLink(videoId: Int!): GetUploadLinkReturn!
setSegmentDuration(videoId: Int!, segmentId: Int!, duration: Float!): Boolean! setSegmentDuration(
videoId: Int!
segmentIndex: Int!
duration: Float!
): Boolean!
editUploadStream(videoId: Int!, videoMetadata: VideoMetadataInput!): Boolean! editUploadStream(videoId: Int!, videoMetadata: VideoMetadataInput!): Boolean!
deleteVideo(videoId: Int!): Boolean! deleteVideo(videoId: Int!): Boolean!
} }
@@ -368,6 +395,7 @@ type CreateUploadStreamReturn {
} }
input VideoMetadataInput { input VideoMetadataInput {
resolution: VideoResolution!
videoName: String = null videoName: String = null
startTime: DateTime = null startTime: DateTime = null
endTime: DateTime = null endTime: DateTime = null
@@ -377,6 +405,12 @@ input VideoMetadataInput {
lastIntendedSegmentBound: Int = null lastIntendedSegmentBound: Int = null
streamSegmentType: StreamSegmentTypeEnum = null streamSegmentType: StreamSegmentTypeEnum = null
endStream: Boolean! = false endStream: Boolean! = false
framesPerSecond: Float = null
}
input VideoResolution {
width: Int!
height: Int!
} }
input UploadStreamMetadataInput { input UploadStreamMetadataInput {