Compare commits

..

1 Commits

Author SHA1 Message Date
478c04215f GetShotsWithMetadata accepts ids
All checks were successful
Tests / Tests (pull_request) Successful in 11s
2024-10-03 12:34:36 -06:00
6 changed files with 154 additions and 1580 deletions

View File

@@ -1,7 +1,5 @@
overwrite: true overwrite: true
schema: schema: "src/schema.gql"
- "src/schema.gql"
- "src/client-schema.gql"
documents: "src/**/*.gql" documents: "src/**/*.gql"
generates: generates:
src/index.tsx: src/index.tsx:

View File

@@ -1,25 +0,0 @@
# see: https://www.apollographql.com/docs/react/local-state/managing-state-with-field-policies/
directive @client on FIELD
extend type ShotGQL {
startTime: Float!
endTime: Float!
}
extend type UploadStreamGQL {
segmentEndFrames: [Int!]!
}
extend type HLSPlaylistGQL {
segmentStartTimes: [Float!]!
}
type SegmentEndFramesGQL {
id: Int!
segmentEndFrames: [Int!]!
}
type SegmentStartTimesGQL {
id: Int!
segmentStartTimes: [Float!]!
}

File diff suppressed because it is too large Load Diff

View File

@@ -17,61 +17,6 @@ query GetShotAnnotationTypes {
} }
} }
mutation UpdateShotAnnotations(
$shotId: Int!
$annotations: [UpdateAnnotationInputGQL!]!
) {
updateShotAnnotations(shotId: $shotId, annotations: $annotations) {
value {
... on SuccessfulUpdate {
value
}
... on UpdateShotAnnotationErrors {
error {
shotId
msg
}
}
}
}
}
query GetShotsWithVideoGql($filterInput: FilterInput!, $limit: Int) {
getShotsWithMetadata(filterInput: $filterInput, limit: $limit) {
ids
shots {
id
videoId
video {
screenshotUri
endTime
}
}
}
}
## Reserved for playlists (which are created from a filter)
query GetShotsWithMetadataFilterResult(
$filterInput: FilterInput!
$shotsOrdering: GetShotsOrdering
$limit: Int
$ids: [Int!]
) {
getOrderedShots(
filterInput: $filterInput
shotsOrdering: $shotsOrdering
limit: $limit
ids: $ids
) {
count
shots {
...ShotWithAllFeatures
}
ids
}
}
# TODO: Delete
query GetShotsWithMetadata( query GetShotsWithMetadata(
$filterInput: FilterInput! $filterInput: FilterInput!
$shotsPagination: GetShotsPagination $shotsPagination: GetShotsPagination
@@ -103,12 +48,18 @@ fragment ShotWithAllFeatures on ShotGQL {
videoId videoId
startFrame startFrame
endFrame endFrame
startTime @client
endTime @client
user { user {
id id
} }
falsePositiveScore falsePositiveScore
video {
stream {
resolution {
width
height
}
}
}
createdAt createdAt
updatedAt updatedAt
cueObjectFeatures { cueObjectFeatures {
@@ -119,11 +70,8 @@ fragment ShotWithAllFeatures on ShotGQL {
spinType spinType
} }
pocketingIntentionFeatures { pocketingIntentionFeatures {
make
targetPocketDistance targetPocketDistance
targetPocketAngle make
targetPocketAngleDirection
marginOfErrorInDegrees
intendedPocketType intendedPocketType
} }
pocketingIntentionInfo { pocketingIntentionInfo {
@@ -134,12 +82,4 @@ fragment ShotWithAllFeatures on ShotGQL {
serializedShotPaths { serializedShotPaths {
b64EncodedBuffer b64EncodedBuffer
} }
annotations {
shotId
type {
id
name
}
notes
}
} }

View File

@@ -117,11 +117,6 @@ query GetVideoDetails($videoId: Int!) {
query GetVideos($videoIds: [Int!]!) { query GetVideos($videoIds: [Int!]!) {
getVideos(videoIds: $videoIds) { getVideos(videoIds: $videoIds) {
...VideoStreamMetadata
}
}
fragment VideoStreamMetadata on VideoGQL {
id id
framesPerSecond framesPerSecond
stream { stream {
@@ -139,11 +134,6 @@ fragment VideoStreamMetadata on VideoGQL {
segmentDurations segmentDurations
} }
} }
query GetVideoForShotTime($videoId: Int!) {
getVideo(videoId: $videoId) {
...VideoStreamMetadata
}
} }
query GetVideo($videoId: Int!) { query GetVideo($videoId: Int!) {
@@ -214,14 +204,12 @@ query GetAverageTimePerShotForVideo($videoId: Int!) {
averageTimeBetweenShots averageTimeBetweenShots
} }
} }
query GetElapsedTimeForVideo($videoId: Int!) { query GetElapsedTimeForVideo($videoId: Int!) {
getVideo(videoId: $videoId) { getVideo(videoId: $videoId) {
id id
elapsedTime elapsedTime
} }
} }
query GetMedianRunForVideo($videoId: Int!) { query GetMedianRunForVideo($videoId: Int!) {
getVideo(videoId: $videoId) { getVideo(videoId: $videoId) {
id id
@@ -229,14 +217,16 @@ query GetMedianRunForVideo($videoId: Int!) {
} }
} }
fragment StreamWithEndFrames on UploadStreamGQL { query GetVideoForClipTimes($videoId: Int!) {
getVideo(videoId: $videoId) {
id
framesPerSecond
playlist {
segmentDurations
}
stream {
id id
streamSegmentType streamSegmentType
segmentEndFrames @client
resolution {
width
height
}
segments { segments {
uploaded uploaded
valid valid
@@ -245,44 +235,5 @@ fragment StreamWithEndFrames on UploadStreamGQL {
framesPerSecond framesPerSecond
} }
} }
fragment SegmentEndFrames on SegmentEndFramesGQL {
id
segmentEndFrames
}
fragment SegmentStartTimes on SegmentStartTimesGQL {
id
segmentStartTimes
}
fragment PlaylistWithSegmentStartTimes on HLSPlaylistGQL {
videoId
segmentDurations
segmentStartTimes @client
}
fragment VideoDurationData on VideoGQL {
id
framesPerSecond
playlist {
...PlaylistWithSegmentStartTimes
}
stream {
...StreamWithEndFrames
}
}
query GetVideoForClipTimes($videoId: Int!) {
getVideo(videoId: $videoId) {
...VideoDurationData
}
}
query GetHeaderInfoByVideoId($videoId: Int!) {
getVideo(videoId: $videoId) {
id
name
startTime
} }
} }

View File

@@ -9,12 +9,6 @@ type Query {
videoId: ID! videoId: ID!
intervalDuration: Int! = 300 intervalDuration: Int! = 300
): [MakePercentageIntervalGQL!]! ): [MakePercentageIntervalGQL!]!
getOrderedShots(
filterInput: FilterInput!
ids: [Int!] = null
shotsOrdering: GetShotsOrdering = null
limit: Int! = 500
): GetShotsResult!
getShotsWithMetadata( getShotsWithMetadata(
filterInput: FilterInput! filterInput: FilterInput!
ids: [Int!] = null ids: [Int!] = null
@@ -35,12 +29,6 @@ type Query {
limit: Int = null limit: Int = null
after: String = null after: String = null
): [String!]! ): [String!]!
getUsernamesAndFollowing(
userId: Int!
matchString: String = null
limit: Int = 100
after: String = null
): UsernamesAndFollowingResponse!
getPlayTime(userId: Int!): UserPlayTimeGQL! getPlayTime(userId: Int!): UserPlayTimeGQL!
getUserVideos( getUserVideos(
userId: Int = null userId: Int = null
@@ -51,11 +39,6 @@ type Query {
getUserTags: [TagGQL!]! getUserTags: [TagGQL!]!
getVideo(videoId: Int!, debuggingJson: JSON = null): VideoGQL! getVideo(videoId: Int!, debuggingJson: JSON = null): VideoGQL!
getVideos(videoIds: [Int!]!): [VideoGQL!]! getVideos(videoIds: [Int!]!): [VideoGQL!]!
getFeedVideos(
limit: Int! = 5
after: String = null
filters: VideoFilterInput = null
): VideoHistoryGQL!
} }
type AggregateResultGQL { type AggregateResultGQL {
@@ -142,7 +125,6 @@ enum AlignedIntervalEnum {
MONTH MONTH
YEAR YEAR
WEEK WEEK
DAY
} }
input FilterInput @oneOf { input FilterInput @oneOf {
@@ -158,8 +140,6 @@ input FilterInput @oneOf {
shotDirection: [ShotDirectionEnum!] shotDirection: [ShotDirectionEnum!]
videoId: [Int!] videoId: [Int!]
userId: [Int!] userId: [Int!]
username: [String!]
fargoRating: FloatRangeFilter
make: [Boolean!] make: [Boolean!]
tags: [VideoTagInput!] tags: [VideoTagInput!]
annotations: [ShotAnnotationInput!] annotations: [ShotAnnotationInput!]
@@ -182,10 +162,7 @@ input FilterInput @oneOf {
targetPocketAngleDirection: [ShotDirectionEnum!] targetPocketAngleDirection: [ShotDirectionEnum!]
targetPocketAngle: FloatRangeFilter targetPocketAngle: FloatRangeFilter
missAngleInDegrees: FloatRangeFilter missAngleInDegrees: FloatRangeFilter
marginOfErrorInDegrees: FloatRangeFilter
createdAt: DateRangeFilter createdAt: DateRangeFilter
totalDistance: FloatRangeFilter
runLength: FloatRangeFilter
} }
input FloatRangeFilter { input FloatRangeFilter {
@@ -305,7 +282,6 @@ type PocketingIntentionFeaturesGQL {
difficulty: Float difficulty: Float
targetPocketAngle: Float targetPocketAngle: Float
targetPocketAngleDirection: ShotDirectionEnum targetPocketAngleDirection: ShotDirectionEnum
marginOfErrorInDegrees: Float
backcut: Boolean backcut: Boolean
} }
@@ -344,13 +320,10 @@ type UserGQL {
firebaseUid: String! firebaseUid: String!
username: String! username: String!
isAdmin: Boolean! isAdmin: Boolean!
fargoRating: Int
activeVideoId: Int activeVideoId: Int
profileImageUri: String profileImageUri: String
createdAt: DateTime createdAt: DateTime
updatedAt: DateTime updatedAt: DateTime
following: [Int!]
followers: [Int!]
} }
type ShotAnnotationGQL { type ShotAnnotationGQL {
@@ -517,33 +490,6 @@ type VideoProcessingStatusGQL {
updatedAt: DateTime updatedAt: DateTime
} }
input GetShotsOrdering {
orderings: [ShotsOrderingComponent!]!
}
input ShotsOrderingComponent @oneOf {
videoCreation: DatetimeShotOrdering
marginOfError: FloatShotOrdering
videoId: IntShotOrdering
startFrame: IntShotOrdering
runLength: IntShotOrdering
}
input DatetimeShotOrdering {
descending: Boolean! = true
startingAt: DateTime = null
}
input FloatShotOrdering {
descending: Boolean! = true
startingAt: Float = null
}
input IntShotOrdering {
descending: Boolean! = true
startingAt: Int = null
}
input GetShotsPagination { input GetShotsPagination {
createdAfter: CreatedAfter! createdAfter: CreatedAfter!
startFrameAfter: Int! startFrameAfter: Int!
@@ -554,12 +500,6 @@ input CreatedAfter @oneOf {
createdAt: DateTime createdAt: DateTime
} }
type UsernamesAndFollowingResponse {
usernames: [String!]!
following: [Int!]!
followers: [Int!]!
}
type UserPlayTimeGQL { type UserPlayTimeGQL {
totalSeconds: Float! totalSeconds: Float!
} }
@@ -601,17 +541,10 @@ type Mutation {
annotationName: String! annotationName: String!
notes: String = null notes: String = null
): AddShotAnnotationReturn! ): AddShotAnnotationReturn!
updateShotAnnotations(
shotId: Int!
annotations: [UpdateAnnotationInputGQL!]!
): UpdateShotAnnotationReturn!
getProfileImageUploadLink( getProfileImageUploadLink(
fileExt: String = ".png" fileExt: String = ".png"
): GetProfileUploadLinkReturn! ): GetProfileUploadLinkReturn!
editProfileImageUri(profileImageUri: String!): UserGQL! editProfileImageUri(profileImageUri: String!): UserGQL!
editUser(input: EditUserInputGQL!): UserGQL!
followUser(followedUserId: Int!): UserGQL!
unfollowUser(followedUserId: Int!): UserGQL!
createUploadStream( createUploadStream(
videoMetadata: VideoMetadataInput! videoMetadata: VideoMetadataInput!
): CreateUploadStreamReturn! ): CreateUploadStreamReturn!
@@ -661,27 +594,6 @@ type OtherErrorNeedsNote {
msg: String msg: String
} }
type UpdateShotAnnotationReturn {
value: SuccessfulUpdateUpdateShotAnnotationErrors!
}
union SuccessfulUpdateUpdateShotAnnotationErrors =
SuccessfulUpdate
| UpdateShotAnnotationErrors
type SuccessfulUpdate {
value: Boolean!
}
type UpdateShotAnnotationErrors {
error: DoesNotOwnShotErr
}
input UpdateAnnotationInputGQL {
name: String!
notes: String = null
}
type GetProfileUploadLinkReturn { type GetProfileUploadLinkReturn {
value: UploadLinkGetProfileUploadLinkErrors! value: UploadLinkGetProfileUploadLinkErrors!
} }
@@ -708,11 +620,6 @@ type TooManyProfileImageUploadsErr {
linksRequested: Int! linksRequested: Int!
} }
input EditUserInputGQL {
username: String = null
fargoRating: Int = null
}
type CreateUploadStreamReturn { type CreateUploadStreamReturn {
videoId: Int! videoId: Int!
} }
@@ -723,6 +630,7 @@ input VideoMetadataInput {
endTime: DateTime = null endTime: DateTime = null
gameType: String = null gameType: String = null
tableSize: Float = null tableSize: Float = null
uploadStreamMetadataInput: UploadStreamMetadataInput = null
lastIntendedSegmentBound: Int = null lastIntendedSegmentBound: Int = null
streamSegmentType: StreamSegmentTypeEnum = null streamSegmentType: StreamSegmentTypeEnum = null
endStream: Boolean! = false endStream: Boolean! = false
@@ -730,6 +638,24 @@ input VideoMetadataInput {
framesPerSecond: Float = null framesPerSecond: Float = null
} }
input UploadStreamMetadataInput {
deviceType: DeviceTypeEnum = null
osVersion: String = null
appVersion: String = null
browserName: String = null
browserVersion: String = null
locale: String = null
timezone: String = null
networkType: String = null
ipAddress: String = null
}
enum DeviceTypeEnum {
IOS
ANDROID
BROWSER
}
input VideoResolution { input VideoResolution {
width: Int! width: Int!
height: Int! height: Int!