Compare commits

...

20 Commits

Author SHA1 Message Date
14863e3357 Add day
All checks were successful
Tests / Tests (pull_request) Successful in 6s
2024-10-04 22:56:58 -06:00
Your Name
58f01c567c Add day alignment 2024-10-03 21:57:07 -06:00
937368c753 GetShotsWithMetadata accepts ids (#68)
Reviewed-on: #68
2024-10-03 12:36:35 -06:00
d8c11875d4 Merge pull request 'Update get shots with metadata' (#67) from kat/update-gql into master
Reviewed-on: #67
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-10-03 11:47:20 -06:00
bacd9e77f0 Update get shots with metadata
All checks were successful
Tests / Tests (pull_request) Successful in 14s
2024-10-03 11:42:39 -06:00
69d755ba32 Merge pull request 'Use ShotWithAllFeatures in getAllShots' (#66) from kat/use-fragment-get-shots into master
Reviewed-on: #66
2024-10-02 19:09:50 -06:00
31fb95e3b0 Use ShotWithAllFeatures in getAllShots
All checks were successful
Tests / Tests (pull_request) Successful in 13s
2024-10-02 18:15:00 -06:00
7d0f9870dd Merge pull request 'Delete unused get shots operation' (#65) from kat/delete-unused-get-shots into master
Reviewed-on: #65
2024-10-02 17:46:26 -06:00
4a493b4e8d Delete unused get shots operation
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-10-02 17:43:06 -06:00
341dc819a0 Merge pull request 'Use shot fragment in getShots to cache normalized shots' (#64) from kat/create-shot-fragment into master
Reviewed-on: #64
2024-10-02 17:37:59 -06:00
b58aecf7a5 Crate shot with all features fragment (#63)
Reviewed-on: #63
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-10-01 19:19:39 -06:00
301c017d5e Delete unused varibles
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2024-10-01 15:28:12 -06:00
1a4b676635 Create shot fragment
Some checks failed
Tests / Tests (pull_request) Failing after 4s
2024-09-30 17:08:11 -06:00
ce54bef0b4 Merge pull request 'Create get shots by ids operation' (#61) from kat/create-get-shots-by-id into master
Reviewed-on: #61
2024-09-29 22:55:34 -06:00
2699d29d7b Create get shots by ids operation
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2024-09-29 22:53:24 -06:00
63a07d58ca Add get shots by Ids 2024-09-29 22:16:50 -06:00
59fe332fe0 Add ids to GetShotsResult 2024-09-26 21:47:44 -06:00
33723f4ea2 Improve TimeInterval type 2024-09-23 15:13:45 -06:00
c0ee55069e Merge pull request 'Add pocketing intention info' (#60) from volodymyr/pocketing-intention-info into master
Reviewed-on: #60
2024-09-23 11:47:01 -06:00
492ae4a225 Add pocketing intention info
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-09-23 11:45:03 -06:00
3 changed files with 316 additions and 388 deletions

View File

@@ -72,6 +72,12 @@ export type AggregationInput =
}
| { bucketSet?: never; datetimeRange?: never; enum: EnumAggregation };
export enum AlignedIntervalEnum {
Month = "MONTH",
Week = "WEEK",
Year = "YEAR",
}
export type BankFeaturesGql = {
__typename?: "BankFeaturesGQL";
bankAngle: Scalars["Float"]["output"];
@@ -1503,6 +1509,7 @@ export type GetShotsPagination = {
export type GetShotsResult = {
__typename?: "GetShotsResult";
count?: Maybe<Scalars["Int"]["output"]>;
ids: Array<Scalars["Int"]["output"]>;
shots: Array<ShotGql>;
};
@@ -1727,6 +1734,7 @@ export type Query = {
getPlayTime: UserPlayTimeGql;
getShotAnnotationTypes: Array<ShotAnnotationTypeGql>;
getShots: Array<ShotGql>;
getShotsByIds: Array<ShotGql>;
getShotsWithMetadata: GetShotsResult;
getUser?: Maybe<UserGql>;
getUserTags: Array<TagGql>;
@@ -1760,8 +1768,13 @@ export type QueryGetShotsArgs = {
shotsPagination?: InputMaybe<GetShotsPagination>;
};
export type QueryGetShotsByIdsArgs = {
ids: Array<Scalars["Int"]["input"]>;
};
export type QueryGetShotsWithMetadataArgs = {
filterInput: FilterInput;
ids?: InputMaybe<Array<Scalars["Int"]["input"]>>;
limit?: Scalars["Int"]["input"];
shotsPagination?: InputMaybe<GetShotsPagination>;
};
@@ -1914,20 +1927,17 @@ export type TargetMetricsGql = {
spinTypeCounts?: Maybe<SpinTypeCountsGql>;
};
export type TimeInterval = {
/** True eg 1/15-3/15 => [(1/15,1/31), (2/1,2/28), (3/1,3/15)] False eg 1/15-2/15 => [(1/15,2/14), (2/14,3/15)] */
calendarAlignedMonths?: Scalars["Boolean"]["input"];
export type TimeDeltaGql = {
days?: InputMaybe<Scalars["Int"]["input"]>;
hours?: InputMaybe<Scalars["Int"]["input"]>;
minutes?: InputMaybe<Scalars["Int"]["input"]>;
months?: InputMaybe<Scalars["Int"]["input"]>;
/** A second is the base unit and cannot be subdivided */
seconds?: InputMaybe<Scalars["Int"]["input"]>;
weeks?: InputMaybe<Scalars["Int"]["input"]>;
/** Assumes a year is 365 days long */
years?: InputMaybe<Scalars["Int"]["input"]>;
};
export type TimeInterval =
| { aligned: AlignedIntervalEnum; timedelta?: never }
| { aligned?: never; timedelta: TimeDeltaGql };
export type TooManyInitUploadsErr = {
__typename?: "TooManyInitUploadsErr";
linksRequested: Scalars["Int"]["output"];
@@ -2209,64 +2219,6 @@ export type GetVideoMakePercentageIntervalsQuery = {
}>;
};
export type GetShotsQueryVariables = Exact<{
filterInput: FilterInput;
shotsPagination?: InputMaybe<GetShotsPagination>;
limit?: InputMaybe<Scalars["Int"]["input"]>;
includeCreatedAt?: Scalars["Boolean"]["input"];
includeUpdatedAt?: Scalars["Boolean"]["input"];
includeCueObjectFeatures?: Scalars["Boolean"]["input"];
includePocketingIntentionFeatures?: Scalars["Boolean"]["input"];
includeCueObjectDistance?: Scalars["Boolean"]["input"];
includeCueObjectAngle?: Scalars["Boolean"]["input"];
includeCueBallSpeed?: Scalars["Boolean"]["input"];
includeSpinType?: Scalars["Boolean"]["input"];
includeShotDirection?: Scalars["Boolean"]["input"];
includeTargetPocketDistance?: Scalars["Boolean"]["input"];
includeMake?: Scalars["Boolean"]["input"];
includeIntendedPocketType?: Scalars["Boolean"]["input"];
}>;
export type GetShotsQuery = {
__typename?: "Query";
getShots: Array<{
__typename?: "ShotGQL";
id: number;
videoId: number;
startFrame: number;
endFrame: number;
falsePositiveScore?: number | null;
createdAt?: any | null;
updatedAt?: any | null;
user?: { __typename?: "UserGQL"; id: number } | null;
video?: {
__typename?: "VideoGQL";
stream?: {
__typename?: "UploadStreamGQL";
resolution: {
__typename?: "VideoResolutionGQL";
width?: number | null;
height?: number | null;
};
} | null;
} | null;
cueObjectFeatures?: {
__typename?: "CueObjectFeaturesGQL";
cueObjectDistance?: number | null;
cueObjectAngle?: number | null;
cueBallSpeed?: number | null;
shotDirection?: ShotDirectionEnum | null;
spinType?: SpinTypeEnum | null;
} | null;
pocketingIntentionFeatures?: {
__typename?: "PocketingIntentionFeaturesGQL";
targetPocketDistance?: number | null;
make?: boolean | null;
intendedPocketType?: PocketEnum | null;
} | null;
}>;
};
export type GetSerializedShotPathsQueryVariables = Exact<{
filterInput: FilterInput;
}>;
@@ -2303,18 +2255,7 @@ export type GetShotsWithMetadataQueryVariables = Exact<{
filterInput: FilterInput;
shotsPagination?: InputMaybe<GetShotsPagination>;
limit?: InputMaybe<Scalars["Int"]["input"]>;
includeCreatedAt?: Scalars["Boolean"]["input"];
includeUpdatedAt?: Scalars["Boolean"]["input"];
includeCueObjectFeatures?: Scalars["Boolean"]["input"];
includePocketingIntentionFeatures?: Scalars["Boolean"]["input"];
includeCueObjectDistance?: Scalars["Boolean"]["input"];
includeCueObjectAngle?: Scalars["Boolean"]["input"];
includeCueBallSpeed?: Scalars["Boolean"]["input"];
includeSpinType?: Scalars["Boolean"]["input"];
includeShotDirection?: Scalars["Boolean"]["input"];
includeTargetPocketDistance?: Scalars["Boolean"]["input"];
includeMake?: Scalars["Boolean"]["input"];
includeIntendedPocketType?: Scalars["Boolean"]["input"];
ids?: InputMaybe<Array<Scalars["Int"]["input"]> | Scalars["Int"]["input"]>;
}>;
export type GetShotsWithMetadataQuery = {
@@ -2322,6 +2263,7 @@ export type GetShotsWithMetadataQuery = {
getShotsWithMetadata: {
__typename?: "GetShotsResult";
count?: number | null;
ids: Array<number>;
shots: Array<{
__typename?: "ShotGQL";
id: number;
@@ -2343,10 +2285,61 @@ export type GetShotsWithMetadataQuery = {
};
} | null;
} | null;
cueObjectFeatures?: {
__typename?: "CueObjectFeaturesGQL";
cueObjectDistance?: number | null;
cueObjectAngle?: number | null;
cueBallSpeed?: number | null;
shotDirection?: ShotDirectionEnum | null;
spinType?: SpinTypeEnum | null;
} | null;
pocketingIntentionFeatures?: {
__typename?: "PocketingIntentionFeaturesGQL";
targetPocketDistance?: number | null;
make?: boolean | null;
intendedPocketType?: PocketEnum | null;
} | null;
pocketingIntentionInfo?: {
__typename?: "PocketingIntentionInfoGQL";
ballId: number;
pocketId: PocketIdentifier;
pathMetadataIndex: number;
} | null;
serializedShotPaths?: {
__typename?: "SerializedShotPathsGQL";
b64EncodedBuffer?: string | null;
} | null;
}>;
};
};
export type GetShotsByIdsQueryVariables = Exact<{
ids: Array<Scalars["Int"]["input"]> | Scalars["Int"]["input"];
}>;
export type GetShotsByIdsQuery = {
__typename?: "Query";
getShotsByIds: Array<{
__typename?: "ShotGQL";
id: number;
videoId: number;
startFrame: number;
endFrame: number;
falsePositiveScore?: number | null;
createdAt?: any | null;
updatedAt?: any | null;
user?: { __typename?: "UserGQL"; id: number } | null;
video?: {
__typename?: "VideoGQL";
stream?: {
__typename?: "UploadStreamGQL";
resolution: {
__typename?: "VideoResolutionGQL";
width?: number | null;
height?: number | null;
};
} | null;
} | null;
cueObjectFeatures?: {
__typename?: "CueObjectFeaturesGQL";
cueObjectDistance?: number | null;
@@ -2361,8 +2354,64 @@ export type GetShotsWithMetadataQuery = {
make?: boolean | null;
intendedPocketType?: PocketEnum | null;
} | null;
pocketingIntentionInfo?: {
__typename?: "PocketingIntentionInfoGQL";
ballId: number;
pocketId: PocketIdentifier;
pathMetadataIndex: number;
} | null;
serializedShotPaths?: {
__typename?: "SerializedShotPathsGQL";
b64EncodedBuffer?: string | null;
} | null;
}>;
};
export type ShotWithAllFeaturesFragment = {
__typename?: "ShotGQL";
id: number;
videoId: number;
startFrame: number;
endFrame: number;
falsePositiveScore?: number | null;
createdAt?: any | null;
updatedAt?: any | null;
user?: { __typename?: "UserGQL"; id: number } | null;
video?: {
__typename?: "VideoGQL";
stream?: {
__typename?: "UploadStreamGQL";
resolution: {
__typename?: "VideoResolutionGQL";
width?: number | null;
height?: number | null;
};
} | null;
} | null;
cueObjectFeatures?: {
__typename?: "CueObjectFeaturesGQL";
cueObjectDistance?: number | null;
cueObjectAngle?: number | null;
cueBallSpeed?: number | null;
shotDirection?: ShotDirectionEnum | null;
spinType?: SpinTypeEnum | null;
} | null;
pocketingIntentionFeatures?: {
__typename?: "PocketingIntentionFeaturesGQL";
targetPocketDistance?: number | null;
make?: boolean | null;
intendedPocketType?: PocketEnum | null;
} | null;
pocketingIntentionInfo?: {
__typename?: "PocketingIntentionInfoGQL";
ballId: number;
pocketId: PocketIdentifier;
pathMetadataIndex: number;
} | null;
serializedShotPaths?: {
__typename?: "SerializedShotPathsGQL";
b64EncodedBuffer?: string | null;
} | null;
};
export type GetProfileImageUploadLinkMutationVariables = Exact<{
@@ -2908,6 +2957,48 @@ export type GetUploadStreamsWithDetailsQuery = {
};
};
export const ShotWithAllFeaturesFragmentDoc = gql`
fragment ShotWithAllFeatures on ShotGQL {
id
videoId
startFrame
endFrame
user {
id
}
falsePositiveScore
video {
stream {
resolution {
width
height
}
}
}
createdAt
updatedAt
cueObjectFeatures {
cueObjectDistance
cueObjectAngle
cueBallSpeed
shotDirection
spinType
}
pocketingIntentionFeatures {
targetPocketDistance
make
intendedPocketType
}
pocketingIntentionInfo {
ballId
pocketId
pathMetadataIndex
}
serializedShotPaths {
b64EncodedBuffer
}
}
`;
export const GetAggregatedShotMetricsDocument = gql`
query GetAggregatedShotMetrics($aggregateInput: AggregateInputGQL!) {
getAggregatedShotMetrics(aggregateInput: $aggregateInput) {
@@ -3247,138 +3338,6 @@ export type GetVideoMakePercentageIntervalsQueryResult = Apollo.QueryResult<
GetVideoMakePercentageIntervalsQuery,
GetVideoMakePercentageIntervalsQueryVariables
>;
export const GetShotsDocument = gql`
query GetShots(
$filterInput: FilterInput!
$shotsPagination: GetShotsPagination
$limit: Int
$includeCreatedAt: Boolean! = false
$includeUpdatedAt: Boolean! = false
$includeCueObjectFeatures: Boolean! = false
$includePocketingIntentionFeatures: Boolean! = false
$includeCueObjectDistance: Boolean! = false
$includeCueObjectAngle: Boolean! = false
$includeCueBallSpeed: Boolean! = false
$includeSpinType: Boolean! = false
$includeShotDirection: Boolean! = false
$includeTargetPocketDistance: Boolean! = false
$includeMake: Boolean! = false
$includeIntendedPocketType: Boolean! = false
) {
getShots(
filterInput: $filterInput
shotsPagination: $shotsPagination
limit: $limit
) {
id
videoId
startFrame
endFrame
user {
id
}
falsePositiveScore
video {
stream {
resolution {
width
height
}
}
}
createdAt @include(if: $includeCreatedAt)
updatedAt @include(if: $includeUpdatedAt)
cueObjectFeatures @include(if: $includeCueObjectFeatures) {
cueObjectDistance @include(if: $includeCueObjectDistance)
cueObjectAngle @include(if: $includeCueObjectAngle)
cueBallSpeed @include(if: $includeCueBallSpeed)
shotDirection @include(if: $includeShotDirection)
spinType @include(if: $includeSpinType)
}
pocketingIntentionFeatures
@include(if: $includePocketingIntentionFeatures) {
targetPocketDistance @include(if: $includeTargetPocketDistance)
make @include(if: $includeMake)
intendedPocketType @include(if: $includeIntendedPocketType)
}
}
}
`;
/**
* __useGetShotsQuery__
*
* To run a query within a React component, call `useGetShotsQuery` and pass it any options that fit your needs.
* When your component renders, `useGetShotsQuery` 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 } = useGetShotsQuery({
* variables: {
* filterInput: // value for 'filterInput'
* shotsPagination: // value for 'shotsPagination'
* limit: // value for 'limit'
* includeCreatedAt: // value for 'includeCreatedAt'
* includeUpdatedAt: // value for 'includeUpdatedAt'
* includeCueObjectFeatures: // value for 'includeCueObjectFeatures'
* includePocketingIntentionFeatures: // value for 'includePocketingIntentionFeatures'
* includeCueObjectDistance: // value for 'includeCueObjectDistance'
* includeCueObjectAngle: // value for 'includeCueObjectAngle'
* includeCueBallSpeed: // value for 'includeCueBallSpeed'
* includeSpinType: // value for 'includeSpinType'
* includeShotDirection: // value for 'includeShotDirection'
* includeTargetPocketDistance: // value for 'includeTargetPocketDistance'
* includeMake: // value for 'includeMake'
* includeIntendedPocketType: // value for 'includeIntendedPocketType'
* },
* });
*/
export function useGetShotsQuery(
baseOptions: Apollo.QueryHookOptions<GetShotsQuery, GetShotsQueryVariables>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useQuery<GetShotsQuery, GetShotsQueryVariables>(
GetShotsDocument,
options,
);
}
export function useGetShotsLazyQuery(
baseOptions?: Apollo.LazyQueryHookOptions<
GetShotsQuery,
GetShotsQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useLazyQuery<GetShotsQuery, GetShotsQueryVariables>(
GetShotsDocument,
options,
);
}
export function useGetShotsSuspenseQuery(
baseOptions?: Apollo.SuspenseQueryHookOptions<
GetShotsQuery,
GetShotsQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useSuspenseQuery<GetShotsQuery, GetShotsQueryVariables>(
GetShotsDocument,
options,
);
}
export type GetShotsQueryHookResult = ReturnType<typeof useGetShotsQuery>;
export type GetShotsLazyQueryHookResult = ReturnType<
typeof useGetShotsLazyQuery
>;
export type GetShotsSuspenseQueryHookResult = ReturnType<
typeof useGetShotsSuspenseQuery
>;
export type GetShotsQueryResult = Apollo.QueryResult<
GetShotsQuery,
GetShotsQueryVariables
>;
export const GetSerializedShotPathsDocument = gql`
query GetSerializedShotPaths($filterInput: FilterInput!) {
getShots(filterInput: $filterInput) {
@@ -3536,63 +3495,22 @@ export const GetShotsWithMetadataDocument = gql`
$filterInput: FilterInput!
$shotsPagination: GetShotsPagination
$limit: Int
$includeCreatedAt: Boolean! = false
$includeUpdatedAt: Boolean! = false
$includeCueObjectFeatures: Boolean! = false
$includePocketingIntentionFeatures: Boolean! = false
$includeCueObjectDistance: Boolean! = false
$includeCueObjectAngle: Boolean! = false
$includeCueBallSpeed: Boolean! = false
$includeSpinType: Boolean! = false
$includeShotDirection: Boolean! = false
$includeTargetPocketDistance: Boolean! = false
$includeMake: Boolean! = false
$includeIntendedPocketType: Boolean! = false
$ids: [Int!]
) {
getShotsWithMetadata(
filterInput: $filterInput
shotsPagination: $shotsPagination
limit: $limit
ids: $ids
) {
count
shots {
id
videoId
startFrame
endFrame
user {
id
}
falsePositiveScore
video {
stream {
resolution {
width
height
}
}
}
serializedShotPaths {
b64EncodedBuffer
}
createdAt @include(if: $includeCreatedAt)
updatedAt @include(if: $includeUpdatedAt)
cueObjectFeatures @include(if: $includeCueObjectFeatures) {
cueObjectDistance @include(if: $includeCueObjectDistance)
cueObjectAngle @include(if: $includeCueObjectAngle)
cueBallSpeed @include(if: $includeCueBallSpeed)
shotDirection @include(if: $includeShotDirection)
spinType @include(if: $includeSpinType)
}
pocketingIntentionFeatures
@include(if: $includePocketingIntentionFeatures) {
targetPocketDistance @include(if: $includeTargetPocketDistance)
make @include(if: $includeMake)
intendedPocketType @include(if: $includeIntendedPocketType)
}
...ShotWithAllFeatures
}
ids
}
}
${ShotWithAllFeaturesFragmentDoc}
`;
/**
@@ -3610,18 +3528,7 @@ export const GetShotsWithMetadataDocument = gql`
* filterInput: // value for 'filterInput'
* shotsPagination: // value for 'shotsPagination'
* limit: // value for 'limit'
* includeCreatedAt: // value for 'includeCreatedAt'
* includeUpdatedAt: // value for 'includeUpdatedAt'
* includeCueObjectFeatures: // value for 'includeCueObjectFeatures'
* includePocketingIntentionFeatures: // value for 'includePocketingIntentionFeatures'
* includeCueObjectDistance: // value for 'includeCueObjectDistance'
* includeCueObjectAngle: // value for 'includeCueObjectAngle'
* includeCueBallSpeed: // value for 'includeCueBallSpeed'
* includeSpinType: // value for 'includeSpinType'
* includeShotDirection: // value for 'includeShotDirection'
* includeTargetPocketDistance: // value for 'includeTargetPocketDistance'
* includeMake: // value for 'includeMake'
* includeIntendedPocketType: // value for 'includeIntendedPocketType'
* ids: // value for 'ids'
* },
* });
*/
@@ -3674,6 +3581,80 @@ export type GetShotsWithMetadataQueryResult = Apollo.QueryResult<
GetShotsWithMetadataQuery,
GetShotsWithMetadataQueryVariables
>;
export const GetShotsByIdsDocument = gql`
query GetShotsByIds($ids: [Int!]!) {
getShotsByIds(ids: $ids) {
...ShotWithAllFeatures
}
}
${ShotWithAllFeaturesFragmentDoc}
`;
/**
* __useGetShotsByIdsQuery__
*
* To run a query within a React component, call `useGetShotsByIdsQuery` and pass it any options that fit your needs.
* When your component renders, `useGetShotsByIdsQuery` 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 } = useGetShotsByIdsQuery({
* variables: {
* ids: // value for 'ids'
* },
* });
*/
export function useGetShotsByIdsQuery(
baseOptions: Apollo.QueryHookOptions<
GetShotsByIdsQuery,
GetShotsByIdsQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useQuery<GetShotsByIdsQuery, GetShotsByIdsQueryVariables>(
GetShotsByIdsDocument,
options,
);
}
export function useGetShotsByIdsLazyQuery(
baseOptions?: Apollo.LazyQueryHookOptions<
GetShotsByIdsQuery,
GetShotsByIdsQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useLazyQuery<GetShotsByIdsQuery, GetShotsByIdsQueryVariables>(
GetShotsByIdsDocument,
options,
);
}
export function useGetShotsByIdsSuspenseQuery(
baseOptions?: Apollo.SuspenseQueryHookOptions<
GetShotsByIdsQuery,
GetShotsByIdsQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useSuspenseQuery<
GetShotsByIdsQuery,
GetShotsByIdsQueryVariables
>(GetShotsByIdsDocument, options);
}
export type GetShotsByIdsQueryHookResult = ReturnType<
typeof useGetShotsByIdsQuery
>;
export type GetShotsByIdsLazyQueryHookResult = ReturnType<
typeof useGetShotsByIdsLazyQuery
>;
export type GetShotsByIdsSuspenseQueryHookResult = ReturnType<
typeof useGetShotsByIdsSuspenseQuery
>;
export type GetShotsByIdsQueryResult = Apollo.QueryResult<
GetShotsByIdsQuery,
GetShotsByIdsQueryVariables
>;
export const GetProfileImageUploadLinkDocument = gql`
mutation getProfileImageUploadLink($fileExt: String = ".png") {
getProfileImageUploadLink(fileExt: $fileExt) {

View File

@@ -1,59 +1,3 @@
query GetShots(
$filterInput: FilterInput!
$shotsPagination: GetShotsPagination
$limit: Int
$includeCreatedAt: Boolean! = false
$includeUpdatedAt: Boolean! = false
$includeCueObjectFeatures: Boolean! = false
$includePocketingIntentionFeatures: Boolean! = false
$includeCueObjectDistance: Boolean! = false
$includeCueObjectAngle: Boolean! = false
$includeCueBallSpeed: Boolean! = false
$includeSpinType: Boolean! = false
$includeShotDirection: Boolean! = false
$includeTargetPocketDistance: Boolean! = false
$includeMake: Boolean! = false
$includeIntendedPocketType: Boolean! = false
) {
getShots(
filterInput: $filterInput
shotsPagination: $shotsPagination
limit: $limit
) {
id
videoId
startFrame
endFrame
user {
id
}
falsePositiveScore
video {
stream {
resolution {
width
height
}
}
}
createdAt @include(if: $includeCreatedAt)
updatedAt @include(if: $includeUpdatedAt)
cueObjectFeatures @include(if: $includeCueObjectFeatures) {
cueObjectDistance @include(if: $includeCueObjectDistance)
cueObjectAngle @include(if: $includeCueObjectAngle)
cueBallSpeed @include(if: $includeCueBallSpeed)
shotDirection @include(if: $includeShotDirection)
spinType @include(if: $includeSpinType)
}
pocketingIntentionFeatures
@include(if: $includePocketingIntentionFeatures) {
targetPocketDistance @include(if: $includeTargetPocketDistance)
make @include(if: $includeMake)
intendedPocketType @include(if: $includeIntendedPocketType)
}
}
}
query GetSerializedShotPaths($filterInput: FilterInput!) {
getShots(filterInput: $filterInput) {
id
@@ -77,26 +21,29 @@ query GetShotsWithMetadata(
$filterInput: FilterInput!
$shotsPagination: GetShotsPagination
$limit: Int
$includeCreatedAt: Boolean! = false
$includeUpdatedAt: Boolean! = false
$includeCueObjectFeatures: Boolean! = false
$includePocketingIntentionFeatures: Boolean! = false
$includeCueObjectDistance: Boolean! = false
$includeCueObjectAngle: Boolean! = false
$includeCueBallSpeed: Boolean! = false
$includeSpinType: Boolean! = false
$includeShotDirection: Boolean! = false
$includeTargetPocketDistance: Boolean! = false
$includeMake: Boolean! = false
$includeIntendedPocketType: Boolean! = false
$ids: [Int!]
) {
getShotsWithMetadata(
filterInput: $filterInput
shotsPagination: $shotsPagination
limit: $limit
ids: $ids
) {
count
shots {
...ShotWithAllFeatures
}
ids
}
}
query GetShotsByIds($ids: [Int!]!) {
getShotsByIds(ids: $ids) {
...ShotWithAllFeatures
}
}
fragment ShotWithAllFeatures on ShotGQL {
id
videoId
startFrame
@@ -113,25 +60,26 @@ query GetShotsWithMetadata(
}
}
}
createdAt
updatedAt
cueObjectFeatures {
cueObjectDistance
cueObjectAngle
cueBallSpeed
shotDirection
spinType
}
pocketingIntentionFeatures {
targetPocketDistance
make
intendedPocketType
}
pocketingIntentionInfo {
ballId
pocketId
pathMetadataIndex
}
serializedShotPaths {
b64EncodedBuffer
}
createdAt @include(if: $includeCreatedAt)
updatedAt @include(if: $includeUpdatedAt)
cueObjectFeatures @include(if: $includeCueObjectFeatures) {
cueObjectDistance @include(if: $includeCueObjectDistance)
cueObjectAngle @include(if: $includeCueObjectAngle)
cueBallSpeed @include(if: $includeCueBallSpeed)
shotDirection @include(if: $includeShotDirection)
spinType @include(if: $includeSpinType)
}
pocketingIntentionFeatures
@include(if: $includePocketingIntentionFeatures) {
targetPocketDistance @include(if: $includeTargetPocketDistance)
make @include(if: $includeMake)
intendedPocketType @include(if: $includeIntendedPocketType)
}
}
}
}

View File

@@ -11,6 +11,7 @@ type Query {
): [MakePercentageIntervalGQL!]!
getShotsWithMetadata(
filterInput: FilterInput!
ids: [Int!] = null
shotsPagination: GetShotsPagination = null
limit: Int! = 500
): GetShotsResult!
@@ -19,6 +20,7 @@ type Query {
shotsPagination: GetShotsPagination = null
limit: Int! = 500
): [ShotGQL!]!
getShotsByIds(ids: [Int!]!): [ShotGQL!]!
getShotAnnotationTypes(errorTypes: Boolean = false): [ShotAnnotationTypeGQL!]!
getUser(userId: Int!): UserGQL
getLoggedInUser: UserGQL
@@ -107,26 +109,22 @@ Date with time (isoformat)
"""
scalar DateTime
input TimeInterval {
"""
A second is the base unit and cannot be subdivided
"""
seconds: Int = 0
minutes: Int = 0
hours: Int = 0
input TimeInterval @oneOf {
timedelta: TimeDeltaGQL
aligned: AlignedIntervalEnum
}
input TimeDeltaGQL {
days: Int = 0
weeks: Int = 0
months: Int = 0
"""
Assumes a year is 365 days long
"""
years: Int = 0
}
"""
True eg 1/15-3/15 => [(1/15,1/31), (2/1,2/28), (3/1,3/15)] False eg 1/15-2/15 => [(1/15,2/14), (2/14,3/15)]
"""
calendarAlignedMonths: Boolean! = true
enum AlignedIntervalEnum {
MONTH
YEAR
WEEK
}
input FilterInput @oneOf {
@@ -248,6 +246,7 @@ type MakePercentageIntervalGQL {
type GetShotsResult {
shots: [ShotGQL!]!
count: Int
ids: [Int!]!
}
type ShotGQL {