# S3 upload, album, and picture operations # Extracted from vtx-base-api.ts # # CUSTOM CHECKERS FOR PLAN 03: # GetS3UploadUrl: checker = (r) => r?.getUploadUrl?.uploadUrl !== undefined && r?.getUploadUrl?.uploadUrl !== null # GetVtxS3UploadUrl: checker = (r) => r?.getS3UploadUrl?.uploadUrl !== undefined && r?.getS3UploadUrl?.uploadUrl !== null # AddAlbumPictures: checker = (r) => r?.AddAlbumPictures?.result === 'success' || r?.AddAlbumPictures?.result === 'partial' # ============================================================ # FRAGMENTS - Reusable album field selections # ============================================================ fragment AlbumFields on Album { _id label description displayIndex competitionId visibility photos { _id photo { _id name contentType size useType url } } } fragment S3UploadFields on AWSS3UploadUrl { uploadUrl fields { key value } downloadUrl bucket key } # ============================================================ # QUERIES # ============================================================ # getS3UploadUrl method (line 1272) — calls getUploadUrl in schema # Note: method name is getS3UploadUrl but schema query is getUploadUrl query GetS3UploadUrl($input: AWSS3GetUploadDto!) { getUploadUrl(input: $input) { ...S3UploadFields } } # getVtxS3UploadUrl method (line 1354) — calls getS3UploadUrl in schema # Note: method name is getVtxS3UploadUrl but schema query is getS3UploadUrl query GetVtxS3UploadUrl($input: AWSS3GetUploadDto!) { getS3UploadUrl(input: $input) { ...S3UploadFields } } # getAthleteAlbums method (line 8847) — no arguments query GetAthleteAlbums { getAthleteAlbums { ...AlbumFields } } # getPublicAthleteAlbums method (line 8976) query GetPublicAthleteAlbums($athleteId: String!) { getPublicAthleteAlbums(athleteId: $athleteId) { ...AlbumFields } } # getAthleteAlbumsById method (line 9042) — calls getAthleteAlbumId in schema query GetAthleteAlbumsById($input: String!) { getAthleteAlbumId(input: $input) { ...AlbumFields } } # getAndSetAlbumById method (line 9107) query GetAndSetAlbumById($input: String!) { getAndSetAlbumById(input: $input) { ...AlbumFields } } # NOTE: getReceipt and getReceiptUrl are in campaign.graphql (receipt operations are campaign-related) # ============================================================ # MUTATIONS # ============================================================ # addAlbumsPictures method (line 8184) — calls AddAlbumPictures in schema mutation AddAlbumPictures($input: UploadAlbumsPicturesDto!) { AddAlbumPictures(input: $input) { added failedToAdd failureReason { code message } result } } # editAlbumsPictures method (line 8241) — calls editAlbum in schema mutation EditAlbumsPictures($input: UploadAlbumsPicturesDto!) { editAlbum(input: $input) { ...AlbumFields } } # createAthleteAlbum method (line 8309) mutation CreateAthleteAlbum($input: UploadAlbumsPicturesDto!) { createAthleteAlbum(input: $input) { ...AlbumFields } } # deleteAthleteAlbum method (line 8791) mutation DeleteAthleteAlbum($input: DeleteSingleValueDto!) { deleteAthleteAlbum(input: $input) { idToDelete deleted failureReason { code message } } } # reorderAlbums method (line 8911) — calls reorderAlbumIndex in schema mutation ReorderAlbums($input: EditDisplayIndexDto!) { reorderAlbumIndex(input: $input) { _id label description displayIndex photos { _id photo { _id name contentType size useType url } } } } # deleteAlbumFotos method (line 10727) — calls deleteAthletePhotos in schema mutation DeleteAlbumFotos($input: DeleteValuesDto!) { deleteAthletePhotos(input: $input) { deleted failedToDelete failureReason { code message } result } } # deleteUploadedTypeKeyFile method (line 10208) mutation DeleteUploadedTypeKeyFile($input: AWSS3DeleteUseTypeKeyDto!) { deleteUploadedTypeKeyFile(input: $input) { httpStatus result message errors } }