Compare commits

...

295 Commits

Author SHA1 Message Date
0e00ae9297 Merge pull request 'Add private to VideoGQL' (#125) from mk/not-clear into master
Reviewed-on: #125
2024-11-07 18:50:34 -07:00
e16812f242 ???
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2024-11-07 17:49:36 -08:00
3e9b7a0d16 Merge pull request 'Add private field to user and videos' (#124) from mk/privacy into master
Reviewed-on: #124
2024-11-07 18:19:01 -07:00
309deb9473 Add private field to user and videos
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-11-07 17:16:56 -08:00
d5ba9c2ba5 Merge pull request 'Remove id from HomographyInfo fragment for now, use string instead of base64 for FindPrerecordTableLayout' (#122) from loewy/switch-back-to-string into master
Reviewed-on: #122
2024-11-07 18:09:51 -07:00
73771a263a remove id for now, use string instead of base64
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2024-11-07 17:08:35 -08:00
655e59c43c Remove base64 scalar 2024-11-07 17:43:09 -07:00
056120a68a Merge pull request 'Add operation for FindPrerecordTableLayoutMutation + HomographyInfoGql fragment' (#121) from loewy/add-operation-check-homography into master
Reviewed-on: #121
2024-11-07 16:51:16 -07:00
bd7ffa7fdb add operation
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2024-11-07 15:45:03 -08:00
ec58923c65 Add id to homography info gql 2024-11-07 16:29:33 -07:00
63869cd7ca Rename checkHomographyIsValid to findPrerecordTableLayout 2024-11-07 15:55:23 -07:00
08ae9611cf Add id to video processing gql 2024-11-07 15:52:07 -07:00
4e610b7df2 Merge pull request 'Return video processing status in feed' (#119) from kat/current-processing into master
Reviewed-on: #119
2024-11-06 22:41:30 -07:00
2d6d3964ad Return video processing status in feed
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-11-06 22:40:18 -07:00
73a58de36e Merge pull request 'Make check homography mutation' (#118) from mk/make-homography-mutation into master
Reviewed-on: #118
2024-11-06 17:26:27 -07:00
dc6f246489 Make check homography mutation
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2024-11-06 16:25:23 -08:00
c0a3aa97dc Merge pull request 'Add getShotsWithJustIds' (#117) from loewy/update-get-shots-with-video-ids into master
Reviewed-on: #117
2024-11-06 16:32:59 -07:00
f4e43b24f2 add getShotsWithJustIds
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-11-06 14:58:32 -08:00
51ab8320d7 Merge pull request 'add checkHomographyIsValid' (#116) from mk/get-homography-valid into master
Reviewed-on: #116
2024-11-05 15:45:49 -07:00
f9a00ad3eb add checkHomographyIsValid
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2024-11-05 14:39:23 -08:00
998b2ffc8c Merge pull request 'Create video card fragment' (#115) from kat/video-card-feed into master
Reviewed-on: #115
2024-11-05 14:04:02 -07:00
c7642e6204 Create video card fragment
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2024-11-05 13:58:31 -07:00
b2ce1c2f96 Create video card fragment
All checks were successful
Tests / Tests (pull_request) Successful in 6s
2024-11-05 13:56:51 -07:00
d0cf071934 Merge pull request 'Return profile image in feed' (#114) from kat/image-uri-feed into master
Reviewed-on: #114
2024-11-05 12:54:24 -07:00
6b410b3d78 Return profile image in feed
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2024-11-05 12:53:42 -07:00
607504261c Merge pull request 'Create new get feed operation' (#113) from kat/add-feed into master
Reviewed-on: #113
Reviewed-by: loewy <loewymalkov@gmail.com>
2024-11-04 15:13:56 -07:00
0421be855d Create new get feed operation
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-11-04 15:08:21 -07:00
014aab473b Merge pull request 'Add operation for query doesUsernameExist' (#111) from loewy/query-does-username-exist into master
Reviewed-on: #111
2024-10-31 18:39:58 -06:00
353872401e does username exist query
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-10-31 17:37:08 -07:00
433dfdaf74 Merge pull request 'Add countRespectsLimit to GetShotsWithMetadataFilterResult operation args' (#110) from loewy/add-count-respects-limit-to-get-shots-with-metadata-filter-result into master
Reviewed-on: #110
2024-10-31 16:41:06 -06:00
a2d9e688e9 add countRespectsLimit
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-31 15:21:54 -07:00
b3259dac1f Merge pull request 'Add countRespectsLimit' (#109) from mk/count-respects-limit into master
Reviewed-on: #109
2024-10-31 14:40:06 -06:00
0982b9e60c Add countRespectsLimit
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-31 13:37:15 -07:00
1710ae451c Merge pull request 'Return id for cache;' (#107) from kat/use-logged-in-user into master
Reviewed-on: #107
2024-10-31 01:57:38 -06:00
de9e7dea6a Return id for cache;
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-31 01:56:34 -06:00
cfcf1dbcd2 Merge pull request 'Use logged in user for followers' (#106) from kat/use-logged-in-user into master
Reviewed-on: #106
2024-10-30 21:52:42 -06:00
05e3182e8b Use logged in user for followers
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-30 18:20:25 -06:00
baf139aab5 Merge pull request 'Add support for medals' (#105) from mk/medals into master
Reviewed-on: #105
2024-10-30 17:53:33 -06:00
b3b454ef83 Add support for medals
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-10-30 16:51:35 -07:00
f6e4a1bc0b Merge pull request 'Use getUser for getting followers' (#104) from kat/get-user-followers into master
Reviewed-on: #104
2024-10-30 16:19:53 -06:00
9d8155527d Use getUser for getting followers
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-10-30 16:18:25 -06:00
8690e81029 Merge pull request 'Add doesUsernameExist' (#103) from mk/does-username-exist into master
Reviewed-on: #103
2024-10-30 13:08:59 -06:00
4ef13a482a Add doesUsernameExist
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-30 12:07:54 -07:00
9db95c4e6c Merge pull request 'Get user following followers' (#101) from kat/get-user-following-followers into master
Reviewed-on: #101
2024-10-29 23:38:48 -06:00
249807c935 Get user following followers
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-29 23:37:37 -06:00
eec79b2dc5 Merge pull request 'Use getOrderedShots when requesting getShotsWithVideoGql' (#100) from loewy/use-ordered-shots-to-get-thumbnail into master
Reviewed-on: #100
2024-10-29 19:44:14 -06:00
464c013095 Merge branch 'master' into loewy/use-ordered-shots-to-get-thumbnail
All checks were successful
Tests / Tests (pull_request) Successful in 1m37s
2024-10-29 19:42:30 -06:00
e2f4995cad use getOrderedShots when requesting getShotsWithVideoGql
All checks were successful
Tests / Tests (pull_request) Successful in 6m32s
2024-10-29 17:59:18 -07:00
a43b286e39 Merge pull request 'Followers and following' (#99) from kat/return-following-followers into master
Reviewed-on: #99
2024-10-29 15:48:34 -06:00
148f5362f0 Followers and following
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-29 15:47:00 -06:00
4d01e9814d Merge pull request 'Remove unused field' (#98) from loewy/remove-ids-from-get-shot-video-gql into master
Reviewed-on: #98
2024-10-29 13:45:52 -06:00
b9e3e1f310 remove uneeded ids
All checks were successful
Tests / Tests (pull_request) Successful in 6s
2024-10-29 12:44:56 -07:00
b0da48c4fb Merge pull request 'Add fargoRating in getLoggedInUser operations requested fields' (#97) from loewy/fargo-rating-in-returns into master
Reviewed-on: #97
2024-10-28 17:04:08 -06:00
1e53dc21ee add fargoRating in user operations
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-10-28 16:00:11 -07:00
5c5014339f Allow python 3.12 2024-10-28 02:24:24 -06:00
84188a6066 Merge pull request 'Return username in follow unfollow' (#96) from kat/return-username into master
Reviewed-on: #96
2024-10-27 19:19:41 -06:00
7c7be319d1 Return username in follow unfollow
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-10-27 19:18:57 -06:00
79784faba1 Merge pull request 'Follow and unfollow mutation' (#95) from kat/user-relationships-result into master
Reviewed-on: #95
2024-10-27 13:53:22 -06:00
f3ea44755c Follow, unfollow mutation
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-10-27 12:22:22 -06:00
9b6559559c Use clearer names in the fields of GetUserRelationshipsMatching 2024-10-25 16:58:21 -06:00
2398216bf2 Replace GetUsernamesAndRelationships with GetUserRelationshipsMatching 2024-10-25 02:45:07 -06:00
d942b91d17 Merge pull request 'Update get user and following response' (#94) from kat/update-gql-v2 into master
Reviewed-on: #94
2024-10-25 01:28:03 -06:00
24d9b9225e Update get user and following response
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-25 01:27:14 -06:00
f6f6404302 Merge pull request 'Delete user with ids' (#92) from kat/remove-user-ids into master
Reviewed-on: #92
2024-10-25 01:08:04 -06:00
4609af726b Delete user with ids
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-10-25 01:07:23 -06:00
c5919c90d0 User UserGQL in response 2024-10-25 00:31:29 -06:00
605adc3293 Merge pull request 'Update get usernames ids' (#90) from kat/update-get-username-ids into master
Reviewed-on: #90
2024-10-25 00:18:19 -06:00
b40554d38d Update get usernames ids
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-25 00:16:59 -06:00
194d7c66a0 Merge pull request 'Add subfields to usernames and following' (#89) from kat/usernames-following-response into master
Reviewed-on: #89
2024-10-24 23:50:28 -06:00
3adc301935 Add subfields to usernames and following
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-24 23:49:47 -06:00
9232c673e8 Merge pull request 'Return usernamesAndIds' (#88) from kat/update-usernames-and-following into master
Reviewed-on: #88
2024-10-24 23:46:27 -06:00
c2cb411469 Return usernamesAndIds
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2024-10-24 23:41:52 -06:00
44ddc732a1 Fix cache merge (#87)
Co-authored-by: Kat Huang <kkathuang@gmail.com>
Reviewed-on: #87
Co-authored-by: Volodymyr Smolianinov <voidozzer@gmail.com>
Co-committed-by: Volodymyr Smolianinov <voidozzer@gmail.com>
2024-10-24 13:50:52 -06:00
d6ef3e0487 Merge pull request 'Remove error default from operation' (#86) from loewy/remove-error-default into master
Reviewed-on: #86
2024-10-24 12:28:39 -06:00
8c191bdb90 Remove error default from operation
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-24 11:27:40 -07:00
8246699915 Merge pull request 'Return ShotGQL w/ updateShotAnnotations' (#84) from loewy/annotations-return into master
Reviewed-on: #84
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-10-24 10:54:05 -06:00
de9d47c289 Merge branch 'master' into loewy/annotations-return
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-10-24 10:53:02 -06:00
39b1808cab Merge pull request 'Create get usernames and followers operation' (#85) from kat/add-get-usernames-following-operation into master
Reviewed-on: #85
2024-10-24 09:19:38 -06:00
a78f9e7b9d return shot gql with an annotation update
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2024-10-23 16:39:16 -07:00
f573026853 Create get usernames and followers operation
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-23 17:04:25 -06:00
f98c98ecdd Merge pull request 'Add get usernames and following response' (#83) from kat/add-usernames-response into master
Reviewed-on: #83
2024-10-23 16:53:50 -06:00
3f6314aab7 Add get usernames and following response
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-10-23 16:53:26 -06:00
3051c155e2 Merge pull request 'Add mutation, logic needs to have better stateful solution' (#82) from loewy/add-annotations-to-operations into master
Reviewed-on: #82
2024-10-22 18:38:25 -06:00
e686be5acd add mutation, logic needs to have better stateful solution
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2024-10-22 16:58:35 -07:00
d49f9b213a Merge pull request 'Add following followers to user model' (#81) from kat/following-followers into master
Reviewed-on: #81
2024-10-22 00:12:59 -06:00
8f346d7832 Add runLength ordering and filter 2024-10-21 21:35:19 -06:00
163c6a4e0c Add following followers to user model
All checks were successful
Tests / Tests (pull_request) Successful in 7s
2024-10-21 12:08:42 -06:00
b9036001aa Remove user id from feed args 2024-10-21 01:12:17 -06:00
b16b36588f Create feed query 2024-10-20 23:35:52 -06:00
efaaeeaad1 Add totalDistance 2024-10-20 14:38:06 -06:00
5d93f7166e Use getOrderedShots 2024-10-19 21:27:57 -06:00
72ac956758 Add get ordered shots 2024-10-19 20:18:23 -06:00
5cb7df174b Merge pull request 'get rid of metadata input' (#80) from mk/alter-metadata-type into master
Reviewed-on: #80
2024-10-18 12:52:21 -06:00
d15dae23c1 get rid of metadata input
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-10-18 11:51:38 -07:00
c98a65bb6f Merge pull request 'Add fargo filter input' (#79) from mk/fargo-filter into master
Reviewed-on: #79
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-10-17 16:26:09 -06:00
e701c79469 Add fargo filter input
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2024-10-17 15:24:56 -07:00
18cd3efe80 Dumb bug, nuked the schema lol (#78)
Alter fargo type, restore schema :O
Reviewed-on: #78
Co-authored-by: Mike Kalange <countablecloud@gmail.com>
Co-committed-by: Mike Kalange <countablecloud@gmail.com>
2024-10-17 15:15:54 -06:00
d71974d385 Merge pull request 'Add editUser mutation and input' (#77) from mk/edit-user into master
Reviewed-on: #77
2024-10-17 15:11:40 -06:00
0defdf0892 Add editUser mutation and input
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-10-17 14:10:43 -07:00
8d1f79b8a8 GQL for caching hack 2024-10-17 01:28:14 -06:00
9dc426ea0f Moar fragments! 2024-10-16 23:39:14 -06:00
19a63b9d19 Move segment start times 2024-10-16 18:52:18 -06:00
ae97f956b3 Add segmentDurations and segmentStartFrames 2024-10-16 16:46:29 -06:00
d619751144 Add client side start and end time 2024-10-16 15:24:08 -06:00
e431a1751f Merge pull request 'Create get video for shot time conversion query' (#76) from kat/get-video-metadata into master
Reviewed-on: #76
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-10-16 00:03:39 -06:00
209f0aa019 Create get video for shot time conversion query
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2024-10-15 23:41:04 -06:00
70015a942c Merge pull request 'Add updateAnnotation interfaces' (#75) from mk/update-annotations into master
Reviewed-on: #75
2024-10-14 18:41:08 -06:00
91cfcb28e7 Add updateAnnotation interfaces
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-10-14 17:27:07 -07:00
b2a09c1b8c Create reserved query for get shots with metadata (#74)
Reviewed-on: #74
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-10-11 18:46:46 -06:00
59aaf47cbe Merge pull request 'Add a lightweight GQL call to get video header info' (#73) from loewy/add-lightweight-get-video-with-just-header-info into master
Reviewed-on: #73
2024-10-10 18:33:42 -06:00
c426e753cd add lightweigth gql call to get video header info
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-10 17:02:18 -07:00
c8cf97421b Merge pull request 'Add id to shots: video items to prevent cache merge issues' (#72) from loewy/add-id-to-fix-cache-merging-issue into master
Reviewed-on: #72
2024-10-07 22:15:38 -06:00
9718137ad3 add id to prevent cache merge issues
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-10-07 21:14:47 -07:00
af1fb3fee7 Merge pull request 'Add a lightweight query to get video thumbnail and info from getShotsResultGql' (#71) from loewy/get-shots-with-video into master
Reviewed-on: #71
Reviewed-by: Kat Huang <kkathuang@gmail.com>
2024-10-07 20:19:14 -06:00
025baf257a add a lightweight query to get video thumbnail and info from getShotsResultGql
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-10-07 16:51:53 -07:00
8239ab6e1b Add a username filter 2024-10-06 13:44:53 -06:00
1f018f954e Add all targetPocketIntention features to shot retrieval 2024-10-06 13:16:39 -06:00
fd78ddf641 Add marginOfErrorInDegrees 2024-10-06 12:52:13 -06:00
7662f1f050 Merge pull request 'Add day back' (#70) from kat/add-day-back into master
Reviewed-on: #70
2024-10-05 14:44:27 -06:00
890bea2571 Add day back
All checks were successful
Tests / Tests (pull_request) Successful in 7s
2024-10-05 14:33:39 -06:00
f57f6dc32d Merge pull request 'Add day' (#69) from kat/update-gql into master
Reviewed-on: #69
2024-10-04 23:49:52 -06:00
14863e3357 Add day
All checks were successful
Tests / Tests (pull_request) Successful in 6s
2024-10-04 22:56:58 -06:00
Your Name
58f01c567c Add day alignment 2024-10-03 21:57:07 -06:00
937368c753 GetShotsWithMetadata accepts ids (#68)
Reviewed-on: #68
2024-10-03 12:36:35 -06:00
d8c11875d4 Merge pull request 'Update get shots with metadata' (#67) from kat/update-gql into master
Reviewed-on: #67
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-10-03 11:47:20 -06:00
bacd9e77f0 Update get shots with metadata
All checks were successful
Tests / Tests (pull_request) Successful in 14s
2024-10-03 11:42:39 -06:00
69d755ba32 Merge pull request 'Use ShotWithAllFeatures in getAllShots' (#66) from kat/use-fragment-get-shots into master
Reviewed-on: #66
2024-10-02 19:09:50 -06:00
31fb95e3b0 Use ShotWithAllFeatures in getAllShots
All checks were successful
Tests / Tests (pull_request) Successful in 13s
2024-10-02 18:15:00 -06:00
7d0f9870dd Merge pull request 'Delete unused get shots operation' (#65) from kat/delete-unused-get-shots into master
Reviewed-on: #65
2024-10-02 17:46:26 -06:00
4a493b4e8d Delete unused get shots operation
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-10-02 17:43:06 -06:00
341dc819a0 Merge pull request 'Use shot fragment in getShots to cache normalized shots' (#64) from kat/create-shot-fragment into master
Reviewed-on: #64
2024-10-02 17:37:59 -06:00
b58aecf7a5 Crate shot with all features fragment (#63)
Reviewed-on: #63
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-10-01 19:19:39 -06:00
301c017d5e Delete unused varibles
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2024-10-01 15:28:12 -06:00
1a4b676635 Create shot fragment
Some checks failed
Tests / Tests (pull_request) Failing after 4s
2024-09-30 17:08:11 -06:00
ce54bef0b4 Merge pull request 'Create get shots by ids operation' (#61) from kat/create-get-shots-by-id into master
Reviewed-on: #61
2024-09-29 22:55:34 -06:00
2699d29d7b Create get shots by ids operation
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2024-09-29 22:53:24 -06:00
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
caea1b9572 Add pocket angle features 2024-09-19 18:28:18 -06:00
0a255f161a Merge pull request 'Add shot direction counts' (#57) from shot-direction-counts into master
Reviewed-on: #57
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-09-19 12:02:51 -06:00
85a2da4b5c Add shot direction counts
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-09-19 10:46:20 -07:00
647ef3049b Add spin type counts 2024-09-18 16:58:46 -06:00
7b48a5b6e2 Merge pull request 'Add DatetimeRangeAggregation' (#56) from mk/datetime-range-aggregation into master
Reviewed-on: #56
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-09-18 15:31:31 -06:00
ec2e3da513 Add DatetimeRangeAggregation
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-09-18 13:48:52 -07:00
72729e410b Merge pull request 'Add serializedShotPaths to GetShots' (#55) from loewy/add-shot-deserialization-to-operation into master
Reviewed-on: #55
2024-09-16 17:56:23 -06:00
5a9205a9b8 was on the wrong gql operation, updated
All checks were successful
Tests / Tests (pull_request) Successful in 7s
2024-09-16 15:44:22 -07:00
a33601158f add serializedShotPaths to GetShots
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-09-16 11:55:30 -07:00
3c6b37b567 Merge pull request 'Add indices to shot proto' (#54) from mk/fix-shot-indexes into master
Reviewed-on: #54
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-09-13 18:08:34 -06:00
9b18ada78d Add indices to shot proto
All checks were successful
Tests / Tests (pull_request) Successful in 11s
2024-09-13 16:54:17 -07:00
d57bb607e4 Merge pull request 'Serialization Improvements' (#53) from mk/serialization-improvements into master
Reviewed-on: #53
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-09-11 16:23:18 -06:00
1f88ee4a0c Add KeyBalls to shot proto
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-09-11 13:46:14 -07:00
a32317e72f Add Collision Info 2024-09-10 13:31:57 -07:00
b60cbe3854 Merge pull request 'Add current homography operation' (#52) from loewy/add-current-homography-in-operation into master
Reviewed-on: #52
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-09-06 19:04:35 -06:00
e0b150aa2a add current homography operation
All checks were successful
Tests / Tests (pull_request) Successful in 6s
2024-09-06 19:00:13 -06:00
2bdfcb994e Merge pull request 'Added get shots with metadadata operation' (#51) from add-get-shots-with-metadata-query into master
Reviewed-on: #51
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-09-05 23:18:37 -06:00
d5c6014548 Merge remote-tracking branch 'origin/master' into add-get-shots-with-metadata-query
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-09-05 23:17:53 -06:00
de6fcacfd0 Merge pull request 'Added GetUserTagsQuery' (#50) from micah/add-get-tags-query into master
Reviewed-on: #50
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-09-05 20:28:16 -06:00
993f62b6cf Added get shots with metadadata operation
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2024-09-05 20:46:25 -05:00
aabd74d7d7 Added GetUserTagsQuery
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-09-05 18:35:08 -07:00
15b307a88f Merge pull request 'Add current homography to VideoGQL' (#49) from loewy/add-current-homography-to-get-video into master
Reviewed-on: #49
2024-09-04 18:28:24 -06:00
72b338bfc2 add current homography to video gql
All checks were successful
Tests / Tests (pull_request) Successful in 6s
2024-09-04 18:04:55 -06:00
267486774c Add get shots result 2024-09-04 16:12:20 -06:00
b94a568ef1 Merge pull request 'Add error types for init uploading' (#48) from mk/limit-init-upload-links into master
Reviewed-on: #48
Reviewed-by: loewy <loewymalkov@gmail.com>
2024-09-03 16:52:51 -06:00
b773ccfc8f Add error types for init uploading
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-09-03 15:50:02 -07:00
fd5c28e073 Add get shots with metadata 2024-09-01 21:16:44 +00:00
4c232829b6 Merge pull request 'Add spinType and cueBallSpeed to get shots operation' (#47) from loewy/add-spin-type-to-get-shots into master
Reviewed-on: #47
2024-08-29 19:34:19 -06:00
ddf1036009 add spin type and cue ball speed to get shots operation
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-08-29 18:32:05 -07:00
9b3e5c23a0 Merge pull request 'Dummy query to resolve shot paths' (#46) from mk/deserialize-and-render into master
Reviewed-on: #46
Reviewed-by: loewy <loewymalkov@gmail.com>
2024-08-29 12:26:23 -06:00
a7eae9d46b Merge branch 'master' into mk/deserialize-and-render
All checks were successful
Tests / Tests (pull_request) Successful in 5s
2024-08-29 12:24:54 -06:00
8c3e9d6273 Merge pull request 'Add spinType and filter input' (#45) from mk/spin-type into master
Reviewed-on: #45
Reviewed-by: loewy <loewymalkov@gmail.com>
2024-08-28 17:38:43 -06:00
f306cc6c16 Merge branch 'master' into mk/spin-type
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-08-28 17:27:58 -06:00
643cdb29e3 Add spinType and filter input
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-08-28 16:27:21 -07:00
89287a0100 Merge pull request 'Expose frames per second in get videos' (#44) from kat/expose-frames-per-second into master
Reviewed-on: #44
2024-08-27 10:21:38 -06:00
f9b02f65e0 Expose frames per second in get videos
All checks were successful
Tests / Tests (pull_request) Successful in 7s
2024-08-26 20:53:16 -06:00
41169e2848 Dummy query to get it working for now
All checks were successful
Tests / Tests (pull_request) Successful in 7s
2024-08-26 15:54:43 -07:00
ba36bc709c Merge pull request 'Add resolution to getShots operation' (#42) from loewy/add-resolution-in-get-shots into master
Reviewed-on: #42
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
Reviewed-by: countablecloud <countablecloud@gmail.com>
2024-08-26 12:42:15 -06:00
4005416233 Merge branch 'master' into loewy/add-resolution-in-get-shots
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-08-26 10:23:07 -06:00
db4a6315cd Merge pull request 'Add stream type to get videos' (#43) from kat/add-stream-type-get-videos into master
Reviewed-on: #43
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-08-26 08:36:44 -06:00
af38fdea64 Add stream type to get videos
All checks were successful
Tests / Tests (pull_request) Successful in 7s
2024-08-26 06:56:40 -06:00
172df69340 add resolution to getShots operation
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-08-23 17:29:40 -07:00
a030a0ef16 Merge pull request 'Error reporting types and Errors for Shot Annotation' (#41) from mk/allow-error-reporting into master
Reviewed-on: #41
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-08-21 16:59:34 -06:00
7a6cc2739f Error reporting types and Errors
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-08-21 13:41:24 -07:00
41c9701e18 Merge pull request 'Add separate return to profile image' (#40) from mk/add-separate-return-to-image-upload-link into master
Reviewed-on: #40
Reviewed-by: loewy <loewymalkov@gmail.com>
2024-08-19 15:58:15 -06:00
16e79ed608 Adds stream to get upload link
All checks were successful
Tests / Tests (pull_request) Successful in 14s
2024-08-19 14:54:48 -07:00
f401e1879b Add separate return to profile image
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-08-19 14:44:43 -07:00
72b451d322 remove stream from getUploadLink 2024-08-16 18:47:08 -07:00
5350c46e0a Merge pull request 'Adds proper error return to stuff involving upload links' (#39) from mk/add-error-return-to-upload-links into master
Reviewed-on: #39
Reviewed-by: loewy <loewymalkov@gmail.com>
2024-08-16 19:02:31 -06:00
1f5c5774e1 Merge branch 'master' into mk/add-error-return-to-upload-links
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-08-16 17:29:18 -06:00
3b29502e7e Adds proper error return to stuff involving upload links
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2024-08-16 16:28:45 -07:00
abc7e9fd05 Merge pull request 'add minimum app version to get config call' (#38) from loewy/add-operation-minimum-app-version into master
Reviewed-on: #38
2024-08-16 16:40:39 -06:00
dd5ce77102 add minimum app version to get config call
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-08-16 14:26:24 -07:00
dabaa3d1e1 Add minimum allowed AppVersion to deployed config 2024-08-16 12:21:46 -07:00
a6604a3a6d add tableSize to GetFeed 2024-08-15 19:52:03 -07:00
09a3e0e294 Add table size range filter 2024-08-15 19:42:53 -07:00
f20ca53a2a add tableSize to operations for getVideo
All checks were successful
Tests / Tests (pull_request) Successful in 14s
2024-08-15 18:51:36 -07:00
a2b912500c Merge pull request 'Add table size to return' (#36) from mk/table-size-non-optional-float into master
Reviewed-on: #36
Reviewed-by: loewy <loewymalkov@gmail.com>
2024-08-15 19:12:22 -06:00
7de3d196ba Add table size to return
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-08-15 19:11:25 -06:00
6d5669aaf8 Merge pull request 'Make table size nonnullable float' (#35) from mk/table-size-non-optional-float into master
Reviewed-on: #35
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-08-15 18:19:07 -06:00
2c583509a2 Make table size nonnullable and float
All checks were successful
Tests / Tests (pull_request) Successful in 7s
2024-08-15 16:54:07 -07:00
3480637600 Merge pull request 'Add debugJson to getStreamMonitoringDetails' (#34) from loewy/add-debug-json into master
Reviewed-on: #34
2024-08-13 19:09:11 -06:00
f4665f51b1 add debugJson to getStreamMonitoringDetails
All checks were successful
Tests / Tests (pull_request) Successful in 7s
2024-08-13 15:30:04 -07:00
810212dc12 Merge pull request 'Make pagination optional' (#33) from loewy/make-pagination-optional into master
Reviewed-on: #33
2024-08-13 14:53:15 -06:00
c3210df517 make pagination optional:
All checks were successful
Tests / Tests (pull_request) Successful in 6s
2024-08-13 13:49:12 -07:00
9f5c354433 Merge pull request 'Tweaks for Debugging' (#32) from mk/tweeks-for-debugging into master
Reviewed-on: #32
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
Reviewed-by: loewy <loewymalkov@gmail.com>
2024-08-13 14:43:39 -06:00
23d9fef2b1 Add Debugging JSON to input
All checks were successful
Tests / Tests (pull_request) Successful in 7s
2024-08-13 13:28:36 -07:00
df3087de7d Add VideoProcessingStatus to VideoProcessing
All checks were successful
Tests / Tests (pull_request) Successful in 6s
2024-08-13 12:42:45 -07:00
5dd8318dab Add status to VideoProcessing 2024-08-13 11:33:31 -07:00
56c8bcce20 Add uploadCompletionCursor to GetUploadLinkReturn
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-08-13 10:33:53 -07:00
1c4961db5b Merge pull request 'add uploadsCompleted to getUploadStreamWithDetails query' (#31) from loewy/add-uploads-completed into master
Reviewed-on: #31
Reviewed-by: countablecloud <countablecloud@gmail.com>
2024-08-13 11:22:09 -06:00
5e0d01ea5b add uploadsCompleted to getUploadStreamWithDetails query
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-08-13 11:21:11 -06:00
e8938621fc Merge pull request 'Support shots pagination' (#30) from kat/paginate-get-shots into master
Reviewed-on: #30
2024-08-09 15:12:51 -06:00
8c8dcdd8e1 Support shots pagination
All checks were successful
Tests / Tests (pull_request) Successful in 7s
2024-08-09 15:10:36 -06:00
5085c9af90 Add waitFor 2024-08-09 00:59:38 -06:00
85bc743c8e Bump getShots default 2024-08-05 23:36:54 -06:00
b8efa644e3 Merge pull request 'Add frameIndex in operation for getVideo in homographyHistory' (#29) from loewy/add-frame-index-in-homography-history into master
Reviewed-on: #29
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-08-01 19:52:51 -06:00
c18628a4ca Add pagination to getShots 2024-08-01 19:49:57 -06:00
535e24c9c2 add frameindex in operations
All checks were successful
Tests / Tests (pull_request) Successful in 11s
2024-08-01 14:52:37 -07:00
04308b1003 Merge pull request 'Add addAnnotationToShot' (#28) from mk/add-add-annotation into master
Reviewed-on: #28
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-07-30 18:10:44 -06:00
43c626141e Add addAnnotationToShot
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-07-30 17:08:05 -07:00
c49266e4c1 Merge pull request 'Expose frames per second on video' (#27) from kat/add-video-duration into master
Reviewed-on: #27
2024-07-30 11:54:34 -06:00
6677b9232f Expose frames per second on video
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-07-30 11:53:34 -06:00
76e792be88 Merge pull request 'Expose stream type on video' (#26) from kat/create-get-video-for-clip-calculation into master
Reviewed-on: #26
2024-07-30 01:02:18 -06:00
5eac3d9d40 Expose stream type
All checks were successful
Tests / Tests (pull_request) Successful in 12s
2024-07-30 01:00:12 -06:00
64593f09b7 Add include_on_none in range filter 2024-07-29 17:21:09 -06:00
e20b68799f Add falsePositiveScore 2024-07-28 02:06:39 -06:00
378878967a Add streamSegmentType to Stream 2024-07-27 20:51:48 -06:00
251ebe7056 Merge pull request 'Add homography and resolution to GetVideo' (#25) from loewy/add-resolution-in-operation into master
Reviewed-on: #25
2024-07-25 19:09:56 -06:00
615e4d5467 add resolution and homography to getVideo
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-07-25 18:07:17 -07:00
a4f602d651 Expose resolution 2024-07-25 18:18:16 -06:00
c48512fc45 Merge pull request 'Fixed get user tags parameters' (#24) from micah/get-user-tags into master
Reviewed-on: #24
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-07-24 14:28:25 -06:00
d75822c465 Fixed get user tags parameters
All checks were successful
Tests / Tests (pull_request) Successful in 11s
2024-07-24 11:47:57 -07:00
4feeba5150 Merge pull request 'Added user tags' (#23) from micah/get-user-tags into master
Reviewed-on: #23
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-07-23 23:37:05 -06:00
e1237363f0 Removed wrapper type
All checks were successful
Tests / Tests (pull_request) Successful in 14s
2024-07-23 18:53:39 -07:00
b1550b31c5 Added user tags
All checks were successful
Tests / Tests (pull_request) Successful in 7s
2024-07-22 19:43:42 -07:00
81b9fd9f12 Add spin features 2024-07-19 17:18:14 -06:00
d3559ede21 Merge pull request 'Add frames_per_second' (#21) from loewy/add-fps into master
Reviewed-on: #21
Reviewed-by: countablecloud <countablecloud@gmail.com>
2024-07-18 17:51:30 -06:00
ef6ccca3f9 fix black issue
All checks were successful
Tests / Tests (pull_request) Successful in 14s
2024-07-18 16:46:27 -07:00
f781e9648f add pycache to gitignore
Some checks failed
Tests / Tests (pull_request) Failing after 15s
2024-07-18 16:37:59 -07:00
18d2eea029 add shot_pb2 2024-07-18 16:34:22 -07:00
a95bdab8bf ad frames per second to schema 2024-07-18 16:14:28 -07:00
eaeb1ed0ea Add resolution 2024-07-18 01:14:18 -06:00
f9d6377fe4 Update durations in seconds 2024-07-16 21:48:15 -06:00
30cf72de78 Merge pull request 'Add initPlaylistUploadStatus' (#20) from loewy/update-video-gql-operations into master
Reviewed-on: #20
2024-07-16 20:24:58 -06:00
fd49dec34c add initPlaylistUploadStatus
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-07-16 19:23:54 -07:00
cdd1cdd526 Fix segment parameter again 2024-07-16 20:22:16 -06:00
bce363e8ff Parameter to setSegmentDuration should be segmentIndex 2024-07-16 20:20:37 -06:00
80f609b8a2 Merge pull request 'Add operation for set segment duration' (#19) from loewy/set-segment-duration-operation into master
Reviewed-on: #19
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-07-16 17:54:19 -06:00
6205e9a353 add operation for set segment duration
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-07-16 16:33:22 -07:00
12f7e1f115 Merge pull request 'Add operation getHlsInitUploadLink' (#18) from loewy/operation-get-hls-init-upload-link into master
Reviewed-on: #18
2024-07-16 15:28:43 -06:00
296ad969f4 Merge branch 'master' into loewy/operation-get-hls-init-upload-link
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-07-16 15:27:37 -06:00
d25c08447e Merge pull request 'Adds init playlist status' (#17) from mk/add-init-file-uploaded-marking into master
Reviewed-on: #17
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-07-16 15:26:27 -06:00
7502a75753 Merge remote-tracking branch 'origin' into mk/add-init-file-uploaded-marking
All checks were successful
Tests / Tests (pull_request) Successful in 7s
2024-07-16 14:23:32 -07:00
1a14db1a17 Adds init playlist status
All checks were successful
Tests / Tests (pull_request) Successful in 14s
2024-07-16 14:21:45 -07:00
67d8bcac21 add operation for hls init link
All checks were successful
Tests / Tests (pull_request) Successful in 14s
2024-07-15 17:29:55 -07:00
4ca27317b4 Add operation for shot annotation types 2024-07-15 15:37:43 -06:00
dc214e878f Add annotations to shot gql 2024-07-15 15:32:21 -06:00
d669dba320 Add getUsernames operation 2024-07-14 00:16:02 -06:00
235f4a58e9 Add getUsernames 2024-07-13 23:43:18 -06:00
03c1d08d8c Request isAdmin in getLoggedInUser 2024-07-13 17:47:41 -06:00
cc36a8b51d Add isAdmin 2024-07-13 17:40:30 -06:00
d743ad83e3 Merge pull request 'Expand GQL Interfaces To Accomodate Multiple Stream Types' (#16) from mk/extend-to-additional-stream-types into master
Reviewed-on: #16
2024-07-12 22:08:57 -06:00
194c258dcd Expand GQL Interfaces To Accomodate Multiple Stream Types
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-07-12 18:50:50 -06:00
e0e1ae1108 Merge pull request 'Add new filters' (#15) from dean/add-new-filters into master
Reviewed-on: #15
2024-07-12 17:54:42 -06:00
ee73443374 Add new filters
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-07-12 23:52:06 +00:00
88801f9186 Add not support to filter input gql 2024-07-10 16:17:32 -06:00
524d469a0d Merge pull request 'Add get shot annotations query' (#14) from ivan/add-get-shot-annotations-query into master
Reviewed-on: #14
2024-07-08 14:49:05 -06:00
c7b225ff00 Add get shot annotations query
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-07-08 13:26:03 -06:00
ba84f6d9c0 Merge pull request 'Create shot annotations gql' (#13) from kat/shot-annotations into master
Reviewed-on: #13
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-07-08 11:03:47 -06:00
6a72f9f43f Create shot annotations gql
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-07-08 10:56:05 -06:00
efc0b2d858 Add column property query builder filters 2024-07-02 16:55:30 -06:00
f140807886 Merge pull request 'Add id's to new getMetricForVideo queries to prevent cache merge issues' (#12) from loewy/add-ids-to-get-video-calls into master
Reviewed-on: #12
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-06-05 13:34:41 -06:00
37a13f1418 add id's to new getVideo w/ metric queries to prevent cache merge issues
All checks were successful
Tests / Tests (pull_request) Successful in 12s
2024-06-05 11:51:15 -07:00
1cc0660a93 Merge pull request 'Add operations to get trimmed getVideo queries for metrics' (#11) from loewy/add-get-metrics-for-video-queries into master
Reviewed-on: #11
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-06-05 01:28:16 -06:00
14da2ae388 add averageTimePerShot, elapsedTime and MedianRun forVideo queries
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-06-04 23:20:47 -07:00
9ee4d43c89 Merge pull request 'Restructure protobuf/add annotations' (#10) from ivan/restructure-protobuf-types-and-add-annotations into master
Reviewed-on: #10
2024-05-24 20:26:00 -06:00
fcac551806 Restructure protobuf/add annotations
All checks were successful
Tests / Tests (pull_request) Successful in 14s
2024-05-24 20:24:24 -06:00
044d8fa46d Merge pull request 'mk/implement-one-of' (#9) from mk/implement-one-of into master
Reviewed-on: #9
2024-05-22 16:49:28 -06:00
33f5404820 Actually incorperate one of stuff
All checks were successful
Tests / Tests (pull_request) Successful in 6s
2024-05-22 16:41:24 -06:00
04a30e67d3 Add gql mods for implementing one-of 2024-05-22 15:13:18 -06:00
08183ed952 Merge pull request 'rename pkg to rbproto' (#8) from mk/fixing-rbproto into master
Reviewed-on: #8
2024-05-22 12:01:23 -06:00
4fac231c43 rename pkg to rbproto
All checks were successful
Tests / Tests (pull_request) Successful in 7s
2024-05-22 12:00:39 -06:00
30e356e3e0 Add Protobuf with Testing + Codegen (#7)
Reviewed-on: #7
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
Co-authored-by: Mike Kalange <countablecloud@gmail.com>
Co-committed-by: Mike Kalange <countablecloud@gmail.com>
2024-05-22 11:27:54 -06:00
36712557cb Merge pull request 'Add workflow' (#6) from ivan/add-workflow into master
Reviewed-on: #6
2024-05-21 14:34:15 -06:00
24 changed files with 8417 additions and 374 deletions

View File

@ -13,5 +13,5 @@ jobs:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: graphql-codegen causes no changes
- name: codegen causes no changes
run: ./bin/assert-no-changes-wrapper.sh

1
.gitignore vendored
View File

@ -3,3 +3,4 @@ dist
.direnv
/after.txt
/before.txt
**/__pycache__/**

1
README.md Normal file
View File

@ -0,0 +1 @@
# rbgql

View File

@ -4,6 +4,12 @@ git ls-files | xargs md5sum > before.txt
yarn install
yarn graphql-codegen
prettier ./src --write
for proto in $(find ./rbproto -iname '*.proto'); do
name=$(basename "$proto" .proto)
protoc -I=./rbproto --python_out=./rbproto/python --pyi_out=./rbproto/python ./rbproto/shot.proto
yarn pbjs ./rbproto/shot.proto --ts ./rbproto/ts/shot.ts
done
prettier ./rbproto --write
git ls-files | xargs md5sum > after.txt

View File

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

View File

@ -21,7 +21,7 @@
in
with pkgs; {
devShell = mkShell {
buildInputs = [nodejs yarn watchman alejandra nodePackages.prettier just];
buildInputs = [nodejs yarn watchman alejandra nodePackages.prettier just protobuf];
};
});
}

View File

@ -1,4 +1,5 @@
NIX := "LD_LIBRARY_PATH='' nix"
PROTOBUF_DIR := "$PWD/rbproto"
prettier-gql:
#!/usr/bin/env bash
@ -12,3 +13,27 @@ gql-codegen:
gql: gql-codegen prettier-gql
protobuf-compile-a-python name:
protoc -I={{ PROTOBUF_DIR }} --python_out={{ PROTOBUF_DIR }}/python --pyi_out={{ PROTOBUF_DIR }}/python {{ PROTOBUF_DIR }}/shot.proto
protobuf-compile-a-js name:
#!/usr/bin/env bash
set -euxo pipefail
{{NIX}} develop --impure --command bash -c 'yarn pbjs {{ PROTOBUF_DIR }}/shot.proto --ts {{ PROTOBUF_DIR }}/ts/shot.ts && yarn prettier ./rbproto --write'
protobuf-compile-all-js:
#!/usr/bin/env bash
for proto in $(find {{ PROTOBUF_DIR }} -iname '*.proto'); do
name=$(basename "$proto" .proto)
just protobuf-compile-a-js $name
done
protobuf-compile-all-python:
#!/usr/bin/env bash
for proto in $(find {{ PROTOBUF_DIR }} -iname '*.proto'); do
name=$(basename "$proto" .proto)
just protobuf-compile-a-python $name
done
protobuf-compile-everything: protobuf-compile-all-js protobuf-compile-all-python

View File

@ -18,6 +18,7 @@
"@graphql-codegen/typescript-operations": "^4.0.1",
"@graphql-codegen/typescript-react-apollo": "^4.2.0",
"graphql": "^16.8.1",
"pbjs": "^0.0.14",
"prettier": "^3.2.5",
"prettier-plugin-organize-imports": "^3.2.4"
},

16
pyproject.toml Normal file
View File

@ -0,0 +1,16 @@
[tool.poetry]
name = "rbproto"
version = "0.1.0"
description = ""
authors = ["Mike Kalange <countablecloud@gmail.com>"]
readme = "README.md"
packages = [{include = "rbproto"}]
[tool.poetry.dependencies]
python = ">=3.10,<=3.13"
protobuf = "^4.25.3"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

1
rbproto/__init__.py Normal file
View File

@ -0,0 +1 @@
from .python.shot_pb2 import * # noqa: F401

View File

@ -0,0 +1,49 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: shot.proto
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
from google.protobuf.internal import builder as _builder
# @@protoc_insertion_point(imports)
_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\"\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()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'shot_pb2', _globals)
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
_globals['_COLLISIONINFO_BALLIDENTIFIERSENTRY']._options = None
_globals['_COLLISIONINFO_BALLIDENTIFIERSENTRY']._serialized_options = b'8\001'
_globals['_BOX']._serialized_start=31
_globals['_BOX']._serialized_end=94
_globals['_POINT']._serialized_start=96
_globals['_POINT']._serialized_end=125
_globals['_BALLDETECTION']._serialized_start=127
_globals['_BALLDETECTION']._serialized_end=254
_globals['_RLEBALLDETECTION']._serialized_start=256
_globals['_RLEBALLDETECTION']._serialized_end=340
_globals['_RLEDETECTIONHISTORY']._serialized_start=342
_globals['_RLEDETECTIONHISTORY']._serialized_end=418
_globals['_DETECTIONHISTORY']._serialized_start=420
_globals['_DETECTIONHISTORY']._serialized_end=490
_globals['_COLLISIONINFO']._serialized_start=493
_globals['_COLLISIONINFO']._serialized_end=745
_globals['_COLLISIONINFO_BALLIDENTIFIERSENTRY']._serialized_start=667
_globals['_COLLISIONINFO_BALLIDENTIFIERSENTRY']._serialized_end=745
_globals['_PATH']._serialized_start=748
_globals['_PATH']._serialized_end=1080
_globals['_IDENTIFIERHISTORY']._serialized_start=1082
_globals['_IDENTIFIERHISTORY']._serialized_end=1164
_globals['_KEYBALLIDENTIFIERS']._serialized_start=1167
_globals['_KEYBALLIDENTIFIERS']._serialized_end=1411
_globals['_SHOT']._serialized_start=1414
_globals['_SHOT']._serialized_end=1582
# @@protoc_insertion_point(module_scope)

135
rbproto/python/shot_pb2.pyi Normal file
View File

@ -0,0 +1,135 @@
from google.protobuf.internal import containers as _containers
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
DESCRIPTOR: _descriptor.FileDescriptor
class Box(_message.Message):
__slots__ = ["left", "top", "width", "height"]
LEFT_FIELD_NUMBER: _ClassVar[int]
TOP_FIELD_NUMBER: _ClassVar[int]
WIDTH_FIELD_NUMBER: _ClassVar[int]
HEIGHT_FIELD_NUMBER: _ClassVar[int]
left: float
top: float
width: float
height: float
def __init__(self, left: _Optional[float] = ..., top: _Optional[float] = ..., width: _Optional[float] = ..., height: _Optional[float] = ...) -> None: ...
class Point(_message.Message):
__slots__ = ["x", "y"]
X_FIELD_NUMBER: _ClassVar[int]
Y_FIELD_NUMBER: _ClassVar[int]
x: float
y: float
def __init__(self, x: _Optional[float] = ..., y: _Optional[float] = ...) -> None: ...
class BallDetection(_message.Message):
__slots__ = ["plane_position", "annotation", "interpolated"]
PLANE_POSITION_FIELD_NUMBER: _ClassVar[int]
ANNOTATION_FIELD_NUMBER: _ClassVar[int]
INTERPOLATED_FIELD_NUMBER: _ClassVar[int]
plane_position: Point
annotation: Box
interpolated: bool
def __init__(self, plane_position: _Optional[_Union[Point, _Mapping]] = ..., annotation: _Optional[_Union[Box, _Mapping]] = ..., interpolated: bool = ...) -> None: ...
class RLEBallDetection(_message.Message):
__slots__ = ["detection", "count"]
DETECTION_FIELD_NUMBER: _ClassVar[int]
COUNT_FIELD_NUMBER: _ClassVar[int]
detection: BallDetection
count: int
def __init__(self, detection: _Optional[_Union[BallDetection, _Mapping]] = ..., count: _Optional[int] = ...) -> None: ...
class RLEDetectionHistory(_message.Message):
__slots__ = ["detections"]
DETECTIONS_FIELD_NUMBER: _ClassVar[int]
detections: _containers.RepeatedCompositeFieldContainer[RLEBallDetection]
def __init__(self, detections: _Optional[_Iterable[_Union[RLEBallDetection, _Mapping]]] = ...) -> None: ...
class DetectionHistory(_message.Message):
__slots__ = ["detections"]
DETECTIONS_FIELD_NUMBER: _ClassVar[int]
detections: _containers.RepeatedCompositeFieldContainer[BallDetection]
def __init__(self, detections: _Optional[_Iterable[_Union[BallDetection, _Mapping]]] = ...) -> None: ...
class CollisionInfo(_message.Message):
__slots__ = ["source", "ball_identifiers", "wall_identifier", "frame_index", "static"]
class BallIdentifiersEntry(_message.Message):
__slots__ = ["key", "value"]
KEY_FIELD_NUMBER: _ClassVar[int]
VALUE_FIELD_NUMBER: _ClassVar[int]
key: int
value: Point
def __init__(self, key: _Optional[int] = ..., value: _Optional[_Union[Point, _Mapping]] = ...) -> None: ...
SOURCE_FIELD_NUMBER: _ClassVar[int]
BALL_IDENTIFIERS_FIELD_NUMBER: _ClassVar[int]
WALL_IDENTIFIER_FIELD_NUMBER: _ClassVar[int]
FRAME_INDEX_FIELD_NUMBER: _ClassVar[int]
STATIC_FIELD_NUMBER: _ClassVar[int]
source: int
ball_identifiers: _containers.MessageMap[int, Point]
wall_identifier: int
frame_index: int
static: bool
def __init__(self, source: _Optional[int] = ..., ball_identifiers: _Optional[_Mapping[int, Point]] = ..., wall_identifier: _Optional[int] = ..., frame_index: _Optional[int] = ..., static: bool = ...) -> None: ...
class Path(_message.Message):
__slots__ = ["start_frame", "end_frame", "detections", "rle_detections", "not_present", "is_static", "start_info", "end_info"]
START_FRAME_FIELD_NUMBER: _ClassVar[int]
END_FRAME_FIELD_NUMBER: _ClassVar[int]
DETECTIONS_FIELD_NUMBER: _ClassVar[int]
RLE_DETECTIONS_FIELD_NUMBER: _ClassVar[int]
NOT_PRESENT_FIELD_NUMBER: _ClassVar[int]
IS_STATIC_FIELD_NUMBER: _ClassVar[int]
START_INFO_FIELD_NUMBER: _ClassVar[int]
END_INFO_FIELD_NUMBER: _ClassVar[int]
start_frame: int
end_frame: int
detections: DetectionHistory
rle_detections: RLEDetectionHistory
not_present: bool
is_static: bool
start_info: CollisionInfo
end_info: CollisionInfo
def __init__(self, start_frame: _Optional[int] = ..., end_frame: _Optional[int] = ..., detections: _Optional[_Union[DetectionHistory, _Mapping]] = ..., rle_detections: _Optional[_Union[RLEDetectionHistory, _Mapping]] = ..., not_present: bool = ..., is_static: bool = ..., start_info: _Optional[_Union[CollisionInfo, _Mapping]] = ..., end_info: _Optional[_Union[CollisionInfo, _Mapping]] = ...) -> None: ...
class IdentifierHistory(_message.Message):
__slots__ = ["ball_identifier", "paths"]
BALL_IDENTIFIER_FIELD_NUMBER: _ClassVar[int]
PATHS_FIELD_NUMBER: _ClassVar[int]
ball_identifier: int
paths: _containers.RepeatedCompositeFieldContainer[Path]
def __init__(self, ball_identifier: _Optional[int] = ..., paths: _Optional[_Iterable[_Union[Path, _Mapping]]] = ...) -> None: ...
class KeyBallIdentifiers(_message.Message):
__slots__ = ["cue_ball", "object_ball", "target_ball", "contact_sequence", "cue_ball_id", "object_ball_id", "target_ball_id"]
CUE_BALL_FIELD_NUMBER: _ClassVar[int]
OBJECT_BALL_FIELD_NUMBER: _ClassVar[int]
TARGET_BALL_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
object_ball: int
target_ball: int
contact_sequence: _containers.RepeatedScalarFieldContainer[int]
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):
__slots__ = ["identifier_histories", "key_balls", "start_index", "end_index"]
IDENTIFIER_HISTORIES_FIELD_NUMBER: _ClassVar[int]
KEY_BALLS_FIELD_NUMBER: _ClassVar[int]
START_INDEX_FIELD_NUMBER: _ClassVar[int]
END_INDEX_FIELD_NUMBER: _ClassVar[int]
identifier_histories: _containers.RepeatedCompositeFieldContainer[IdentifierHistory]
key_balls: KeyBallIdentifiers
start_index: int
end_index: int
def __init__(self, identifier_histories: _Optional[_Iterable[_Union[IdentifierHistory, _Mapping]]] = ..., key_balls: _Optional[_Union[KeyBallIdentifiers, _Mapping]] = ..., start_index: _Optional[int] = ..., end_index: _Optional[int] = ...) -> None: ...

77
rbproto/shot.proto Normal file
View File

@ -0,0 +1,77 @@
syntax = "proto3";
package serialized_shot;
message Box {
float left = 1;
float top = 2;
float width = 3;
float height = 4;
}
message Point {
float x = 1;
float y = 2;
}
message BallDetection {
Point plane_position = 1;
Box annotation = 2;
bool interpolated = 3;
}
message RLEBallDetection {
BallDetection detection = 1;
uint32 count = 2;
}
message RLEDetectionHistory { repeated RLEBallDetection detections = 1; }
message DetectionHistory { repeated BallDetection detections = 1; }
message CollisionInfo {
uint32 source = 1;
map<uint32, Point> ball_identifiers = 2;
uint32 wall_identifier = 3;
uint32 frame_index = 4;
bool static = 5;
}
message Path {
uint32 start_frame = 1;
uint32 end_frame = 2;
oneof detection_history {
DetectionHistory detections = 3;
RLEDetectionHistory rle_detections = 4;
bool not_present = 5;
}
bool is_static = 6;
CollisionInfo start_info = 7;
CollisionInfo end_info = 8;
}
message IdentifierHistory {
uint32 ball_identifier = 1;
repeated Path paths = 2;
}
message KeyBallIdentifiers {
uint32 cue_ball = 1;
uint32 object_ball = 2;
uint32 target_ball = 3;
// For now this will just be cue->object/target->target
// Long term this will potentially represent a linked list
// of all balls in a shot.
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 {
repeated IdentifierHistory identifier_histories = 3;
KeyBallIdentifiers key_balls = 4;
uint32 start_index = 5;
uint32 end_index = 6;
}

1628
rbproto/ts/shot.ts Normal file

File diff suppressed because it is too large Load Diff

25
src/client-schema.gql Normal file
View File

@ -0,0 +1,25 @@
# 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

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

View File

@ -1,3 +1,4 @@
# DO NOT USE: use getVideoFeed instead
query GetFeed(
$limit: Int! = 5
$after: String = null
@ -21,8 +22,10 @@ query GetFeed(
elapsedTime
screenshotUri
stream {
id
isCompleted
}
tableSize
tags {
tagClasses {
name
@ -36,3 +39,60 @@ query GetFeed(
}
}
}
fragment VideoCardFields on VideoGQL {
id
owner {
id
username
profileImageUri
}
name
screenshotUri
totalShotsMade
totalShots
makePercentage
createdAt
updatedAt
startTime
endTime
elapsedTime
screenshotUri
stream {
id
isCompleted
}
tableSize
tags {
tagClasses {
name
}
name
}
currentProcessing {
id
errors {
message
}
status
statuses {
status
}
}
}
query GetVideoFeed(
$limit: Int! = 5
$after: String = null
$filters: VideoFilterInput = null
) {
getFeedVideos(limit: $limit, after: $after, filters: $filters) {
videos {
...VideoCardFields
}
pageInfo {
hasNextPage
endCursor
}
}
}

View File

@ -1,38 +1,176 @@
query GetShots(
$filterInput: FilterInput!
$includeCreatedAt: Boolean! = false
$includeUpdatedAt: Boolean! = false
$includeCueObjectFeatures: Boolean! = false
$includePocketingIntentionFeatures: Boolean! = false
$includeCueObjectDistance: Boolean! = false
$includeCueObjectAngle: Boolean! = false
$includeCueBallSpeed: Boolean! = false
$includeShotDirection: Boolean! = false
$includeTargetPocketDistance: Boolean! = false
$includeMake: Boolean! = false
$includeIntendedPocketType: Boolean! = false
) {
query GetSerializedShotPaths($filterInput: FilterInput!) {
getShots(filterInput: $filterInput) {
id
videoId
startFrame
endFrame
user {
id
}
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)
}
pocketingIntentionFeatures
@include(if: $includePocketingIntentionFeatures) {
targetPocketDistance @include(if: $includeTargetPocketDistance)
make @include(if: $includeMake)
intendedPocketType @include(if: $includeIntendedPocketType)
serializedShotPaths {
b64EncodedBuffer
}
}
}
query GetShotAnnotationTypes {
getShotAnnotationTypes {
id
name
}
}
mutation UpdateShotAnnotations(
$shotId: Int!
$annotations: [UpdateAnnotationInputGQL!]!
) {
updateShotAnnotations(shotId: $shotId, annotations: $annotations) {
shot {
id
annotations {
shotId
type {
id
name
}
notes
}
}
error {
shotId
msg
}
}
}
## Should be deprecated
query GetShotsWithVideoGql(
$filterInput: FilterInput!
$shotsOrdering: GetShotsOrdering
$limit: Int
) {
getOrderedShots(
filterInput: $filterInput
shotsOrdering: $shotsOrdering
limit: $limit
) {
shots {
id
videoId
video {
screenshotUri
endTime
}
}
}
}
query GetShotsWithJustIds(
$filterInput: FilterInput!
$shotsOrdering: GetShotsOrdering
$limit: Int
) {
getOrderedShots(
filterInput: $filterInput
shotsOrdering: $shotsOrdering
limit: $limit
) {
shots {
id
videoId
}
}
}
## Reserved for playlists (which are created from a filter)
query GetShotsWithMetadataFilterResult(
$filterInput: FilterInput!
$shotsOrdering: GetShotsOrdering
$limit: Int
$ids: [Int!]
$countRespectsLimit: Boolean
) {
getOrderedShots(
filterInput: $filterInput
shotsOrdering: $shotsOrdering
limit: $limit
ids: $ids
countRespectsLimit: $countRespectsLimit
) {
count
shots {
...ShotWithAllFeatures
}
ids
}
}
# TODO: Delete
query GetShotsWithMetadata(
$filterInput: FilterInput!
$shotsPagination: GetShotsPagination
$limit: Int
$ids: [Int!]
) {
getShotsWithMetadata(
filterInput: $filterInput
shotsPagination: $shotsPagination
limit: $limit
ids: $ids
) {
count
shots {
...ShotWithAllFeatures
}
ids
}
}
query GetShotsByIds($ids: [Int!]!) {
getShotsByIds(ids: $ids) {
...ShotWithAllFeatures
}
}
fragment ShotWithAllFeatures on ShotGQL {
id
videoId
startFrame
endFrame
startTime @client
endTime @client
user {
id
}
falsePositiveScore
createdAt
updatedAt
cueObjectFeatures {
cueObjectDistance
cueObjectAngle
cueBallSpeed
shotDirection
spinType
}
pocketingIntentionFeatures {
make
targetPocketDistance
targetPocketAngle
targetPocketAngleDirection
marginOfErrorInDegrees
intendedPocketType
}
pocketingIntentionInfo {
ballId
pocketId
pathMetadataIndex
}
serializedShotPaths {
b64EncodedBuffer
}
annotations {
shotId
type {
id
name
}
notes
}
}

View File

@ -1,9 +1,20 @@
mutation getProfileImageUploadLink($fileExt: String = ".png") {
getProfileImageUploadLink(fileExt: $fileExt) {
uploadUrl
headers {
key
value
value {
... on UploadLink {
uploadUrl
headers {
key
value
}
}
... on GetProfileUploadLinkErrors {
error {
... on TooManyProfileImageUploadsErr {
linksRequested
}
}
}
}
}
}
@ -24,7 +35,9 @@ query getLoggedInUser {
id
firebaseUid
username
isAdmin
profileImageUri
fargoRating
activeVideoId
createdAt
updatedAt
@ -36,3 +49,89 @@ query GetUserPlayTime($userId: Int!) {
totalSeconds
}
}
query getUsernames(
$matchString: String!
$limit: Int = null
$after: String = null
) {
getUsernames(matchString: $matchString, limit: $limit, after: $after)
}
query getUserRelationshipsMatching(
$userId: Int!
$matchString: String!
$limit: Int = null
$after: String = null
) {
getUserRelationshipsMatching(
userId: $userId
matchString: $matchString
limit: $limit
after: $after
) {
relationships {
toUser {
username
id
}
toUserFollows
toUserIsFollowedBy
}
}
}
query GetUserTags {
getUserTags {
id
name
}
}
mutation followUser($followedUserId: Int!) {
followUser(followedUserId: $followedUserId) {
username
id
following {
id
username
}
followers {
id
username
}
}
}
mutation unfollowUser($followedUserId: Int!) {
unfollowUser(followedUserId: $followedUserId) {
username
id
following {
id
username
}
followers {
id
username
}
}
}
query getUserFollowingFollowers {
getLoggedInUser {
id
following {
id
username
}
followers {
id
username
}
}
}
query doesUsernameExist($candidateUsername: String!) {
doesUsernameExist(candidateUsername: $candidateUsername)
}

View File

@ -1,56 +1,21 @@
query GetStreamMonitoringDetails($videoId: Int!) {
getVideo(videoId: $videoId) {
query GetStreamMonitoringDetails($videoId: Int!, $debuggingJson: JSON) {
getVideo(videoId: $videoId, debuggingJson: $debuggingJson) {
id
totalShots
makePercentage
elapsedTime
homographyHistory {
crop {
left
top
width
height
}
pockets {
left
top
width
height
}
sourcePoints {
topLeft {
x
y
}
topSide {
x
y
}
topRight {
x
y
}
bottomLeft {
x
y
}
bottomSide {
x
y
}
bottomRight {
x
y
}
}
currentHomography {
...HomographyInfo
}
stream {
id
linksRequested
uploadsCompleted
segmentProcessingCursor
isCompleted
uploadCompletionCursor
lastIntendedSegmentBound
initPlaylistUploadStatus
}
currentProcessing {
errors {
@ -69,6 +34,7 @@ query GetVideoUpdatePageDetails($videoId: Int!) {
totalShots
makePercentage
elapsedTime
tableSize
tags {
tagClasses {
name
@ -91,14 +57,13 @@ query GetVideoDetails($videoId: Int!) {
elapsedTime
endTime
makePercentage
makePercentage
medianRun
startTime
totalShots
totalShots
totalShotsMade
createdAt
updatedAt
tableSize
owner {
id
firebaseUid
@ -116,21 +81,33 @@ query GetVideoDetails($videoId: Int!) {
query GetVideos($videoIds: [Int!]!) {
getVideos(videoIds: $videoIds) {
...VideoStreamMetadata
}
}
fragment VideoStreamMetadata on VideoGQL {
id
framesPerSecond
stream {
id
playlist {
segmentDurations
}
stream {
id
segments {
uploaded
valid
segmentIndex
endFrameIndex
framesPerSecond
}
streamSegmentType
segments {
uploaded
valid
segmentIndex
endFrameIndex
framesPerSecond
}
}
playlist {
segmentDurations
}
}
query GetVideoForShotTime($videoId: Int!) {
getVideo(videoId: $videoId) {
...VideoStreamMetadata
}
}
query GetVideo($videoId: Int!) {
@ -139,12 +116,148 @@ query GetVideo($videoId: Int!) {
playlist {
segmentDurations
}
homographyHistory {
...HomographyInfo
}
stream {
id
streamSegmentType
segments {
segmentIndex
endFrameIndex
framesPerSecond
}
resolution {
width
height
}
}
}
}
query GetAverageTimePerShotForVideo($videoId: Int!) {
getVideo(videoId: $videoId) {
id
averageTimeBetweenShots
}
}
query GetElapsedTimeForVideo($videoId: Int!) {
getVideo(videoId: $videoId) {
id
elapsedTime
}
}
query GetMedianRunForVideo($videoId: Int!) {
getVideo(videoId: $videoId) {
id
medianRun
}
}
fragment StreamWithEndFrames on UploadStreamGQL {
id
streamSegmentType
segmentEndFrames @client
resolution {
width
height
}
segments {
uploaded
valid
segmentIndex
endFrameIndex
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
}
}
mutation FindPrerecordTableLayout($b64Image: String!, $videoId: Int!) {
findPrerecordTableLayout(b64Image: $b64Image, videoId: $videoId) {
...HomographyInfo
}
}
fragment HomographyInfo on HomographyInfoGQL {
frameIndex
crop {
left
top
width
height
}
pockets {
left
top
width
height
}
sourcePoints {
topLeft {
x
y
}
topSide {
x
y
}
topRight {
x
y
}
bottomLeft {
x
y
}
bottomSide {
x
y
}
bottomRight {
x
y
}
}
}

View File

@ -6,14 +6,79 @@ mutation CreateUploadStream($videoMetadataInput: VideoMetadataInput!) {
mutation GetUploadLink($videoId: Int!, $segmentIndex: Int!) {
getUploadLink(videoId: $videoId, segmentIndex: $segmentIndex) {
uploadUrl
headers {
key
value
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
}
}
}
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
}
}
}
}
}
}
mutation SetSegmentDuration(
$videoId: Int!
$segmentIndex: Int!
$duration: Float!
) {
setSegmentDuration(
videoId: $videoId
segmentIndex: $segmentIndex
duration: $duration
)
}
mutation EditUploadStream(
$videoId: Int!
$videoMetadataInput: VideoMetadataInput!
@ -50,6 +115,7 @@ query GetUploadStreamsWithDetails(
isCompleted
lastIntendedSegmentBound
uploadCompletionCursor
uploadsCompleted
}
}
pageInfo {

View File

@ -4,13 +4,48 @@ type Query {
): [AggregateResultGQL!]!
getBucketSet(keyName: String!): BucketSetGQL
getDeployedConfig: DeployedConfigGQL!
waitFor(duration: Float!): Float!
getVideoMakePercentageIntervals(
videoId: ID!
intervalDuration: Int! = 300
): [MakePercentageIntervalGQL!]!
getShots(filterInput: FilterInput!): [ShotGQL!]!
getMedals(scope: MedalScope!, userId: Int = null): RequestedMedalsGQL!
getOrderedShots(
filterInput: FilterInput!
ids: [Int!] = null
shotsOrdering: GetShotsOrdering = null
limit: Int! = 500
countRespectsLimit: Boolean! = false
): GetShotsResult!
getShotsWithMetadata(
filterInput: FilterInput!
ids: [Int!] = null
shotsPagination: GetShotsPagination = null
limit: Int! = 500
countRespectsLimit: Boolean! = false
): GetShotsResult!
getShots(
filterInput: FilterInput!
shotsPagination: GetShotsPagination = null
limit: Int! = 500
countRespectsLimit: Boolean! = false
): [ShotGQL!]!
getShotsByIds(ids: [Int!]!): [ShotGQL!]!
getShotAnnotationTypes(errorTypes: Boolean = false): [ShotAnnotationTypeGQL!]!
getUser(userId: Int!): UserGQL
doesUsernameExist(candidateUsername: String!): Boolean!
getLoggedInUser: UserGQL
getUsernames(
matchString: String = null
limit: Int = null
after: String = null
): [String!]!
getUserRelationshipsMatching(
userId: Int!
matchString: String = null
limit: Int = 100
after: String = null
): UserRelationshipsResult!
getPlayTime(userId: Int!): UserPlayTimeGQL!
getUserVideos(
userId: Int = null
@ -18,8 +53,14 @@ type Query {
after: String = null
filters: VideoFilterInput = null
): VideoHistoryGQL!
getVideo(videoId: Int!): VideoGQL!
getUserTags: [TagGQL!]!
getVideo(videoId: Int!, debuggingJson: JSON = null): VideoGQL!
getVideos(videoIds: [Int!]!): [VideoGQL!]!
getFeedVideos(
limit: Int! = 5
after: String = null
filters: VideoFilterInput = null
): VideoHistoryGQL!
}
type AggregateResultGQL {
@ -36,6 +77,21 @@ type TargetMetricsGQL {
count: Int!
makePercentage: Float
averageDifficulty: Float
spinTypeCounts: SpinTypeCountsGQL
shotDirectionCounts: ShotDirectionCountsGQL
}
type SpinTypeCountsGQL {
follow: Int!
draw: Int!
center: Int!
unknown: Int!
}
type ShotDirectionCountsGQL {
left: Int!
right: Int!
straight: Int!
}
input AggregateInputGQL {
@ -43,9 +99,10 @@ input AggregateInputGQL {
filterInput: FilterInput
}
input AggregationInput {
bucketSet: BucketSetInputGQL = null
enum: EnumAggregation = null
input AggregationInput @oneOf {
bucketSet: BucketSetInputGQL
enum: EnumAggregation
datetimeRange: DatetimeRangeAggregationInput
}
input BucketSetInputGQL {
@ -62,33 +119,87 @@ input EnumAggregation {
feature: String!
}
input FilterInput {
andFilters: AndFilter = null
orFilters: OrFilter = null
cueObjectDistance: RangeFilter = null
targetPocketDistance: RangeFilter = null
cueObjectAngle: RangeFilter = null
cueBallSpeed: RangeFilter = null
difficulty: RangeFilter = null
intendedPocketType: [PocketEnum!] = null
shotDirection: [ShotDirectionEnum!] = null
videoId: [Int!] = null
userId: [Int!] = null
make: [Boolean!] = null
tags: [VideoTagInput!] = null
input DatetimeRangeAggregationInput {
startDatetime: DateTime = null
endDatetime: DateTime = null
interval: TimeInterval!
feature: String! = "created_at"
}
input AndFilter {
filters: [FilterInput!]!
"""
Date with time (isoformat)
"""
scalar DateTime
input TimeInterval @oneOf {
timedelta: TimeDeltaGQL
aligned: AlignedIntervalEnum
}
input OrFilter {
filters: [FilterInput!]!
input TimeDeltaGQL {
days: Int = 0
weeks: Int = 0
months: Int = 0
years: Int = 0
}
input RangeFilter {
enum AlignedIntervalEnum {
MONTH
YEAR
WEEK
DAY
}
input FilterInput @oneOf {
andFilters: [FilterInput!]
orFilters: [FilterInput!]
notFilter: FilterInput
cueObjectDistance: FloatRangeFilter
targetPocketDistance: FloatRangeFilter
cueObjectAngle: FloatRangeFilter
cueBallSpeed: FloatRangeFilter
difficulty: FloatRangeFilter
intendedPocketType: [PocketEnum!]
shotDirection: [ShotDirectionEnum!]
videoId: [Int!]
userId: [Int!]
username: [String!]
fargoRating: FloatRangeFilter
make: [Boolean!]
tags: [VideoTagInput!]
annotations: [ShotAnnotationInput!]
isStraight: [Boolean!]
isRight: [Boolean!]
isLeft: [Boolean!]
isLeftMiss: [Boolean!]
isRightMiss: [Boolean!]
isDirect: [Boolean!]
tableSize: FloatRangeFilter
bankAngle: FloatRangeFilter
bankDistance: FloatRangeFilter
kickAngle: FloatRangeFilter
kickDistance: FloatRangeFilter
cueAngleAfterObject: FloatRangeFilter
spinType: [SpinTypeEnum!]
cueSpeedAfterObject: FloatRangeFilter
falsePositiveScore: FloatRangeFilter
backcut: [Boolean!]
targetPocketAngleDirection: [ShotDirectionEnum!]
targetPocketAngle: FloatRangeFilter
missAngleInDegrees: FloatRangeFilter
marginOfErrorInDegrees: FloatRangeFilter
createdAt: DateRangeFilter
totalDistance: FloatRangeFilter
runLength: FloatRangeFilter
}
input FloatRangeFilter {
lessThan: Float = null
greaterThanEqualTo: Float = null
greaterThan: Float = null
includeOnNone: Boolean! = false
lessThanInclusive: Boolean! = false
greaterThanInclusive: Boolean! = true
}
enum PocketEnum {
@ -111,6 +222,31 @@ input VideoTagClassInput {
name: String!
}
input ShotAnnotationInput {
name: String!
}
enum SpinTypeEnum {
DRAW
FOLLOW
CENTER
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 {
keyName: String!
feature: String!
@ -127,6 +263,7 @@ type DeployedConfigGQL {
firebase: Boolean!
devMode: Boolean!
environment: String!
minimumAllowedAppVersion: String!
}
type MakePercentageIntervalGQL {
@ -134,6 +271,58 @@ type MakePercentageIntervalGQL {
elapsedTime: Float!
}
type RequestedMedalsGQL {
distanceOver66: MedalGQL
distanceOver78: MedalGQL
distanceOver90: MedalGQL
runLength3: MedalGQL
runLength5: MedalGQL
runLength8: MedalGQL
runLength10: MedalGQL
runLength15: MedalGQL
runLength20: MedalGQL
runLength25: MedalGQL
runLength30: MedalGQL
runLength40: MedalGQL
runLength50: MedalGQL
totalMakes25: MedalGQL
totalMakes50: MedalGQL
totalMakes75: MedalGQL
totalMakes100: MedalGQL
totalMakes200: MedalGQL
totalMakes300: MedalGQL
totalMakes400: MedalGQL
totalMakes500: MedalGQL
totalMakes750: MedalGQL
totalMakes1000: MedalGQL
dayStreak2: MedalGQL
dayStreak3: MedalGQL
dayStreak4: MedalGQL
dayStreak5: MedalGQL
dayStreak6: MedalGQL
dayStreak7: MedalGQL
dayStreak14: MedalGQL
dayStreak21: MedalGQL
dayStreak30: MedalGQL
dayStreak60: MedalGQL
dayStreak90: MedalGQL
}
type MedalGQL {
count: Int!
}
input MedalScope @oneOf {
videoId: Int
interval: TimeInterval
}
type GetShotsResult {
shots: [ShotGQL!]!
count: Int
ids: [Int!]!
}
type ShotGQL {
id: Int!
videoId: Int!
@ -143,20 +332,21 @@ type ShotGQL {
updatedAt: DateTime
cueObjectFeatures: CueObjectFeaturesGQL
pocketingIntentionFeatures: PocketingIntentionFeaturesGQL
pocketingIntentionInfo: PocketingIntentionInfoGQL
bankFeatures: BankFeaturesGQL
serializedShotPaths: SerializedShotPathsGQL
user: UserGQL
annotations: [ShotAnnotationGQL!]!
falsePositiveScore: Float
video: VideoGQL
}
"""
Date with time (isoformat)
"""
scalar DateTime
type CueObjectFeaturesGQL {
cueObjectDistance: Float
cueObjectAngle: Float
cueBallSpeed: Float
shotDirection: ShotDirectionEnum
spinType: SpinTypeEnum
}
type PocketingIntentionFeaturesGQL {
@ -164,6 +354,25 @@ type PocketingIntentionFeaturesGQL {
make: Boolean
intendedPocketType: PocketEnum
difficulty: Float
targetPocketAngle: Float
targetPocketAngleDirection: ShotDirectionEnum
marginOfErrorInDegrees: Float
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 {
@ -177,23 +386,38 @@ enum WallTypeEnum {
SHORT
}
type SerializedShotPathsGQL {
b64EncodedBuffer: String
}
type UserGQL {
id: Int!
firebaseUid: String!
firebaseUid: String
username: String!
isAdmin: Boolean
fargoRating: Int
activeVideoId: Int
profileImageUri: String
createdAt: DateTime
updatedAt: DateTime
videosPrivateByDefault: Boolean
following: [UserGQL!]
followers: [UserGQL!]
}
type UserPlayTimeGQL {
totalSeconds: Float!
type ShotAnnotationGQL {
shotId: Int!
type: ShotAnnotationTypeGQL!
creator: UserGQL!
notes: String!
errorDefault: Boolean!
createdAt: DateTime
updatedAt: DateTime
}
type VideoHistoryGQL {
videos: [VideoGQL!]!
pageInfo: PageInfoGQL!
type ShotAnnotationTypeGQL {
id: Int!
name: String!
}
type VideoGQL {
@ -213,9 +437,12 @@ type VideoGQL {
endTime: DateTime
elapsedTime: Float
framesPerSecond: Float!
tableSize: Float!
private: Boolean!
stream: UploadStreamGQL
playlist: HLSPlaylistGQL
tags: [VideoTag!]!
currentHomography: HomographyInfoGQL
homographyHistory: [HomographyInfoGQL!]!
currentProcessing: VideoProcessingGQL
}
@ -227,12 +454,21 @@ type UploadStreamGQL {
segmentProcessingCursor: Int!
lastIntendedSegmentBound: Int
isCompleted: Boolean!
initPlaylistUploadStatus: InitPlaylistUploadStatusEnum
lowestUnuploadedSegmentIndex: Int!
uploadCompletionCursor: Int!
errors: [StreamErrorGQL!]!
createdAt: DateTime!
updatedAt: DateTime!
segments: [UploadSegmentGQL!]!
resolution: VideoResolutionGQL!
streamSegmentType: StreamSegmentTypeEnum!
}
enum InitPlaylistUploadStatusEnum {
NOT_APPLICABLE
NOT_UPLOADED
UPLOADED
}
type StreamErrorGQL {
@ -245,10 +481,20 @@ type UploadSegmentGQL {
valid: Boolean!
endFrameIndex: Int
framesPerSecond: Float
durationsInSeconds: Float
durationInSeconds: Float
linksRequested: Int!
}
type VideoResolutionGQL {
width: Int
height: Int
}
enum StreamSegmentTypeEnum {
FRAGMENTED_MP4
RB_CHUNKED_MP4
}
type HLSPlaylistGQL {
videoId: Int!
m3u8Text: String!
@ -265,6 +511,7 @@ type VideoTagClass {
}
type HomographyInfoGQL {
id: Int!
frameIndex: Int!
crop: BoundingBoxGQL!
pockets: [BoundingBoxGQL!]!
@ -294,7 +541,10 @@ type IntPoint2D {
}
type VideoProcessingGQL {
id: Int!
errors: [VideoProcessingErrorGQL!]!
status: ProcessingStatusEnum!
statuses: [VideoProcessingStatusGQL!]!
}
type VideoProcessingErrorGQL {
@ -303,6 +553,82 @@ type VideoProcessingErrorGQL {
endSegmentIndex: Int
}
enum ProcessingStatusEnum {
STARTED
FAILED
SUCCEEDED
SUSPENDED
CREATED
QUEUED
RUNNING
REEXTRACTING_FEATURES
}
type VideoProcessingStatusGQL {
status: ProcessingStatusEnum!
appVersion: String!
sequenceId: Int!
createdAt: 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 {
createdAfter: CreatedAfter!
startFrameAfter: Int!
}
input CreatedAfter @oneOf {
videoId: Int
createdAt: DateTime
}
type UserRelationshipsResult {
inquiringUser: UserGQL!
relationships: [UserRelationship!]!
}
type UserRelationship {
toUser: UserGQL!
toUserFollows: Boolean!
toUserIsFollowedBy: Boolean!
}
type UserPlayTimeGQL {
totalSeconds: Float!
}
type VideoHistoryGQL {
videos: [VideoGQL!]!
pageInfo: PageInfoGQL!
}
type PageInfoGQL {
hasNextPage: Boolean!
endCursor: String
@ -313,15 +639,50 @@ input VideoFilterInput {
requireCursorCompletion: Boolean! = true
}
type TagGQL {
name: String!
id: Int!
group: String
}
"""
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).
"""
scalar JSON
@specifiedBy(
url: "https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf"
)
type Mutation {
createBucketSet(params: CreateBucketSetInput!): BucketSetGQL!
setLoggerLevel(path: String!, level: String!): Boolean!
getProfileImageUploadLink(fileExt: String = ".png"): GetUploadLinkReturn!
addAnnotationToShot(
shotId: Int!
annotationName: String!
notes: String = null
): AddShotAnnotationReturn!
updateShotAnnotations(
shotId: Int!
annotations: [UpdateAnnotationInputGQL!]!
): UpdateShotAnnotationReturn!
getProfileImageUploadLink(
fileExt: String = ".png"
): GetProfileUploadLinkReturn!
editProfileImageUri(profileImageUri: String!): UserGQL!
editUser(input: EditUserInputGQL!): UserGQL!
followUser(followedUserId: Int!): UserGQL!
unfollowUser(followedUserId: Int!): UserGQL!
findPrerecordTableLayout(b64Image: String!, videoId: Int!): HomographyInfoGQL
createUploadStream(
videoMetadata: VideoMetadataInput!
): CreateUploadStreamReturn!
getUploadLink(videoId: Int!, segmentIndex: Int!): GetUploadLinkReturn!
getHlsInitUploadLink(videoId: Int!): GetUploadLinkReturn!
setSegmentDuration(
videoId: Int!
segmentIndex: Int!
duration: Float!
): Boolean!
editUploadStream(videoId: Int!, videoMetadata: VideoMetadataInput!): Boolean!
deleteVideo(videoId: Int!): Boolean!
}
@ -332,7 +693,54 @@ input CreateBucketSetInput {
buckets: [BucketInputGQL!]!
}
type GetUploadLinkReturn {
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 UpdateShotAnnotationReturn {
shot: ShotGQL
error: DoesNotOwnShotErr
}
input UpdateAnnotationInputGQL {
name: String!
notes: String = null
}
type GetProfileUploadLinkReturn {
value: UploadLinkGetProfileUploadLinkErrors!
}
union UploadLinkGetProfileUploadLinkErrors =
UploadLink
| GetProfileUploadLinkErrors
type UploadLink {
uploadUrl: String!
headers: [Header]!
}
@ -342,6 +750,20 @@ type Header {
value: String!
}
type GetProfileUploadLinkErrors {
error: TooManyProfileImageUploadsErr!
}
type TooManyProfileImageUploadsErr {
linksRequested: Int!
}
input EditUserInputGQL {
username: String = null
fargoRating: Int = null
videosPrivateByDefault: Boolean = null
}
type CreateUploadStreamReturn {
videoId: Int!
}
@ -351,26 +773,61 @@ input VideoMetadataInput {
startTime: DateTime = null
endTime: DateTime = null
gameType: String = null
tableSize: String = null
uploadStreamMetadataInput: UploadStreamMetadataInput = null
tableSize: Float = null
lastIntendedSegmentBound: Int = null
streamSegmentType: StreamSegmentTypeEnum = null
private: Boolean = null
endStream: Boolean! = false
resolution: VideoResolution = 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
input VideoResolution {
width: Int!
height: Int!
}
enum DeviceTypeEnum {
IOS
ANDROID
BROWSER
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!
}

View File

@ -1553,6 +1553,11 @@ colorette@^2.0.16:
resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a"
integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==
commander@4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-4.0.1.tgz#b67622721785993182e807f4883633e6401ba53c"
integrity sha512-IPF4ouhCP+qdlcmCedhxX4xiGBPyigb8v5NeUp+0LyhwLgxMqyp3S0vl7TAPfS/hiP7FC3caI/PB9lTmP8r1NA==
common-tags@1.8.2:
version "1.8.2"
resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6"
@ -2538,6 +2543,14 @@ path-type@^4.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
pbjs@^0.0.14:
version "0.0.14"
resolved "https://registry.yarnpkg.com/pbjs/-/pbjs-0.0.14.tgz#5ab3d4a5f06a9ab78dd320c63f72877120d4c48d"
integrity sha512-F4aA0ojrQ37kxFPOg4yRLP/vxb76rYQwMQigmVEljYlA7hZKmjaWjP6IkRn4nA0NdIj4Xxe4iqWrrIhJy+MwWQ==
dependencies:
commander "4.0.1"
protocol-buffers-schema "3.1.0"
picocolors@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
@ -2574,6 +2587,11 @@ prop-types@^15.7.2:
object-assign "^4.1.1"
react-is "^16.13.1"
protocol-buffers-schema@3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.1.0.tgz#d8a819549ead3e6bd189ebe9e50e96636bbc5cc7"
integrity sha512-1g9zFjLFhGN1Dc5UVO8D2loVslp6sVxk5sJqgD66CuWUITh2gOaTLRN/pIakGFfB6e0nNF6hImrYFDurEsA1UQ==
punycode@^1.3.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"