Compare commits

...

5 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
2 changed files with 156 additions and 46 deletions

View File

@@ -155,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"];
@@ -162,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"];
@@ -1878,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"]>;
@@ -1887,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;
@@ -1902,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>;
}; };
@@ -1964,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"];
@@ -2186,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>;
@@ -2238,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"]>;
}; };
@@ -2305,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>;
@@ -2318,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"];
@@ -2409,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;
@@ -2417,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;
@@ -2425,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;
} }
@@ -2433,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;
} }
| { | {
@@ -2441,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 = {

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 {
@@ -569,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!