Compare commits

..

1 Commits

Author SHA1 Message Date
35a8d71128 Make shots pagination optional 2024-08-16 20:17:10 -06:00
8 changed files with 69 additions and 1071 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -4,6 +4,5 @@ query getDeployedConfig {
devMode
environment
firebase
minimumAllowedAppVersion
}
}

View File

@@ -23,7 +23,6 @@ query GetFeed(
stream {
isCompleted
}
tableSize
tags {
tagClasses {
name

View File

@@ -1,6 +1,6 @@
query GetShots(
$filterInput: FilterInput!
$shotsPagination: GetShotsPagination
$shotsPagination: GetShotsPagination = null
$limit: Int
$includeCreatedAt: Boolean! = false
$includeUpdatedAt: Boolean! = false
@@ -9,7 +9,6 @@ query GetShots(
$includeCueObjectDistance: Boolean! = false
$includeCueObjectAngle: Boolean! = false
$includeCueBallSpeed: Boolean! = false
$includeSpinType: Boolean! = false
$includeShotDirection: Boolean! = false
$includeTargetPocketDistance: Boolean! = false
$includeMake: Boolean! = false
@@ -28,14 +27,6 @@ query GetShots(
id
}
falsePositiveScore
video {
stream {
resolution {
width
height
}
}
}
createdAt @include(if: $includeCreatedAt)
updatedAt @include(if: $includeUpdatedAt)
cueObjectFeatures @include(if: $includeCueObjectFeatures) {
@@ -43,7 +34,6 @@ query GetShots(
cueObjectAngle @include(if: $includeCueObjectAngle)
cueBallSpeed @include(if: $includeCueBallSpeed)
shotDirection @include(if: $includeShotDirection)
spinType @include(if: $includeSpinType)
}
pocketingIntentionFeatures
@include(if: $includePocketingIntentionFeatures) {
@@ -54,80 +44,9 @@ query GetShots(
}
}
query GetSerializedShotPaths($filterInput: FilterInput!) {
getShots(filterInput: $filterInput) {
id
videoId
startFrame
endFrame
serializedShotPaths {
b64EncodedBuffer
}
}
}
query GetShotAnnotationTypes {
getShotAnnotationTypes {
id
name
}
}
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
) {
getShotsWithMetadata(
filterInput: $filterInput
shotsPagination: $shotsPagination
limit: $limit
) {
count
shots {
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)
}
}
}
}

View File

@@ -1,20 +1,9 @@
mutation getProfileImageUploadLink($fileExt: String = ".png") {
getProfileImageUploadLink(fileExt: $fileExt) {
value {
... on UploadLink {
uploadUrl
headers {
key
value
}
}
... on GetProfileUploadLinkErrors {
error {
... on TooManyProfileImageUploadsErr {
linksRequested
}
}
}
uploadUrl
headers {
key
value
}
}
}
@@ -56,10 +45,3 @@ query getUsernames(
) {
getUsernames(matchString: $matchString, limit: $limit, after: $after)
}
query GetUserTags {
getUserTags {
id
name
}
}

View File

@@ -70,7 +70,6 @@ query GetVideoUpdatePageDetails($videoId: Int!) {
totalShots
makePercentage
elapsedTime
tableSize
tags {
tagClasses {
name
@@ -99,7 +98,6 @@ query GetVideoDetails($videoId: Int!) {
totalShotsMade
createdAt
updatedAt
tableSize
owner {
id
firebaseUid
@@ -118,10 +116,11 @@ query GetVideoDetails($videoId: Int!) {
query GetVideos($videoIds: [Int!]!) {
getVideos(videoIds: $videoIds) {
id
framesPerSecond
playlist {
segmentDurations
}
stream {
id
streamSegmentType
segments {
uploaded
valid
@@ -130,9 +129,6 @@ query GetVideos($videoIds: [Int!]!) {
framesPerSecond
}
}
playlist {
segmentDurations
}
}
}

View File

@@ -6,63 +6,20 @@ mutation CreateUploadStream($videoMetadataInput: VideoMetadataInput!) {
mutation GetUploadLink($videoId: Int!, $segmentIndex: Int!) {
getUploadLink(videoId: $videoId, segmentIndex: $segmentIndex) {
value {
... on UploadLink {
uploadUrl
headers {
key
value
}
}
... on GetUploadLinkErrors {
error {
... on MustHaveSetForUploadLinkErr {
resolution
framesPerSecond
}
... on SegmentAlreadyUploadedErr {
segmentId
}
... on ProcessingFailedErr {
processing {
status
errors {
message
}
}
}
}
}
}
stream {
uploadCompletionCursor
uploadUrl
headers {
key
value
}
}
}
mutation GetHlsInitUploadLink($videoId: Int!) {
getHlsInitUploadLink(videoId: $videoId) {
value {
... on UploadLink {
uploadUrl
headers {
key
value
}
}
... on GetUploadLinkErrors {
error {
... on NoInitForChunkedUploadErr {
segmentType
}
... on InitUploadAlreadyCompletedErr {
segmentType
}
... on TooManyInitUploadsErr {
linksRequested
}
}
}
uploadUrl
headers {
key
value
}
}
}

View File

@@ -9,17 +9,12 @@ type Query {
videoId: ID!
intervalDuration: Int! = 300
): [MakePercentageIntervalGQL!]!
getShotsWithMetadata(
filterInput: FilterInput!
shotsPagination: GetShotsPagination = null
limit: Int! = 500
): GetShotsResult!
getShots(
filterInput: FilterInput!
shotsPagination: GetShotsPagination = null
limit: Int! = 500
): [ShotGQL!]!
getShotAnnotationTypes(errorTypes: Boolean = false): [ShotAnnotationTypeGQL!]!
getShotAnnotationTypes: [ShotAnnotationTypeGQL!]!
getUser(userId: Int!): UserGQL
getLoggedInUser: UserGQL
getUsernames(
@@ -101,24 +96,20 @@ input FilterInput @oneOf {
isLeftMiss: [Boolean!]
isRightMiss: [Boolean!]
isDirect: [Boolean!]
tableSize: RangeFilter
bankAngle: RangeFilter
bankDistance: RangeFilter
kickAngle: RangeFilter
kickDistance: RangeFilter
cueAngleAfterObject: RangeFilter
spinType: [SpinTypeEnum!]
cueSpeedAfterObject: RangeFilter
spinType: [String!]
falsePositiveScore: RangeFilter
}
input RangeFilter {
lessThan: Float = null
greaterThanEqualTo: Float = null
greaterThan: Float = null
includeOnNone: Boolean! = false
lessThanInclusive: Boolean! = false
greaterThanInclusive: Boolean! = true
}
enum PocketEnum {
@@ -145,13 +136,6 @@ input ShotAnnotationInput {
name: String!
}
enum SpinTypeEnum {
DRAW
FOLLOW
CENTER
UNKNOWN
}
type BucketSetGQL {
keyName: String!
feature: String!
@@ -168,7 +152,6 @@ type DeployedConfigGQL {
firebase: Boolean!
devMode: Boolean!
environment: String!
minimumAllowedAppVersion: String!
}
type MakePercentageIntervalGQL {
@@ -176,11 +159,6 @@ type MakePercentageIntervalGQL {
elapsedTime: Float!
}
type GetShotsResult {
shots: [ShotGQL!]!
count: Int
}
type ShotGQL {
id: Int!
videoId: Int!
@@ -208,7 +186,6 @@ type CueObjectFeaturesGQL {
cueObjectAngle: Float
cueBallSpeed: Float
shotDirection: ShotDirectionEnum
spinType: SpinTypeEnum
}
type PocketingIntentionFeaturesGQL {
@@ -249,7 +226,6 @@ type ShotAnnotationGQL {
type: ShotAnnotationTypeGQL!
creator: UserGQL!
notes: String!
errorDefault: Boolean!
createdAt: DateTime
updatedAt: DateTime
}
@@ -276,11 +252,9 @@ type VideoGQL {
endTime: DateTime
elapsedTime: Float
framesPerSecond: Float!
tableSize: Float!
stream: UploadStreamGQL
playlist: HLSPlaylistGQL
tags: [VideoTag!]!
currentHomography: HomographyInfoGQL
homographyHistory: [HomographyInfoGQL!]!
currentProcessing: VideoProcessingGQL
}
@@ -454,14 +428,8 @@ scalar JSON
type Mutation {
createBucketSet(params: CreateBucketSetInput!): BucketSetGQL!
setLoggerLevel(path: String!, level: String!): Boolean!
addAnnotationToShot(
shotId: Int!
annotationName: String!
notes: String = null
): AddShotAnnotationReturn!
getProfileImageUploadLink(
fileExt: String = ".png"
): GetProfileUploadLinkReturn!
addAnnotationToShot(shotId: Int!, annotationName: String!): Boolean!
getProfileImageUploadLink(fileExt: String = ".png"): GetUploadLinkReturn!
editProfileImageUri(profileImageUri: String!): UserGQL!
createUploadStream(
videoMetadata: VideoMetadataInput!
@@ -483,46 +451,10 @@ input CreateBucketSetInput {
buckets: [BucketInputGQL!]!
}
type AddShotAnnotationReturn {
value: SuccessfulAddAddShotAnnotationErrors!
}
union SuccessfulAddAddShotAnnotationErrors =
SuccessfulAdd
| AddShotAnnotationErrors
type SuccessfulAdd {
value: Boolean!
}
type AddShotAnnotationErrors {
error: DoesNotOwnShotErrOtherErrorNeedsNote!
}
union DoesNotOwnShotErrOtherErrorNeedsNote =
DoesNotOwnShotErr
| OtherErrorNeedsNote
type DoesNotOwnShotErr {
shotId: Int!
msg: String
}
type OtherErrorNeedsNote {
msg: String
}
type GetProfileUploadLinkReturn {
value: UploadLinkGetProfileUploadLinkErrors!
}
union UploadLinkGetProfileUploadLinkErrors =
UploadLink
| GetProfileUploadLinkErrors
type UploadLink {
type GetUploadLinkReturn {
uploadUrl: String!
headers: [Header]!
uploadCompletionCursor: Int
}
type Header {
@@ -530,14 +462,6 @@ type Header {
value: String!
}
type GetProfileUploadLinkErrors {
error: TooManyProfileImageUploadsErr!
}
type TooManyProfileImageUploadsErr {
linksRequested: Int!
}
type CreateUploadStreamReturn {
videoId: Int!
}
@@ -547,7 +471,7 @@ input VideoMetadataInput {
startTime: DateTime = null
endTime: DateTime = null
gameType: String = null
tableSize: Float = null
tableSize: String = null
uploadStreamMetadataInput: UploadStreamMetadataInput = null
lastIntendedSegmentBound: Int = null
streamSegmentType: StreamSegmentTypeEnum = null
@@ -578,48 +502,3 @@ input VideoResolution {
width: Int!
height: Int!
}
type GetUploadLinkReturn {
value: UploadLinkGetUploadLinkErrors!
stream: UploadStreamGQL
}
union UploadLinkGetUploadLinkErrors = UploadLink | GetUploadLinkErrors
type GetUploadLinkErrors {
error: MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErr!
}
union MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErr =
MustHaveSetForUploadLinkErr
| SegmentAlreadyUploadedErr
| ProcessingFailedErr
| NoInitForChunkedUploadErr
| TooManyProfileImageUploadsErr
| InitUploadAlreadyCompletedErr
| TooManyInitUploadsErr
type MustHaveSetForUploadLinkErr {
resolution: Boolean
framesPerSecond: Boolean
}
type SegmentAlreadyUploadedErr {
segmentId: Int!
}
type ProcessingFailedErr {
processing: VideoProcessingGQL!
}
type NoInitForChunkedUploadErr {
segmentType: StreamSegmentTypeEnum!
}
type InitUploadAlreadyCompletedErr {
segmentType: StreamSegmentTypeEnum!
}
type TooManyInitUploadsErr {
linksRequested: Int!
}