Compare commits

...

15 Commits

Author SHA1 Message Date
9d912ed21e Add time to segment information 2025-02-26 20:30:39 -07:00
0bcfd32b14 Add start segment and end segment client side fields 2025-02-26 19:29:15 -07:00
9b27d288da Merge pull request 'Add shots to runs operation to get the id' (#162) from loewy/add-shots-in-runs into master
Reviewed-on: #162
2025-02-20 15:02:43 -07:00
b0f94f5ea8 add shots to runs to get id
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2025-02-20 12:37:52 -08:00
de653ba54c Merge pull request 'Add tagClasses to getUserTags operation' (#161) from loewy/getUserTags-operation into master
Reviewed-on: #161
2025-02-05 13:51:14 -07:00
2657628a54 add tagClasses to operation
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2025-02-05 12:48:56 -08:00
cd20cfcb40 Add get runs for highlights 2025-02-04 20:57:22 -07:00
2657a9baf7 Merge pull request 'Return tag classes with tag' (#160) from kat/return-tag-classes-with-tag into master
Reviewed-on: #160
2025-02-04 19:16:15 -07:00
9bb4b7c513 Return tag classes with tag
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2025-02-04 19:14:55 -07:00
a5050ed08d Merge pull request 'Revert previous commit 021cd35278ea74f6971ae021b33ddc1bba020e6d' (#159) from loewy/revert-adding-group into master
Reviewed-on: #159
2025-02-04 15:42:41 -07:00
b9e26243e9 revert
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2025-02-04 14:41:11 -08:00
021cd35278 Merge pull request 'Add group in return for user tags' (#158) from loewy/add-group-to-get-user-tags into master
Reviewed-on: #158
2025-02-04 14:48:11 -07:00
8dda81236a add group to return for user tags
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2025-02-04 13:44:58 -08:00
c7ff615fe4 Create tags in video metadata (#157)
Reviewed-on: #157
2025-02-03 16:43:25 -07:00
365cbb5f70 Merge pull request 'Create upload stream named fragment' (#156) from kat/named-fragment-mini-video into master
Reviewed-on: #156
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2025-01-28 21:31:23 -07:00
6 changed files with 225 additions and 6 deletions

View File

@ -1,9 +1,16 @@
# see: https://www.apollographql.com/docs/react/local-state/managing-state-with-field-policies/
directive @client on FIELD
type SegmentInfo {
index: Int!
time: Float!
}
extend type ShotGQL {
startTime: Float!
endTime: Float!
startSegment: SegmentInfo!
endSegment: SegmentInfo!
}
extend type UploadStreamGQL {

View File

@ -2556,6 +2556,12 @@ export type SegmentEndFramesGql = {
segmentEndFrames: Array<Scalars["Int"]["output"]>;
};
export type SegmentInfo = {
__typename?: "SegmentInfo";
index: Scalars["Int"]["output"];
time: Scalars["Float"]["output"];
};
export type SegmentStartTimesGql = {
__typename?: "SegmentStartTimesGQL";
id: Scalars["Int"]["output"];
@ -2608,6 +2614,7 @@ export type ShotGql = {
createdAt?: Maybe<Scalars["DateTime"]["output"]>;
cueObjectFeatures?: Maybe<CueObjectFeaturesGql>;
endFrame: Scalars["Int"]["output"];
endSegment: SegmentInfo;
endTime: Scalars["Float"]["output"];
falsePositiveScore?: Maybe<Scalars["Float"]["output"]>;
id: Scalars["Int"]["output"];
@ -2617,6 +2624,7 @@ export type ShotGql = {
runFeatures?: Maybe<RunFeaturesGql>;
serializedShotPaths?: Maybe<SerializedShotPathsGql>;
startFrame: Scalars["Int"]["output"];
startSegment: SegmentInfo;
startTime: Scalars["Float"]["output"];
updatedAt?: Maybe<Scalars["DateTime"]["output"]>;
user?: Maybe<UserGql>;
@ -2708,13 +2716,19 @@ export type SuccessfulAddAddShotAnnotationErrors =
| AddShotAnnotationErrors
| SuccessfulAdd;
export type TagGql = {
__typename?: "TagGQL";
group?: Maybe<Scalars["String"]["output"]>;
export type TagClassGql = {
__typename?: "TagClassGQL";
id: Scalars["Int"]["output"];
name: Scalars["String"]["output"];
};
export type TagGql = {
__typename?: "TagGQL";
id: Scalars["Int"]["output"];
name: Scalars["String"]["output"];
tagClasses?: Maybe<Array<TagClassGql>>;
};
export type TargetMetricsGql = {
__typename?: "TargetMetricsGQL";
averageDifficulty?: Maybe<Scalars["Float"]["output"]>;
@ -2906,6 +2920,7 @@ export type VideoMetadataInput = {
endStream?: Scalars["Boolean"]["input"];
endTime?: InputMaybe<Scalars["DateTime"]["input"]>;
framesPerSecond?: InputMaybe<Scalars["Float"]["input"]>;
/** @deprecated `game_type` is deprecated. Use `tags` instead. */
gameType?: InputMaybe<Scalars["String"]["input"]>;
lastIntendedSegmentBound?: InputMaybe<Scalars["Int"]["input"]>;
private?: InputMaybe<Scalars["Boolean"]["input"]>;
@ -2913,6 +2928,8 @@ export type VideoMetadataInput = {
startTime?: InputMaybe<Scalars["DateTime"]["input"]>;
streamSegmentType?: InputMaybe<StreamSegmentTypeEnum>;
tableSize?: InputMaybe<Scalars["Float"]["input"]>;
/** A list of tags associated with the video. Replace `game_type` */
tags?: InputMaybe<Array<VideoTagInput>>;
videoName?: InputMaybe<Scalars["String"]["input"]>;
};
@ -3380,6 +3397,29 @@ export type GetMedalsQuery = {
};
};
export type GetRunsForHighlightsQueryVariables = Exact<{
filterInput: RunFilterInput;
runIds?: InputMaybe<Array<Scalars["Int"]["input"]> | Scalars["Int"]["input"]>;
runsOrdering?: InputMaybe<GetRunsOrdering>;
}>;
export type GetRunsForHighlightsQuery = {
__typename?: "Query";
getRuns: {
__typename?: "GetRunsResult";
count?: number | null;
runIds: Array<number>;
runs: Array<{
__typename?: "RunGQL";
id: number;
runLength: number;
userId: number;
videoId: number;
shots: Array<{ __typename?: "ShotGQL"; videoId: number; id: number }>;
}>;
};
};
export type GetSerializedShotPathsQueryVariables = Exact<{
filterInput: FilterInput;
}>;
@ -3507,6 +3547,8 @@ export type GetShotsWithMetadataFilterResultQuery = {
falsePositiveScore?: number | null;
createdAt?: any | null;
updatedAt?: any | null;
startSegment: { __typename?: "SegmentInfo"; index: number; time: number };
endSegment: { __typename?: "SegmentInfo"; index: number; time: number };
user?: { __typename?: "UserGQL"; id: number } | null;
cueObjectFeatures?: {
__typename?: "CueObjectFeaturesGQL";
@ -3574,6 +3616,8 @@ export type GetShotsWithMetadataQuery = {
falsePositiveScore?: number | null;
createdAt?: any | null;
updatedAt?: any | null;
startSegment: { __typename?: "SegmentInfo"; index: number; time: number };
endSegment: { __typename?: "SegmentInfo"; index: number; time: number };
user?: { __typename?: "UserGQL"; id: number } | null;
cueObjectFeatures?: {
__typename?: "CueObjectFeaturesGQL";
@ -3634,6 +3678,8 @@ export type GetShotsByIdsQuery = {
falsePositiveScore?: number | null;
createdAt?: any | null;
updatedAt?: any | null;
startSegment: { __typename?: "SegmentInfo"; index: number; time: number };
endSegment: { __typename?: "SegmentInfo"; index: number; time: number };
user?: { __typename?: "UserGQL"; id: number } | null;
cueObjectFeatures?: {
__typename?: "CueObjectFeaturesGQL";
@ -3683,6 +3729,8 @@ export type ShotWithAllFeaturesFragment = {
falsePositiveScore?: number | null;
createdAt?: any | null;
updatedAt?: any | null;
startSegment: { __typename?: "SegmentInfo"; index: number; time: number };
endSegment: { __typename?: "SegmentInfo"; index: number; time: number };
user?: { __typename?: "UserGQL"; id: number } | null;
cueObjectFeatures?: {
__typename?: "CueObjectFeaturesGQL";
@ -3745,6 +3793,8 @@ export type EditShotMutation = {
falsePositiveScore?: number | null;
createdAt?: any | null;
updatedAt?: any | null;
startSegment: { __typename?: "SegmentInfo"; index: number; time: number };
endSegment: { __typename?: "SegmentInfo"; index: number; time: number };
user?: { __typename?: "UserGQL"; id: number } | null;
cueObjectFeatures?: {
__typename?: "CueObjectFeaturesGQL";
@ -3927,7 +3977,16 @@ export type GetUserTagsQueryVariables = Exact<{ [key: string]: never }>;
export type GetUserTagsQuery = {
__typename?: "Query";
getUserTags: Array<{ __typename?: "TagGQL"; id: number; name: string }>;
getUserTags: Array<{
__typename?: "TagGQL";
id: number;
name: string;
tagClasses?: Array<{
__typename?: "TagClassGQL";
id: number;
name: string;
}> | null;
}>;
};
export type FollowUserMutationVariables = Exact<{
@ -4811,6 +4870,14 @@ export const ShotWithAllFeaturesFragmentDoc = gql`
endFrame
startTime @client
endTime @client
startSegment @client {
index
time
}
endSegment @client {
index
time
}
user {
id
}
@ -5712,6 +5779,100 @@ export type GetMedalsQueryResult = Apollo.QueryResult<
GetMedalsQuery,
GetMedalsQueryVariables
>;
export const GetRunsForHighlightsDocument = gql`
query GetRunsForHighlights(
$filterInput: RunFilterInput!
$runIds: [Int!] = null
$runsOrdering: GetRunsOrdering
) {
getRuns(
filterInput: $filterInput
runIds: $runIds
runsOrdering: $runsOrdering
) {
count
runs {
id
runLength
userId
videoId
shots {
videoId
id
}
}
runIds
}
}
`;
/**
* __useGetRunsForHighlightsQuery__
*
* To run a query within a React component, call `useGetRunsForHighlightsQuery` and pass it any options that fit your needs.
* When your component renders, `useGetRunsForHighlightsQuery` 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 } = useGetRunsForHighlightsQuery({
* variables: {
* filterInput: // value for 'filterInput'
* runIds: // value for 'runIds'
* runsOrdering: // value for 'runsOrdering'
* },
* });
*/
export function useGetRunsForHighlightsQuery(
baseOptions: Apollo.QueryHookOptions<
GetRunsForHighlightsQuery,
GetRunsForHighlightsQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useQuery<
GetRunsForHighlightsQuery,
GetRunsForHighlightsQueryVariables
>(GetRunsForHighlightsDocument, options);
}
export function useGetRunsForHighlightsLazyQuery(
baseOptions?: Apollo.LazyQueryHookOptions<
GetRunsForHighlightsQuery,
GetRunsForHighlightsQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useLazyQuery<
GetRunsForHighlightsQuery,
GetRunsForHighlightsQueryVariables
>(GetRunsForHighlightsDocument, options);
}
export function useGetRunsForHighlightsSuspenseQuery(
baseOptions?: Apollo.SuspenseQueryHookOptions<
GetRunsForHighlightsQuery,
GetRunsForHighlightsQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useSuspenseQuery<
GetRunsForHighlightsQuery,
GetRunsForHighlightsQueryVariables
>(GetRunsForHighlightsDocument, options);
}
export type GetRunsForHighlightsQueryHookResult = ReturnType<
typeof useGetRunsForHighlightsQuery
>;
export type GetRunsForHighlightsLazyQueryHookResult = ReturnType<
typeof useGetRunsForHighlightsLazyQuery
>;
export type GetRunsForHighlightsSuspenseQueryHookResult = ReturnType<
typeof useGetRunsForHighlightsSuspenseQuery
>;
export type GetRunsForHighlightsQueryResult = Apollo.QueryResult<
GetRunsForHighlightsQuery,
GetRunsForHighlightsQueryVariables
>;
export const GetSerializedShotPathsDocument = gql`
query GetSerializedShotPaths($filterInput: FilterInput!) {
getShots(filterInput: $filterInput) {
@ -6932,6 +7093,10 @@ export const GetUserTagsDocument = gql`
getUserTags {
id
name
tagClasses {
id
name
}
}
}
`;

24
src/operations/runs.gql Normal file
View File

@ -0,0 +1,24 @@
query GetRunsForHighlights(
$filterInput: RunFilterInput!
$runIds: [Int!] = null
$runsOrdering: GetRunsOrdering
) {
getRuns(
filterInput: $filterInput
runIds: $runIds
runsOrdering: $runsOrdering
) {
count
runs {
id
runLength
userId
videoId
shots {
videoId
id
}
}
runIds
}
}

View File

@ -139,6 +139,14 @@ fragment ShotWithAllFeatures on ShotGQL {
endFrame
startTime @client
endTime @client
startSegment @client {
index
time
}
endSegment @client {
index
time
}
user {
id
}

View File

@ -79,6 +79,10 @@ query GetUserTags {
getUserTags {
id
name
tagClasses {
id
name
}
}
}

View File

@ -714,9 +714,14 @@ type PageInfoGQL {
}
type TagGQL {
name: String!
id: Int!
group: String
name: String!
tagClasses: [TagClassGQL!]
}
type TagClassGQL {
id: Int!
name: String!
}
"""
@ -895,6 +900,12 @@ input VideoMetadataInput {
startTime: DateTime = null
endTime: DateTime = null
gameType: String = null
@deprecated(reason: "`game_type` is deprecated. Use `tags` instead.")
"""
A list of tags associated with the video. Replace `game_type`
"""
tags: [VideoTagInput!] = null
tableSize: Float = null
lastIntendedSegmentBound: Int = null
streamSegmentType: StreamSegmentTypeEnum = null