Compare commits

...

14 Commits

Author SHA1 Message Date
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
dcdb324391 Add explicit optional scalars to KeyBallIdentifiers 2024-09-21 13:07:20 -06:00
90685cfdbf Make startDatetime and endDatetime optional 2024-09-20 22:29:18 -06:00
ab61894373 Fix multiline comment 2024-09-20 20:34:37 -07:00
662e0ade64 Merge pull request 'Add calendar aligned months' (#59) from mk/calendar-months into master
Reviewed-on: #59
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-09-20 21:15:46 -06:00
75aa847ae1 Add calendar aligned months
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2024-09-20 20:14:57 -07:00
c013228f79 Make range filters generic 2024-09-20 13:25:36 -06:00
740daf95ae Merge pull request 'Add Pocketing Intention Info' (#58) from mk/pocketing-intention-info into master
Reviewed-on: #58
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-09-19 23:19:36 -06:00
768d29f93e Pocketing Intention Info Schema Changes
All checks were successful
Tests / Tests (pull_request) Successful in 7s
2024-09-19 22:59:36 -06:00
837e084a5a Add miss angle in degrees 2024-09-19 22:03:59 -06:00
7 changed files with 367 additions and 87 deletions

View File

@@ -13,7 +13,7 @@ _sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\nshot.proto\x12\x0fserialized_shot\"?\n\x03\x42ox\x12\x0c\n\x04left\x18\x01 \x01(\x02\x12\x0b\n\x03top\x18\x02 \x01(\x02\x12\r\n\x05width\x18\x03 \x01(\x02\x12\x0e\n\x06height\x18\x04 \x01(\x02\"\x1d\n\x05Point\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\"\x7f\n\rBallDetection\x12.\n\x0eplane_position\x18\x01 \x01(\x0b\x32\x16.serialized_shot.Point\x12(\n\nannotation\x18\x02 \x01(\x0b\x32\x14.serialized_shot.Box\x12\x14\n\x0cinterpolated\x18\x03 \x01(\x08\"T\n\x10RLEBallDetection\x12\x31\n\tdetection\x18\x01 \x01(\x0b\x32\x1e.serialized_shot.BallDetection\x12\r\n\x05\x63ount\x18\x02 \x01(\r\"L\n\x13RLEDetectionHistory\x12\x35\n\ndetections\x18\x01 \x03(\x0b\x32!.serialized_shot.RLEBallDetection\"F\n\x10\x44\x65tectionHistory\x12\x32\n\ndetections\x18\x01 \x03(\x0b\x32\x1e.serialized_shot.BallDetection\"\xfc\x01\n\rCollisionInfo\x12\x0e\n\x06source\x18\x01 \x01(\r\x12M\n\x10\x62\x61ll_identifiers\x18\x02 \x03(\x0b\x32\x33.serialized_shot.CollisionInfo.BallIdentifiersEntry\x12\x17\n\x0fwall_identifier\x18\x03 \x01(\r\x12\x13\n\x0b\x66rame_index\x18\x04 \x01(\r\x12\x0e\n\x06static\x18\x05 \x01(\x08\x1aN\n\x14\x42\x61llIdentifiersEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.serialized_shot.Point:\x02\x38\x01\"\xcc\x02\n\x04Path\x12\x13\n\x0bstart_frame\x18\x01 \x01(\r\x12\x11\n\tend_frame\x18\x02 \x01(\r\x12\x37\n\ndetections\x18\x03 \x01(\x0b\x32!.serialized_shot.DetectionHistoryH\x00\x12>\n\x0erle_detections\x18\x04 \x01(\x0b\x32$.serialized_shot.RLEDetectionHistoryH\x00\x12\x15\n\x0bnot_present\x18\x05 \x01(\x08H\x00\x12\x11\n\tis_static\x18\x06 \x01(\x08\x12\x32\n\nstart_info\x18\x07 \x01(\x0b\x32\x1e.serialized_shot.CollisionInfo\x12\x30\n\x08\x65nd_info\x18\x08 \x01(\x0b\x32\x1e.serialized_shot.CollisionInfoB\x13\n\x11\x64\x65tection_history\"R\n\x11IdentifierHistory\x12\x17\n\x0f\x62\x61ll_identifier\x18\x01 \x01(\r\x12$\n\x05paths\x18\x02 \x03(\x0b\x32\x15.serialized_shot.Path\"j\n\x12KeyBallIdentifiers\x12\x10\n\x08\x63ue_ball\x18\x01 \x01(\r\x12\x13\n\x0bobject_ball\x18\x02 \x01(\r\x12\x13\n\x0btarget_ball\x18\x03 \x01(\r\x12\x18\n\x10\x63ontact_sequence\x18\x04 \x03(\r\"\xa8\x01\n\x04Shot\x12@\n\x14identifier_histories\x18\x03 \x03(\x0b\x32\".serialized_shot.IdentifierHistory\x12\x36\n\tkey_balls\x18\x04 \x01(\x0b\x32#.serialized_shot.KeyBallIdentifiers\x12\x13\n\x0bstart_index\x18\x05 \x01(\r\x12\x11\n\tend_index\x18\x06 \x01(\rb\x06proto3') DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\nshot.proto\x12\x0fserialized_shot\"?\n\x03\x42ox\x12\x0c\n\x04left\x18\x01 \x01(\x02\x12\x0b\n\x03top\x18\x02 \x01(\x02\x12\r\n\x05width\x18\x03 \x01(\x02\x12\x0e\n\x06height\x18\x04 \x01(\x02\"\x1d\n\x05Point\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\"\x7f\n\rBallDetection\x12.\n\x0eplane_position\x18\x01 \x01(\x0b\x32\x16.serialized_shot.Point\x12(\n\nannotation\x18\x02 \x01(\x0b\x32\x14.serialized_shot.Box\x12\x14\n\x0cinterpolated\x18\x03 \x01(\x08\"T\n\x10RLEBallDetection\x12\x31\n\tdetection\x18\x01 \x01(\x0b\x32\x1e.serialized_shot.BallDetection\x12\r\n\x05\x63ount\x18\x02 \x01(\r\"L\n\x13RLEDetectionHistory\x12\x35\n\ndetections\x18\x01 \x03(\x0b\x32!.serialized_shot.RLEBallDetection\"F\n\x10\x44\x65tectionHistory\x12\x32\n\ndetections\x18\x01 \x03(\x0b\x32\x1e.serialized_shot.BallDetection\"\xfc\x01\n\rCollisionInfo\x12\x0e\n\x06source\x18\x01 \x01(\r\x12M\n\x10\x62\x61ll_identifiers\x18\x02 \x03(\x0b\x32\x33.serialized_shot.CollisionInfo.BallIdentifiersEntry\x12\x17\n\x0fwall_identifier\x18\x03 \x01(\r\x12\x13\n\x0b\x66rame_index\x18\x04 \x01(\r\x12\x0e\n\x06static\x18\x05 \x01(\x08\x1aN\n\x14\x42\x61llIdentifiersEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.serialized_shot.Point:\x02\x38\x01\"\xcc\x02\n\x04Path\x12\x13\n\x0bstart_frame\x18\x01 \x01(\r\x12\x11\n\tend_frame\x18\x02 \x01(\r\x12\x37\n\ndetections\x18\x03 \x01(\x0b\x32!.serialized_shot.DetectionHistoryH\x00\x12>\n\x0erle_detections\x18\x04 \x01(\x0b\x32$.serialized_shot.RLEDetectionHistoryH\x00\x12\x15\n\x0bnot_present\x18\x05 \x01(\x08H\x00\x12\x11\n\tis_static\x18\x06 \x01(\x08\x12\x32\n\nstart_info\x18\x07 \x01(\x0b\x32\x1e.serialized_shot.CollisionInfo\x12\x30\n\x08\x65nd_info\x18\x08 \x01(\x0b\x32\x1e.serialized_shot.CollisionInfoB\x13\n\x11\x64\x65tection_history\"R\n\x11IdentifierHistory\x12\x17\n\x0f\x62\x61ll_identifier\x18\x01 \x01(\r\x12$\n\x05paths\x18\x02 \x03(\x0b\x32\x15.serialized_shot.Path\"\xf4\x01\n\x12KeyBallIdentifiers\x12\x10\n\x08\x63ue_ball\x18\x01 \x01(\r\x12\x13\n\x0bobject_ball\x18\x02 \x01(\r\x12\x13\n\x0btarget_ball\x18\x03 \x01(\r\x12\x18\n\x10\x63ontact_sequence\x18\x04 \x03(\r\x12\x18\n\x0b\x63ue_ball_id\x18\x05 \x01(\rH\x00\x88\x01\x01\x12\x1b\n\x0eobject_ball_id\x18\x06 \x01(\rH\x01\x88\x01\x01\x12\x1b\n\x0etarget_ball_id\x18\x07 \x01(\rH\x02\x88\x01\x01\x42\x0e\n\x0c_cue_ball_idB\x11\n\x0f_object_ball_idB\x11\n\x0f_target_ball_id\"\xa8\x01\n\x04Shot\x12@\n\x14identifier_histories\x18\x03 \x03(\x0b\x32\".serialized_shot.IdentifierHistory\x12\x36\n\tkey_balls\x18\x04 \x01(\x0b\x32#.serialized_shot.KeyBallIdentifiers\x12\x13\n\x0bstart_index\x18\x05 \x01(\r\x12\x11\n\tend_index\x18\x06 \x01(\rb\x06proto3')
_globals = globals() _globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -42,8 +42,8 @@ if _descriptor._USE_C_DESCRIPTORS == False:
_globals['_PATH']._serialized_end=1080 _globals['_PATH']._serialized_end=1080
_globals['_IDENTIFIERHISTORY']._serialized_start=1082 _globals['_IDENTIFIERHISTORY']._serialized_start=1082
_globals['_IDENTIFIERHISTORY']._serialized_end=1164 _globals['_IDENTIFIERHISTORY']._serialized_end=1164
_globals['_KEYBALLIDENTIFIERS']._serialized_start=1166 _globals['_KEYBALLIDENTIFIERS']._serialized_start=1167
_globals['_KEYBALLIDENTIFIERS']._serialized_end=1272 _globals['_KEYBALLIDENTIFIERS']._serialized_end=1411
_globals['_SHOT']._serialized_start=1275 _globals['_SHOT']._serialized_start=1414
_globals['_SHOT']._serialized_end=1443 _globals['_SHOT']._serialized_end=1582
# @@protoc_insertion_point(module_scope) # @@protoc_insertion_point(module_scope)

View File

@@ -105,16 +105,22 @@ class IdentifierHistory(_message.Message):
def __init__(self, ball_identifier: _Optional[int] = ..., paths: _Optional[_Iterable[_Union[Path, _Mapping]]] = ...) -> None: ... def __init__(self, ball_identifier: _Optional[int] = ..., paths: _Optional[_Iterable[_Union[Path, _Mapping]]] = ...) -> None: ...
class KeyBallIdentifiers(_message.Message): class KeyBallIdentifiers(_message.Message):
__slots__ = ["cue_ball", "object_ball", "target_ball", "contact_sequence"] __slots__ = ["cue_ball", "object_ball", "target_ball", "contact_sequence", "cue_ball_id", "object_ball_id", "target_ball_id"]
CUE_BALL_FIELD_NUMBER: _ClassVar[int] CUE_BALL_FIELD_NUMBER: _ClassVar[int]
OBJECT_BALL_FIELD_NUMBER: _ClassVar[int] OBJECT_BALL_FIELD_NUMBER: _ClassVar[int]
TARGET_BALL_FIELD_NUMBER: _ClassVar[int] TARGET_BALL_FIELD_NUMBER: _ClassVar[int]
CONTACT_SEQUENCE_FIELD_NUMBER: _ClassVar[int] CONTACT_SEQUENCE_FIELD_NUMBER: _ClassVar[int]
CUE_BALL_ID_FIELD_NUMBER: _ClassVar[int]
OBJECT_BALL_ID_FIELD_NUMBER: _ClassVar[int]
TARGET_BALL_ID_FIELD_NUMBER: _ClassVar[int]
cue_ball: int cue_ball: int
object_ball: int object_ball: int
target_ball: int target_ball: int
contact_sequence: _containers.RepeatedScalarFieldContainer[int] contact_sequence: _containers.RepeatedScalarFieldContainer[int]
def __init__(self, cue_ball: _Optional[int] = ..., object_ball: _Optional[int] = ..., target_ball: _Optional[int] = ..., contact_sequence: _Optional[_Iterable[int]] = ...) -> None: ... cue_ball_id: int
object_ball_id: int
target_ball_id: int
def __init__(self, cue_ball: _Optional[int] = ..., object_ball: _Optional[int] = ..., target_ball: _Optional[int] = ..., contact_sequence: _Optional[_Iterable[int]] = ..., cue_ball_id: _Optional[int] = ..., object_ball_id: _Optional[int] = ..., target_ball_id: _Optional[int] = ...) -> None: ...
class Shot(_message.Message): class Shot(_message.Message):
__slots__ = ["identifier_histories", "key_balls", "start_index", "end_index"] __slots__ = ["identifier_histories", "key_balls", "start_index", "end_index"]

View File

@@ -63,6 +63,10 @@ message KeyBallIdentifiers {
// Long term this will potentially represent a linked list // Long term this will potentially represent a linked list
// of all balls in a shot. // of all balls in a shot.
repeated uint32 contact_sequence = 4; repeated uint32 contact_sequence = 4;
optional uint32 cue_ball_id = 5;
optional uint32 object_ball_id = 6;
optional uint32 target_ball_id = 7;
} }
message Shot { message Shot {

View File

@@ -820,6 +820,9 @@ export interface KeyBallIdentifiers {
object_ball?: number; object_ball?: number;
target_ball?: number; target_ball?: number;
contact_sequence?: number[]; contact_sequence?: number[];
cue_ball_id?: number;
object_ball_id?: number;
target_ball_id?: number;
} }
export function encodeKeyBallIdentifiers( export function encodeKeyBallIdentifiers(
@@ -867,6 +870,27 @@ function _encodeKeyBallIdentifiers(
writeByteBuffer(bb, packed); writeByteBuffer(bb, packed);
pushByteBuffer(packed); pushByteBuffer(packed);
} }
// optional uint32 cue_ball_id = 5;
let $cue_ball_id = message.cue_ball_id;
if ($cue_ball_id !== undefined) {
writeVarint32(bb, 40);
writeVarint32(bb, $cue_ball_id);
}
// optional uint32 object_ball_id = 6;
let $object_ball_id = message.object_ball_id;
if ($object_ball_id !== undefined) {
writeVarint32(bb, 48);
writeVarint32(bb, $object_ball_id);
}
// optional uint32 target_ball_id = 7;
let $target_ball_id = message.target_ball_id;
if ($target_ball_id !== undefined) {
writeVarint32(bb, 56);
writeVarint32(bb, $target_ball_id);
}
} }
export function decodeKeyBallIdentifiers( export function decodeKeyBallIdentifiers(
@@ -919,6 +943,24 @@ function _decodeKeyBallIdentifiers(bb: ByteBuffer): KeyBallIdentifiers {
break; break;
} }
// optional uint32 cue_ball_id = 5;
case 5: {
message.cue_ball_id = readVarint32(bb) >>> 0;
break;
}
// optional uint32 object_ball_id = 6;
case 6: {
message.object_ball_id = readVarint32(bb) >>> 0;
break;
}
// optional uint32 target_ball_id = 7;
case 7: {
message.target_ball_id = readVarint32(bb) >>> 0;
break;
}
default: default:
skipUnknownField(bb, tag & 7); skipUnknownField(bb, tag & 7);
} }

View File

@@ -28,6 +28,8 @@ export type Scalars = {
Boolean: { input: boolean; output: boolean }; Boolean: { input: boolean; output: boolean };
Int: { input: number; output: number }; Int: { input: number; output: number };
Float: { input: number; output: number }; Float: { input: number; output: number };
/** Date (isoformat) */
Date: { input: any; output: any };
/** Date with time (isoformat) */ /** Date with time (isoformat) */
DateTime: { input: any; output: any }; DateTime: { input: any; output: any };
/** The `JSON` scalar type represents JSON values as specified by [ECMA-404](https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf). */ /** The `JSON` scalar type represents JSON values as specified by [ECMA-404](https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf). */
@@ -70,6 +72,12 @@ export type AggregationInput =
} }
| { bucketSet?: never; datetimeRange?: never; enum: EnumAggregation }; | { bucketSet?: never; datetimeRange?: never; enum: EnumAggregation };
export enum AlignedIntervalEnum {
Month = "MONTH",
Week = "WEEK",
Year = "YEAR",
}
export type BankFeaturesGql = { export type BankFeaturesGql = {
__typename?: "BankFeaturesGQL"; __typename?: "BankFeaturesGQL";
bankAngle: Scalars["Float"]["output"]; bankAngle: Scalars["Float"]["output"];
@@ -132,10 +140,20 @@ export type CueObjectFeaturesGql = {
spinType?: Maybe<SpinTypeEnum>; spinType?: Maybe<SpinTypeEnum>;
}; };
export type DateRangeFilter = {
greaterThan?: InputMaybe<Scalars["Date"]["input"]>;
greaterThanEqualTo?: InputMaybe<Scalars["Date"]["input"]>;
greaterThanInclusive?: Scalars["Boolean"]["input"];
includeOnNone?: Scalars["Boolean"]["input"];
lessThan?: InputMaybe<Scalars["Date"]["input"]>;
lessThanInclusive?: Scalars["Boolean"]["input"];
};
export type DatetimeRangeAggregationInput = { export type DatetimeRangeAggregationInput = {
endDatetime: Scalars["DateTime"]["input"]; endDatetime?: InputMaybe<Scalars["DateTime"]["input"]>;
feature?: Scalars["String"]["input"];
interval: TimeInterval; interval: TimeInterval;
startDatetime: Scalars["DateTime"]["input"]; startDatetime?: InputMaybe<Scalars["DateTime"]["input"]>;
}; };
export type DeployedConfigGql = { export type DeployedConfigGql = {
@@ -174,6 +192,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -191,6 +210,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -209,6 +229,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -226,6 +247,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -244,6 +266,7 @@ export type FilterInput =
backcut: Array<Scalars["Boolean"]["input"]>; backcut: Array<Scalars["Boolean"]["input"]>;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -261,6 +284,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -277,8 +301,9 @@ export type FilterInput =
andFilters?: never; andFilters?: never;
annotations?: never; annotations?: never;
backcut?: never; backcut?: never;
bankAngle: RangeFilter; bankAngle: FloatRangeFilter;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -296,6 +321,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -313,7 +339,8 @@ export type FilterInput =
annotations?: never; annotations?: never;
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance: RangeFilter; bankDistance: FloatRangeFilter;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -331,6 +358,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -349,7 +377,8 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
cueAngleAfterObject: RangeFilter; createdAt: DateRangeFilter;
cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
cueObjectDistance?: never; cueObjectDistance?: never;
@@ -366,6 +395,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -384,8 +414,9 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
cueAngleAfterObject?: never; createdAt?: never;
cueBallSpeed: RangeFilter; cueAngleAfterObject: FloatRangeFilter;
cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
cueObjectDistance?: never; cueObjectDistance?: never;
cueSpeedAfterObject?: never; cueSpeedAfterObject?: never;
@@ -401,6 +432,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -419,9 +451,10 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed: FloatRangeFilter;
cueObjectAngle: RangeFilter; cueObjectAngle?: never;
cueObjectDistance?: never; cueObjectDistance?: never;
cueSpeedAfterObject?: never; cueSpeedAfterObject?: never;
difficulty?: never; difficulty?: never;
@@ -436,6 +469,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -454,10 +488,11 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle: FloatRangeFilter;
cueObjectDistance: RangeFilter; cueObjectDistance?: never;
cueSpeedAfterObject?: never; cueSpeedAfterObject?: never;
difficulty?: never; difficulty?: never;
falsePositiveScore?: never; falsePositiveScore?: never;
@@ -471,6 +506,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -489,11 +525,12 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
cueObjectDistance?: never; cueObjectDistance: FloatRangeFilter;
cueSpeedAfterObject: RangeFilter; cueSpeedAfterObject?: never;
difficulty?: never; difficulty?: never;
falsePositiveScore?: never; falsePositiveScore?: never;
intendedPocketType?: never; intendedPocketType?: never;
@@ -506,6 +543,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -524,12 +562,13 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
cueObjectDistance?: never; cueObjectDistance?: never;
cueSpeedAfterObject?: never; cueSpeedAfterObject: FloatRangeFilter;
difficulty: RangeFilter; difficulty?: never;
falsePositiveScore?: never; falsePositiveScore?: never;
intendedPocketType?: never; intendedPocketType?: never;
isDirect?: never; isDirect?: never;
@@ -541,6 +580,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -559,13 +599,14 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
cueObjectDistance?: never; cueObjectDistance?: never;
cueSpeedAfterObject?: never; cueSpeedAfterObject?: never;
difficulty?: never; difficulty: FloatRangeFilter;
falsePositiveScore: RangeFilter; falsePositiveScore?: never;
intendedPocketType?: never; intendedPocketType?: never;
isDirect?: never; isDirect?: never;
isLeft?: never; isLeft?: never;
@@ -576,6 +617,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -594,6 +636,44 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never;
cueBallSpeed?: never;
cueObjectAngle?: never;
cueObjectDistance?: never;
cueSpeedAfterObject?: never;
difficulty?: never;
falsePositiveScore: FloatRangeFilter;
intendedPocketType?: never;
isDirect?: never;
isLeft?: never;
isLeftMiss?: never;
isRight?: never;
isRightMiss?: never;
isStraight?: never;
kickAngle?: never;
kickDistance?: never;
make?: never;
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
shotDirection?: never;
spinType?: never;
tableSize?: never;
tags?: never;
targetPocketAngle?: never;
targetPocketAngleDirection?: never;
targetPocketDistance?: never;
userId?: never;
videoId?: never;
}
| {
andFilters?: never;
annotations?: never;
backcut?: never;
bankAngle?: never;
bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -611,6 +691,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -629,6 +710,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -646,6 +728,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -664,6 +747,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -681,6 +765,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -699,6 +784,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -716,6 +802,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -734,6 +821,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -751,6 +839,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -769,6 +858,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -786,6 +876,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -804,6 +895,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -821,6 +913,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -839,6 +932,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -853,9 +947,10 @@ export type FilterInput =
isRight?: never; isRight?: never;
isRightMiss?: never; isRightMiss?: never;
isStraight?: never; isStraight?: never;
kickAngle: RangeFilter; kickAngle: FloatRangeFilter;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -874,6 +969,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -889,8 +985,9 @@ export type FilterInput =
isRightMiss?: never; isRightMiss?: never;
isStraight?: never; isStraight?: never;
kickAngle?: never; kickAngle?: never;
kickDistance: RangeFilter; kickDistance: FloatRangeFilter;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -909,6 +1006,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -926,6 +1024,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make: Array<Scalars["Boolean"]["input"]>; make: Array<Scalars["Boolean"]["input"]>;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -944,6 +1043,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -961,6 +1061,44 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees: FloatRangeFilter;
notFilter?: never;
orFilters?: never;
shotDirection?: never;
spinType?: never;
tableSize?: never;
tags?: never;
targetPocketAngle?: never;
targetPocketAngleDirection?: never;
targetPocketDistance?: never;
userId?: never;
videoId?: never;
}
| {
andFilters?: never;
annotations?: never;
backcut?: never;
bankAngle?: never;
bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never;
cueBallSpeed?: never;
cueObjectAngle?: never;
cueObjectDistance?: never;
cueSpeedAfterObject?: never;
difficulty?: never;
falsePositiveScore?: never;
intendedPocketType?: never;
isDirect?: never;
isLeft?: never;
isLeftMiss?: never;
isRight?: never;
isRightMiss?: never;
isStraight?: never;
kickAngle?: never;
kickDistance?: never;
make?: never;
missAngleInDegrees?: never;
notFilter: FilterInput; notFilter: FilterInput;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -979,6 +1117,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -996,6 +1135,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters: Array<FilterInput>; orFilters: Array<FilterInput>;
shotDirection?: never; shotDirection?: never;
@@ -1014,6 +1154,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -1031,6 +1172,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection: Array<ShotDirectionEnum>; shotDirection: Array<ShotDirectionEnum>;
@@ -1049,6 +1191,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -1066,6 +1209,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -1084,6 +1228,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -1101,11 +1246,12 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
tableSize: RangeFilter; tableSize: FloatRangeFilter;
tags?: never; tags?: never;
targetPocketAngle?: never; targetPocketAngle?: never;
targetPocketAngleDirection?: never; targetPocketAngleDirection?: never;
@@ -1119,6 +1265,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -1136,6 +1283,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -1154,6 +1302,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -1171,13 +1320,14 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
tableSize?: never; tableSize?: never;
tags?: never; tags?: never;
targetPocketAngle: RangeFilter; targetPocketAngle: FloatRangeFilter;
targetPocketAngleDirection?: never; targetPocketAngleDirection?: never;
targetPocketDistance?: never; targetPocketDistance?: never;
userId?: never; userId?: never;
@@ -1189,6 +1339,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -1206,6 +1357,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -1224,6 +1376,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -1241,6 +1394,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -1249,7 +1403,7 @@ export type FilterInput =
tags?: never; tags?: never;
targetPocketAngle?: never; targetPocketAngle?: never;
targetPocketAngleDirection?: never; targetPocketAngleDirection?: never;
targetPocketDistance: RangeFilter; targetPocketDistance: FloatRangeFilter;
userId?: never; userId?: never;
videoId?: never; videoId?: never;
} }
@@ -1259,6 +1413,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -1276,6 +1431,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -1294,6 +1450,7 @@ export type FilterInput =
backcut?: never; backcut?: never;
bankAngle?: never; bankAngle?: never;
bankDistance?: never; bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never; cueAngleAfterObject?: never;
cueBallSpeed?: never; cueBallSpeed?: never;
cueObjectAngle?: never; cueObjectAngle?: never;
@@ -1311,6 +1468,7 @@ export type FilterInput =
kickAngle?: never; kickAngle?: never;
kickDistance?: never; kickDistance?: never;
make?: never; make?: never;
missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
shotDirection?: never; shotDirection?: never;
@@ -1324,6 +1482,15 @@ export type FilterInput =
videoId: Array<Scalars["Int"]["input"]>; videoId: Array<Scalars["Int"]["input"]>;
}; };
export type FloatRangeFilter = {
greaterThan?: InputMaybe<Scalars["Float"]["input"]>;
greaterThanEqualTo?: InputMaybe<Scalars["Float"]["input"]>;
greaterThanInclusive?: Scalars["Boolean"]["input"];
includeOnNone?: Scalars["Boolean"]["input"];
lessThan?: InputMaybe<Scalars["Float"]["input"]>;
lessThanInclusive?: Scalars["Boolean"]["input"];
};
export type GetProfileUploadLinkErrors = { export type GetProfileUploadLinkErrors = {
__typename?: "GetProfileUploadLinkErrors"; __typename?: "GetProfileUploadLinkErrors";
error: TooManyProfileImageUploadsErr; error: TooManyProfileImageUploadsErr;
@@ -1342,6 +1509,7 @@ export type GetShotsPagination = {
export type GetShotsResult = { export type GetShotsResult = {
__typename?: "GetShotsResult"; __typename?: "GetShotsResult";
count?: Maybe<Scalars["Int"]["output"]>; count?: Maybe<Scalars["Int"]["output"]>;
ids: Array<Scalars["Int"]["output"]>;
shots: Array<ShotGql>; shots: Array<ShotGql>;
}; };
@@ -1504,6 +1672,15 @@ export enum PocketEnum {
Side = "SIDE", Side = "SIDE",
} }
export enum PocketIdentifier {
BottomLeft = "BOTTOM_LEFT",
BottomRight = "BOTTOM_RIGHT",
BottomSide = "BOTTOM_SIDE",
TopLeft = "TOP_LEFT",
TopRight = "TOP_RIGHT",
TopSide = "TOP_SIDE",
}
export type PocketPointsGql = { export type PocketPointsGql = {
__typename?: "PocketPointsGQL"; __typename?: "PocketPointsGQL";
bottomLeft: IntPoint2D; bottomLeft: IntPoint2D;
@@ -1525,6 +1702,13 @@ export type PocketingIntentionFeaturesGql = {
targetPocketDistance?: Maybe<Scalars["Float"]["output"]>; targetPocketDistance?: Maybe<Scalars["Float"]["output"]>;
}; };
export type PocketingIntentionInfoGql = {
__typename?: "PocketingIntentionInfoGQL";
ballId: Scalars["Int"]["output"];
pathMetadataIndex: Scalars["Int"]["output"];
pocketId: PocketIdentifier;
};
export type ProcessingFailedErr = { export type ProcessingFailedErr = {
__typename?: "ProcessingFailedErr"; __typename?: "ProcessingFailedErr";
processing: VideoProcessingGql; processing: VideoProcessingGql;
@@ -1550,6 +1734,7 @@ export type Query = {
getPlayTime: UserPlayTimeGql; getPlayTime: UserPlayTimeGql;
getShotAnnotationTypes: Array<ShotAnnotationTypeGql>; getShotAnnotationTypes: Array<ShotAnnotationTypeGql>;
getShots: Array<ShotGql>; getShots: Array<ShotGql>;
getShotsByIds: Array<ShotGql>;
getShotsWithMetadata: GetShotsResult; getShotsWithMetadata: GetShotsResult;
getUser?: Maybe<UserGql>; getUser?: Maybe<UserGql>;
getUserTags: Array<TagGql>; getUserTags: Array<TagGql>;
@@ -1583,6 +1768,10 @@ export type QueryGetShotsArgs = {
shotsPagination?: InputMaybe<GetShotsPagination>; shotsPagination?: InputMaybe<GetShotsPagination>;
}; };
export type QueryGetShotsByIdsArgs = {
ids: Array<Scalars["Int"]["input"]>;
};
export type QueryGetShotsWithMetadataArgs = { export type QueryGetShotsWithMetadataArgs = {
filterInput: FilterInput; filterInput: FilterInput;
limit?: Scalars["Int"]["input"]; limit?: Scalars["Int"]["input"];
@@ -1624,15 +1813,6 @@ export type QueryWaitForArgs = {
duration: Scalars["Float"]["input"]; duration: Scalars["Float"]["input"];
}; };
export type RangeFilter = {
greaterThan?: InputMaybe<Scalars["Float"]["input"]>;
greaterThanEqualTo?: InputMaybe<Scalars["Float"]["input"]>;
greaterThanInclusive?: Scalars["Boolean"]["input"];
includeOnNone?: Scalars["Boolean"]["input"];
lessThan?: InputMaybe<Scalars["Float"]["input"]>;
lessThanInclusive?: Scalars["Boolean"]["input"];
};
export type SegmentAlreadyUploadedErr = { export type SegmentAlreadyUploadedErr = {
__typename?: "SegmentAlreadyUploadedErr"; __typename?: "SegmentAlreadyUploadedErr";
segmentId: Scalars["Int"]["output"]; segmentId: Scalars["Int"]["output"];
@@ -1687,6 +1867,7 @@ export type ShotGql = {
falsePositiveScore?: Maybe<Scalars["Float"]["output"]>; falsePositiveScore?: Maybe<Scalars["Float"]["output"]>;
id: Scalars["Int"]["output"]; id: Scalars["Int"]["output"];
pocketingIntentionFeatures?: Maybe<PocketingIntentionFeaturesGql>; pocketingIntentionFeatures?: Maybe<PocketingIntentionFeaturesGql>;
pocketingIntentionInfo?: Maybe<PocketingIntentionInfoGql>;
serializedShotPaths?: Maybe<SerializedShotPathsGql>; serializedShotPaths?: Maybe<SerializedShotPathsGql>;
startFrame: Scalars["Int"]["output"]; startFrame: Scalars["Int"]["output"];
updatedAt?: Maybe<Scalars["DateTime"]["output"]>; updatedAt?: Maybe<Scalars["DateTime"]["output"]>;
@@ -1745,19 +1926,17 @@ export type TargetMetricsGql = {
spinTypeCounts?: Maybe<SpinTypeCountsGql>; spinTypeCounts?: Maybe<SpinTypeCountsGql>;
}; };
export type TimeInterval = { export type TimeDeltaGql = {
days?: InputMaybe<Scalars["Int"]["input"]>; days?: InputMaybe<Scalars["Int"]["input"]>;
hours?: InputMaybe<Scalars["Int"]["input"]>;
minutes?: InputMaybe<Scalars["Int"]["input"]>;
/** Assumes a month is 30 days long */
months?: 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"]>; weeks?: InputMaybe<Scalars["Int"]["input"]>;
/** Assumes a year is 365 days long */
years?: InputMaybe<Scalars["Int"]["input"]>; years?: InputMaybe<Scalars["Int"]["input"]>;
}; };
export type TimeInterval =
| { aligned: AlignedIntervalEnum; timedelta?: never }
| { aligned?: never; timedelta: TimeDeltaGql };
export type TooManyInitUploadsErr = { export type TooManyInitUploadsErr = {
__typename?: "TooManyInitUploadsErr"; __typename?: "TooManyInitUploadsErr";
linksRequested: Scalars["Int"]["output"]; linksRequested: Scalars["Int"]["output"];
@@ -2173,10 +2352,6 @@ export type GetShotsWithMetadataQuery = {
}; };
} | null; } | null;
} | null; } | null;
serializedShotPaths?: {
__typename?: "SerializedShotPathsGQL";
b64EncodedBuffer?: string | null;
} | null;
cueObjectFeatures?: { cueObjectFeatures?: {
__typename?: "CueObjectFeaturesGQL"; __typename?: "CueObjectFeaturesGQL";
cueObjectDistance?: number | null; cueObjectDistance?: number | null;
@@ -2191,6 +2366,16 @@ export type GetShotsWithMetadataQuery = {
make?: boolean | null; make?: boolean | null;
intendedPocketType?: PocketEnum | null; intendedPocketType?: PocketEnum | null;
} | null; } | null;
pocketingIntentionInfo?: {
__typename?: "PocketingIntentionInfoGQL";
ballId: number;
pocketId: PocketIdentifier;
pathMetadataIndex: number;
} | null;
serializedShotPaths?: {
__typename?: "SerializedShotPathsGQL";
b64EncodedBuffer?: string | null;
} | null;
}>; }>;
}; };
}; };
@@ -3402,9 +3587,6 @@ export const GetShotsWithMetadataDocument = gql`
} }
} }
} }
serializedShotPaths {
b64EncodedBuffer
}
createdAt @include(if: $includeCreatedAt) createdAt @include(if: $includeCreatedAt)
updatedAt @include(if: $includeUpdatedAt) updatedAt @include(if: $includeUpdatedAt)
cueObjectFeatures @include(if: $includeCueObjectFeatures) { cueObjectFeatures @include(if: $includeCueObjectFeatures) {
@@ -3420,6 +3602,15 @@ export const GetShotsWithMetadataDocument = gql`
make @include(if: $includeMake) make @include(if: $includeMake)
intendedPocketType @include(if: $includeIntendedPocketType) intendedPocketType @include(if: $includeIntendedPocketType)
} }
pocketingIntentionInfo
@include(if: $includePocketingIntentionFeatures) {
ballId
pocketId
pathMetadataIndex
}
serializedShotPaths @include(if: $includePocketingIntentionFeatures) {
b64EncodedBuffer
}
} }
} }
} }

View File

@@ -113,9 +113,6 @@ query GetShotsWithMetadata(
} }
} }
} }
serializedShotPaths {
b64EncodedBuffer
}
createdAt @include(if: $includeCreatedAt) createdAt @include(if: $includeCreatedAt)
updatedAt @include(if: $includeUpdatedAt) updatedAt @include(if: $includeUpdatedAt)
cueObjectFeatures @include(if: $includeCueObjectFeatures) { cueObjectFeatures @include(if: $includeCueObjectFeatures) {
@@ -131,6 +128,14 @@ query GetShotsWithMetadata(
make @include(if: $includeMake) make @include(if: $includeMake)
intendedPocketType @include(if: $includeIntendedPocketType) intendedPocketType @include(if: $includeIntendedPocketType)
} }
pocketingIntentionInfo @include(if: $includePocketingIntentionFeatures) {
ballId
pocketId
pathMetadataIndex
}
serializedShotPaths @include(if: $includePocketingIntentionFeatures) {
b64EncodedBuffer
}
} }
} }
} }

View File

@@ -19,6 +19,7 @@ type Query {
shotsPagination: GetShotsPagination = null shotsPagination: GetShotsPagination = null
limit: Int! = 500 limit: Int! = 500
): [ShotGQL!]! ): [ShotGQL!]!
getShotsByIds(ids: [Int!]!): [ShotGQL!]!
getShotAnnotationTypes(errorTypes: Boolean = false): [ShotAnnotationTypeGQL!]! getShotAnnotationTypes(errorTypes: Boolean = false): [ShotAnnotationTypeGQL!]!
getUser(userId: Int!): UserGQL getUser(userId: Int!): UserGQL
getLoggedInUser: UserGQL getLoggedInUser: UserGQL
@@ -96,9 +97,10 @@ input EnumAggregation {
} }
input DatetimeRangeAggregationInput { input DatetimeRangeAggregationInput {
startDatetime: DateTime! startDatetime: DateTime = null
endDatetime: DateTime! endDatetime: DateTime = null
interval: TimeInterval! interval: TimeInterval!
feature: String! = "created_at"
} }
""" """
@@ -106,36 +108,33 @@ Date with time (isoformat)
""" """
scalar DateTime scalar DateTime
input TimeInterval { input TimeInterval @oneOf {
""" timedelta: TimeDeltaGQL
A second is the base unit and cannot be subdivided aligned: AlignedIntervalEnum
""" }
seconds: Int = 0
minutes: Int = 0 input TimeDeltaGQL {
hours: Int = 0
days: Int = 0 days: Int = 0
weeks: Int = 0 weeks: Int = 0
"""
Assumes a month is 30 days long
"""
months: Int = 0 months: Int = 0
"""
Assumes a year is 365 days long
"""
years: Int = 0 years: Int = 0
} }
enum AlignedIntervalEnum {
MONTH
YEAR
WEEK
}
input FilterInput @oneOf { input FilterInput @oneOf {
andFilters: [FilterInput!] andFilters: [FilterInput!]
orFilters: [FilterInput!] orFilters: [FilterInput!]
notFilter: FilterInput notFilter: FilterInput
cueObjectDistance: RangeFilter cueObjectDistance: FloatRangeFilter
targetPocketDistance: RangeFilter targetPocketDistance: FloatRangeFilter
cueObjectAngle: RangeFilter cueObjectAngle: FloatRangeFilter
cueBallSpeed: RangeFilter cueBallSpeed: FloatRangeFilter
difficulty: RangeFilter difficulty: FloatRangeFilter
intendedPocketType: [PocketEnum!] intendedPocketType: [PocketEnum!]
shotDirection: [ShotDirectionEnum!] shotDirection: [ShotDirectionEnum!]
videoId: [Int!] videoId: [Int!]
@@ -149,21 +148,23 @@ input FilterInput @oneOf {
isLeftMiss: [Boolean!] isLeftMiss: [Boolean!]
isRightMiss: [Boolean!] isRightMiss: [Boolean!]
isDirect: [Boolean!] isDirect: [Boolean!]
tableSize: RangeFilter tableSize: FloatRangeFilter
bankAngle: RangeFilter bankAngle: FloatRangeFilter
bankDistance: RangeFilter bankDistance: FloatRangeFilter
kickAngle: RangeFilter kickAngle: FloatRangeFilter
kickDistance: RangeFilter kickDistance: FloatRangeFilter
cueAngleAfterObject: RangeFilter cueAngleAfterObject: FloatRangeFilter
spinType: [SpinTypeEnum!] spinType: [SpinTypeEnum!]
cueSpeedAfterObject: RangeFilter cueSpeedAfterObject: FloatRangeFilter
falsePositiveScore: RangeFilter falsePositiveScore: FloatRangeFilter
backcut: [Boolean!] backcut: [Boolean!]
targetPocketAngleDirection: [ShotDirectionEnum!] targetPocketAngleDirection: [ShotDirectionEnum!]
targetPocketAngle: RangeFilter targetPocketAngle: FloatRangeFilter
missAngleInDegrees: FloatRangeFilter
createdAt: DateRangeFilter
} }
input RangeFilter { input FloatRangeFilter {
lessThan: Float = null lessThan: Float = null
greaterThanEqualTo: Float = null greaterThanEqualTo: Float = null
greaterThan: Float = null greaterThan: Float = null
@@ -203,6 +204,20 @@ enum SpinTypeEnum {
UNKNOWN UNKNOWN
} }
input DateRangeFilter {
lessThan: Date = null
greaterThanEqualTo: Date = null
greaterThan: Date = null
includeOnNone: Boolean! = false
lessThanInclusive: Boolean! = false
greaterThanInclusive: Boolean! = true
}
"""
Date (isoformat)
"""
scalar Date
type BucketSetGQL { type BucketSetGQL {
keyName: String! keyName: String!
feature: String! feature: String!
@@ -230,6 +245,7 @@ type MakePercentageIntervalGQL {
type GetShotsResult { type GetShotsResult {
shots: [ShotGQL!]! shots: [ShotGQL!]!
count: Int count: Int
ids: [Int!]!
} }
type ShotGQL { type ShotGQL {
@@ -241,6 +257,7 @@ type ShotGQL {
updatedAt: DateTime updatedAt: DateTime
cueObjectFeatures: CueObjectFeaturesGQL cueObjectFeatures: CueObjectFeaturesGQL
pocketingIntentionFeatures: PocketingIntentionFeaturesGQL pocketingIntentionFeatures: PocketingIntentionFeaturesGQL
pocketingIntentionInfo: PocketingIntentionInfoGQL
bankFeatures: BankFeaturesGQL bankFeatures: BankFeaturesGQL
serializedShotPaths: SerializedShotPathsGQL serializedShotPaths: SerializedShotPathsGQL
user: UserGQL user: UserGQL
@@ -267,6 +284,21 @@ type PocketingIntentionFeaturesGQL {
backcut: Boolean backcut: Boolean
} }
type PocketingIntentionInfoGQL {
ballId: Int!
pocketId: PocketIdentifier!
pathMetadataIndex: Int!
}
enum PocketIdentifier {
TOP_LEFT
TOP_SIDE
TOP_RIGHT
BOTTOM_LEFT
BOTTOM_SIDE
BOTTOM_RIGHT
}
type BankFeaturesGQL { type BankFeaturesGQL {
wallsHit: [WallTypeEnum!]! wallsHit: [WallTypeEnum!]!
bankAngle: Float! bankAngle: Float!