Compare commits

...

9 Commits

Author SHA1 Message Date
fd87ade629 Add new makes medals
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-11-21 10:54:06 -08:00
1fab007654 Merge pull request 'Change FilterInput to RunFilterInput' (#140) from mk/use-run-filter-input into master
Reviewed-on: #140
2024-11-19 16:30:20 -07:00
cd2cdb475a Change FilterInput to RunFilterInput
All checks were successful
Tests / Tests (pull_request) Successful in 6s
2024-11-19 15:29:21 -08:00
c3c74379fb Merge pull request 'Add support for getRuns' (#139) from mk/runs-qb into master
Reviewed-on: #139
2024-11-19 15:06:15 -07:00
da21627f15 Add support for getRuns
All checks were successful
Tests / Tests (pull_request) Successful in 31s
2024-11-19 14:05:21 -08:00
8fabfd67cf Merge pull request 'Add difficulty to pocketingIntentionFeatures in ShotWithAllFeatures' (#138) from loewy/add-difficulty-to-shot-features-fragment into master
Reviewed-on: #138
2024-11-19 00:30:17 -07:00
e6960038f2 add difficulty to pocketingIntentionFeatures in ShotWithAllFeatures
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-11-18 23:11:47 -08:00
b6ec7ed39d Merge pull request 'Add clientUploadStatus' (#137) from mk/stream-status into master
Reviewed-on: #137
2024-11-18 18:47:30 -07:00
545ba638c2 Add clientUploadStatus
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-11-18 17:46:48 -08:00
3 changed files with 176 additions and 46 deletions

View File

@@ -117,6 +117,11 @@ export type BucketSetInputGql = {
feature: Scalars["String"]["input"]; feature: Scalars["String"]["input"];
}; };
export enum ClientUploadStatusEnum {
UploadDisabled = "UPLOAD_DISABLED",
UploadEnabled = "UPLOAD_ENABLED",
}
export type CreateBucketSetInput = { export type CreateBucketSetInput = {
buckets: Array<BucketInputGql>; buckets: Array<BucketInputGql>;
feature: Scalars["String"]["input"]; feature: Scalars["String"]["input"];
@@ -150,6 +155,11 @@ export type DateRangeFilter = {
lessThanInclusive?: Scalars["Boolean"]["input"]; lessThanInclusive?: Scalars["Boolean"]["input"];
}; };
export type DatetimeOrdering = {
descending?: Scalars["Boolean"]["input"];
startingAt?: InputMaybe<Scalars["DateTime"]["input"]>;
};
export type DatetimeRangeAggregationInput = { export type DatetimeRangeAggregationInput = {
endDatetime?: InputMaybe<Scalars["DateTime"]["input"]>; endDatetime?: InputMaybe<Scalars["DateTime"]["input"]>;
feature?: Scalars["String"]["input"]; feature?: Scalars["String"]["input"];
@@ -157,11 +167,6 @@ export type DatetimeRangeAggregationInput = {
startDatetime?: InputMaybe<Scalars["DateTime"]["input"]>; startDatetime?: InputMaybe<Scalars["DateTime"]["input"]>;
}; };
export type DatetimeShotOrdering = {
descending?: Scalars["Boolean"]["input"];
startingAt?: InputMaybe<Scalars["DateTime"]["input"]>;
};
export type DeployedConfigGql = { export type DeployedConfigGql = {
__typename?: "DeployedConfigGQL"; __typename?: "DeployedConfigGQL";
allowNewUsers: Scalars["Boolean"]["output"]; allowNewUsers: Scalars["Boolean"]["output"];
@@ -1873,6 +1878,11 @@ export type FilterInput =
videoId: Array<Scalars["Int"]["input"]>; videoId: Array<Scalars["Int"]["input"]>;
}; };
export type FloatOrdering = {
descending?: Scalars["Boolean"]["input"];
startingAt?: InputMaybe<Scalars["Float"]["input"]>;
};
export type FloatRangeFilter = { export type FloatRangeFilter = {
greaterThan?: InputMaybe<Scalars["Float"]["input"]>; greaterThan?: InputMaybe<Scalars["Float"]["input"]>;
greaterThanEqualTo?: InputMaybe<Scalars["Float"]["input"]>; greaterThanEqualTo?: InputMaybe<Scalars["Float"]["input"]>;
@@ -1882,11 +1892,6 @@ export type FloatRangeFilter = {
lessThanInclusive?: Scalars["Boolean"]["input"]; lessThanInclusive?: Scalars["Boolean"]["input"];
}; };
export type FloatShotOrdering = {
descending?: Scalars["Boolean"]["input"];
startingAt?: InputMaybe<Scalars["Float"]["input"]>;
};
export type GetProfileUploadLinkErrors = { export type GetProfileUploadLinkErrors = {
__typename?: "GetProfileUploadLinkErrors"; __typename?: "GetProfileUploadLinkErrors";
error: TooManyProfileImageUploadsErr; error: TooManyProfileImageUploadsErr;
@@ -1897,6 +1902,17 @@ export type GetProfileUploadLinkReturn = {
value: UploadLinkGetProfileUploadLinkErrors; value: UploadLinkGetProfileUploadLinkErrors;
}; };
export type GetRunsOrdering = {
orderings: Array<RunsOrderingComponent>;
};
export type GetRunsResult = {
__typename?: "GetRunsResult";
count?: Maybe<Scalars["Int"]["output"]>;
runIds: Array<Scalars["Int"]["output"]>;
runs: Array<RunGql>;
};
export type GetShotsOrdering = { export type GetShotsOrdering = {
orderings: Array<ShotsOrderingComponent>; orderings: Array<ShotsOrderingComponent>;
}; };
@@ -1959,17 +1975,17 @@ export type InitUploadAlreadyCompletedErr = {
segmentType: StreamSegmentTypeEnum; segmentType: StreamSegmentTypeEnum;
}; };
export type IntOrdering = {
descending?: Scalars["Boolean"]["input"];
startingAt?: InputMaybe<Scalars["Int"]["input"]>;
};
export type IntPoint2D = { export type IntPoint2D = {
__typename?: "IntPoint2D"; __typename?: "IntPoint2D";
x: Scalars["Int"]["output"]; x: Scalars["Int"]["output"];
y: Scalars["Int"]["output"]; y: Scalars["Int"]["output"];
}; };
export type IntShotOrdering = {
descending?: Scalars["Boolean"]["input"];
startingAt?: InputMaybe<Scalars["Int"]["input"]>;
};
export type MakePercentageIntervalGql = { export type MakePercentageIntervalGql = {
__typename?: "MakePercentageIntervalGQL"; __typename?: "MakePercentageIntervalGQL";
elapsedTime: Scalars["Float"]["output"]; elapsedTime: Scalars["Float"]["output"];
@@ -2181,6 +2197,7 @@ export type Query = {
getMedals: RequestedMedalsGql; getMedals: RequestedMedalsGql;
getOrderedShots: GetShotsResult; getOrderedShots: GetShotsResult;
getPlayTime: UserPlayTimeGql; getPlayTime: UserPlayTimeGql;
getRuns: GetRunsResult;
getShotAnnotationTypes: Array<ShotAnnotationTypeGql>; getShotAnnotationTypes: Array<ShotAnnotationTypeGql>;
getShots: Array<ShotGql>; getShots: Array<ShotGql>;
getShotsByIds: Array<ShotGql>; getShotsByIds: Array<ShotGql>;
@@ -2233,6 +2250,14 @@ export type QueryGetPlayTimeArgs = {
userId: Scalars["Int"]["input"]; userId: Scalars["Int"]["input"];
}; };
export type QueryGetRunsArgs = {
countRespectsLimit?: Scalars["Boolean"]["input"];
filterInput: RunFilterInput;
limit?: Scalars["Int"]["input"];
runIds?: InputMaybe<Array<Scalars["Int"]["input"]>>;
runsOrdering?: InputMaybe<GetRunsOrdering>;
};
export type QueryGetShotAnnotationTypesArgs = { export type QueryGetShotAnnotationTypesArgs = {
errorTypes?: InputMaybe<Scalars["Boolean"]["input"]>; errorTypes?: InputMaybe<Scalars["Boolean"]["input"]>;
}; };
@@ -2300,6 +2325,11 @@ export type QueryWaitForArgs = {
export type RequestedMedalsGql = { export type RequestedMedalsGql = {
__typename?: "RequestedMedalsGQL"; __typename?: "RequestedMedalsGQL";
dailyMakes50?: Maybe<MedalGql>;
dailyMakes100?: Maybe<MedalGql>;
dailyMakes150?: Maybe<MedalGql>;
dailyMakes200?: Maybe<MedalGql>;
dailyMakes250?: Maybe<MedalGql>;
distanceOver66?: Maybe<MedalGql>; distanceOver66?: Maybe<MedalGql>;
distanceOver78?: Maybe<MedalGql>; distanceOver78?: Maybe<MedalGql>;
distanceOver90?: Maybe<MedalGql>; distanceOver90?: Maybe<MedalGql>;
@@ -2313,18 +2343,53 @@ export type RequestedMedalsGql = {
runLength30?: Maybe<MedalGql>; runLength30?: Maybe<MedalGql>;
runLength40?: Maybe<MedalGql>; runLength40?: Maybe<MedalGql>;
runLength50?: Maybe<MedalGql>; runLength50?: Maybe<MedalGql>;
/** @deprecated no longer supported */
totalMakes25?: Maybe<MedalGql>; totalMakes25?: Maybe<MedalGql>;
/** @deprecated no longer supported */
totalMakes50?: Maybe<MedalGql>; totalMakes50?: Maybe<MedalGql>;
/** @deprecated no longer supported */
totalMakes75?: Maybe<MedalGql>; totalMakes75?: Maybe<MedalGql>;
totalMakes100?: Maybe<MedalGql>; totalMakes100?: Maybe<MedalGql>;
/** @deprecated no longer supported */
totalMakes200?: Maybe<MedalGql>; totalMakes200?: Maybe<MedalGql>;
/** @deprecated no longer supported */
totalMakes300?: Maybe<MedalGql>; totalMakes300?: Maybe<MedalGql>;
/** @deprecated no longer supported */
totalMakes400?: Maybe<MedalGql>; totalMakes400?: Maybe<MedalGql>;
totalMakes500?: Maybe<MedalGql>; totalMakes500?: Maybe<MedalGql>;
/** @deprecated no longer supported */
totalMakes750?: Maybe<MedalGql>; totalMakes750?: Maybe<MedalGql>;
totalMakes1000?: Maybe<MedalGql>; totalMakes1000?: Maybe<MedalGql>;
totalMakes5000?: Maybe<MedalGql>;
totalMakes10000?: Maybe<MedalGql>;
}; };
export type RunFilterInput = {
andFilters?: InputMaybe<Array<RunFilterInput>>;
createdAt?: InputMaybe<DateRangeFilter>;
notFilter?: InputMaybe<RunFilterInput>;
orFilters?: InputMaybe<Array<RunFilterInput>>;
runLength?: InputMaybe<FloatRangeFilter>;
tableSize?: InputMaybe<FloatRangeFilter>;
userId?: InputMaybe<Array<Scalars["Int"]["input"]>>;
username?: InputMaybe<Array<Scalars["String"]["input"]>>;
videoId?: InputMaybe<Array<Scalars["Int"]["input"]>>;
};
export type RunGql = {
__typename?: "RunGQL";
id: Scalars["Int"]["output"];
runLength: Scalars["Int"]["output"];
shots: Array<ShotGql>;
userId: Scalars["Int"]["output"];
videoId: Scalars["Int"]["output"];
};
export type RunsOrderingComponent =
| { runLength: IntOrdering; videoCreation?: never; videoId?: never }
| { runLength?: never; videoCreation: DatetimeOrdering; videoId?: never }
| { runLength?: never; videoCreation?: never; videoId: IntOrdering };
export type SegmentAlreadyUploadedErr = { export type SegmentAlreadyUploadedErr = {
__typename?: "SegmentAlreadyUploadedErr"; __typename?: "SegmentAlreadyUploadedErr";
segmentId: Scalars["Int"]["output"]; segmentId: Scalars["Int"]["output"];
@@ -2404,7 +2469,7 @@ export type ShotGql = {
export type ShotsOrderingComponent = export type ShotsOrderingComponent =
| { | {
marginOfError: FloatShotOrdering; marginOfError: FloatOrdering;
runLength?: never; runLength?: never;
startFrame?: never; startFrame?: never;
videoCreation?: never; videoCreation?: never;
@@ -2412,7 +2477,7 @@ export type ShotsOrderingComponent =
} }
| { | {
marginOfError?: never; marginOfError?: never;
runLength: IntShotOrdering; runLength: IntOrdering;
startFrame?: never; startFrame?: never;
videoCreation?: never; videoCreation?: never;
videoId?: never; videoId?: never;
@@ -2420,7 +2485,7 @@ export type ShotsOrderingComponent =
| { | {
marginOfError?: never; marginOfError?: never;
runLength?: never; runLength?: never;
startFrame: IntShotOrdering; startFrame: IntOrdering;
videoCreation?: never; videoCreation?: never;
videoId?: never; videoId?: never;
} }
@@ -2428,7 +2493,7 @@ export type ShotsOrderingComponent =
marginOfError?: never; marginOfError?: never;
runLength?: never; runLength?: never;
startFrame?: never; startFrame?: never;
videoCreation: DatetimeShotOrdering; videoCreation: DatetimeOrdering;
videoId?: never; videoId?: never;
} }
| { | {
@@ -2436,7 +2501,7 @@ export type ShotsOrderingComponent =
runLength?: never; runLength?: never;
startFrame?: never; startFrame?: never;
videoCreation?: never; videoCreation?: never;
videoId: IntShotOrdering; videoId: IntOrdering;
}; };
export type SpinTypeCountsGql = { export type SpinTypeCountsGql = {
@@ -2546,6 +2611,7 @@ export type UploadSegmentGql = {
export type UploadStreamGql = { export type UploadStreamGql = {
__typename?: "UploadStreamGQL"; __typename?: "UploadStreamGQL";
clientUploadStatus?: Maybe<ClientUploadStatusEnum>;
createdAt: Scalars["DateTime"]["output"]; createdAt: Scalars["DateTime"]["output"];
errors: Array<StreamErrorGql>; errors: Array<StreamErrorGql>;
id: Scalars["ID"]["output"]; id: Scalars["ID"]["output"];
@@ -2640,6 +2706,7 @@ export type VideoHistoryGql = {
}; };
export type VideoMetadataInput = { export type VideoMetadataInput = {
clientUploadStatus?: InputMaybe<ClientUploadStatusEnum>;
endStream?: Scalars["Boolean"]["input"]; endStream?: Scalars["Boolean"]["input"];
endTime?: InputMaybe<Scalars["DateTime"]["input"]>; endTime?: InputMaybe<Scalars["DateTime"]["input"]>;
framesPerSecond?: InputMaybe<Scalars["Float"]["input"]>; framesPerSecond?: InputMaybe<Scalars["Float"]["input"]>;
@@ -3188,6 +3255,7 @@ export type GetShotsWithMetadataFilterResultQuery = {
targetPocketAngleDirection?: ShotDirectionEnum | null; targetPocketAngleDirection?: ShotDirectionEnum | null;
marginOfErrorInDegrees?: number | null; marginOfErrorInDegrees?: number | null;
intendedPocketType?: PocketEnum | null; intendedPocketType?: PocketEnum | null;
difficulty?: number | null;
} | null; } | null;
pocketingIntentionInfo?: { pocketingIntentionInfo?: {
__typename?: "PocketingIntentionInfoGQL"; __typename?: "PocketingIntentionInfoGQL";
@@ -3254,6 +3322,7 @@ export type GetShotsWithMetadataQuery = {
targetPocketAngleDirection?: ShotDirectionEnum | null; targetPocketAngleDirection?: ShotDirectionEnum | null;
marginOfErrorInDegrees?: number | null; marginOfErrorInDegrees?: number | null;
intendedPocketType?: PocketEnum | null; intendedPocketType?: PocketEnum | null;
difficulty?: number | null;
} | null; } | null;
pocketingIntentionInfo?: { pocketingIntentionInfo?: {
__typename?: "PocketingIntentionInfoGQL"; __typename?: "PocketingIntentionInfoGQL";
@@ -3313,6 +3382,7 @@ export type GetShotsByIdsQuery = {
targetPocketAngleDirection?: ShotDirectionEnum | null; targetPocketAngleDirection?: ShotDirectionEnum | null;
marginOfErrorInDegrees?: number | null; marginOfErrorInDegrees?: number | null;
intendedPocketType?: PocketEnum | null; intendedPocketType?: PocketEnum | null;
difficulty?: number | null;
} | null; } | null;
pocketingIntentionInfo?: { pocketingIntentionInfo?: {
__typename?: "PocketingIntentionInfoGQL"; __typename?: "PocketingIntentionInfoGQL";
@@ -3361,6 +3431,7 @@ export type ShotWithAllFeaturesFragment = {
targetPocketAngleDirection?: ShotDirectionEnum | null; targetPocketAngleDirection?: ShotDirectionEnum | null;
marginOfErrorInDegrees?: number | null; marginOfErrorInDegrees?: number | null;
intendedPocketType?: PocketEnum | null; intendedPocketType?: PocketEnum | null;
difficulty?: number | null;
} | null; } | null;
pocketingIntentionInfo?: { pocketingIntentionInfo?: {
__typename?: "PocketingIntentionInfoGQL"; __typename?: "PocketingIntentionInfoGQL";
@@ -4326,6 +4397,7 @@ export const ShotWithAllFeaturesFragmentDoc = gql`
targetPocketAngleDirection targetPocketAngleDirection
marginOfErrorInDegrees marginOfErrorInDegrees
intendedPocketType intendedPocketType
difficulty
} }
pocketingIntentionInfo { pocketingIntentionInfo {
ballId ballId

View File

@@ -159,6 +159,7 @@ fragment ShotWithAllFeatures on ShotGQL {
targetPocketAngleDirection targetPocketAngleDirection
marginOfErrorInDegrees marginOfErrorInDegrees
intendedPocketType intendedPocketType
difficulty
} }
pocketingIntentionInfo { pocketingIntentionInfo {
ballId ballId

View File

@@ -10,6 +10,13 @@ type Query {
intervalDuration: Int! = 300 intervalDuration: Int! = 300
): [MakePercentageIntervalGQL!]! ): [MakePercentageIntervalGQL!]!
getMedals(scope: MedalScope!, userId: Int = null): RequestedMedalsGQL! getMedals(scope: MedalScope!, userId: Int = null): RequestedMedalsGQL!
getRuns(
filterInput: RunFilterInput!
runIds: [Int!] = null
runsOrdering: GetRunsOrdering = null
limit: Int! = 500
countRespectsLimit: Boolean! = false
): GetRunsResult!
getOrderedShots( getOrderedShots(
filterInput: FilterInput! filterInput: FilterInput!
ids: [Int!] = null ids: [Int!] = null
@@ -286,16 +293,23 @@ type RequestedMedalsGQL {
runLength30: MedalGQL runLength30: MedalGQL
runLength40: MedalGQL runLength40: MedalGQL
runLength50: MedalGQL runLength50: MedalGQL
totalMakes25: MedalGQL totalMakes25: MedalGQL @deprecated(reason: "no longer supported")
totalMakes50: MedalGQL totalMakes50: MedalGQL @deprecated(reason: "no longer supported")
totalMakes75: MedalGQL totalMakes75: MedalGQL @deprecated(reason: "no longer supported")
totalMakes200: MedalGQL @deprecated(reason: "no longer supported")
totalMakes300: MedalGQL @deprecated(reason: "no longer supported")
totalMakes400: MedalGQL @deprecated(reason: "no longer supported")
totalMakes750: MedalGQL @deprecated(reason: "no longer supported")
totalMakes100: MedalGQL totalMakes100: MedalGQL
totalMakes200: MedalGQL
totalMakes300: MedalGQL
totalMakes400: MedalGQL
totalMakes500: MedalGQL totalMakes500: MedalGQL
totalMakes750: MedalGQL
totalMakes1000: MedalGQL totalMakes1000: MedalGQL
totalMakes5000: MedalGQL
totalMakes10000: MedalGQL
dailyMakes50: MedalGQL
dailyMakes100: MedalGQL
dailyMakes150: MedalGQL
dailyMakes200: MedalGQL
dailyMakes250: MedalGQL
} }
type MedalGQL { type MedalGQL {
@@ -308,10 +322,18 @@ input MedalScope @oneOf {
interval: TimeInterval interval: TimeInterval
} }
type GetShotsResult { type GetRunsResult {
shots: [ShotGQL!]! runs: [RunGQL!]!
count: Int count: Int
ids: [Int!]! runIds: [Int!]!
}
type RunGQL {
id: Int!
runLength: Int!
videoId: Int!
userId: Int!
shots: [ShotGQL!]!
} }
type ShotGQL { type ShotGQL {
@@ -452,6 +474,7 @@ type UploadStreamGQL {
createdAt: DateTime! createdAt: DateTime!
updatedAt: DateTime! updatedAt: DateTime!
segments: [UploadSegmentGQL!]! segments: [UploadSegmentGQL!]!
clientUploadStatus: ClientUploadStatusEnum
resolution: VideoResolutionGQL! resolution: VideoResolutionGQL!
streamSegmentType: StreamSegmentTypeEnum! streamSegmentType: StreamSegmentTypeEnum!
} }
@@ -476,6 +499,11 @@ type UploadSegmentGQL {
linksRequested: Int! linksRequested: Int!
} }
enum ClientUploadStatusEnum {
UPLOAD_ENABLED
UPLOAD_DISABLED
}
type VideoResolutionGQL { type VideoResolutionGQL {
width: Int width: Int
height: Int height: Int
@@ -563,33 +591,61 @@ type VideoProcessingStatusGQL {
updatedAt: DateTime updatedAt: DateTime
} }
input RunFilterInput {
videoId: [Int!]
userId: [Int!]
username: [String!]
andFilters: [RunFilterInput!]
orFilters: [RunFilterInput!]
notFilter: RunFilterInput
tableSize: FloatRangeFilter
createdAt: DateRangeFilter
runLength: FloatRangeFilter
}
input GetRunsOrdering {
orderings: [RunsOrderingComponent!]!
}
input RunsOrderingComponent @oneOf {
runLength: IntOrdering
videoId: IntOrdering
videoCreation: DatetimeOrdering
}
input IntOrdering {
descending: Boolean! = true
startingAt: Int = null
}
input DatetimeOrdering {
descending: Boolean! = true
startingAt: DateTime = null
}
type GetShotsResult {
shots: [ShotGQL!]!
count: Int
ids: [Int!]!
}
input GetShotsOrdering { input GetShotsOrdering {
orderings: [ShotsOrderingComponent!]! orderings: [ShotsOrderingComponent!]!
} }
input ShotsOrderingComponent @oneOf { input ShotsOrderingComponent @oneOf {
videoCreation: DatetimeShotOrdering videoCreation: DatetimeOrdering
marginOfError: FloatShotOrdering marginOfError: FloatOrdering
videoId: IntShotOrdering videoId: IntOrdering
startFrame: IntShotOrdering startFrame: IntOrdering
runLength: IntShotOrdering runLength: IntOrdering
} }
input DatetimeShotOrdering { input FloatOrdering {
descending: Boolean! = true
startingAt: DateTime = null
}
input FloatShotOrdering {
descending: Boolean! = true descending: Boolean! = true
startingAt: Float = null startingAt: Float = null
} }
input IntShotOrdering {
descending: Boolean! = true
startingAt: Int = null
}
input GetShotsPagination { input GetShotsPagination {
createdAfter: CreatedAfter! createdAfter: CreatedAfter!
startFrameAfter: Int! startFrameAfter: Int!
@@ -771,6 +827,7 @@ input VideoMetadataInput {
streamSegmentType: StreamSegmentTypeEnum = null streamSegmentType: StreamSegmentTypeEnum = null
private: Boolean = null private: Boolean = null
endStream: Boolean! = false endStream: Boolean! = false
clientUploadStatus: ClientUploadStatusEnum = null
resolution: VideoResolution = null resolution: VideoResolution = null
framesPerSecond: Float = null framesPerSecond: Float = null
} }