forked from OpenBeta/openbeta-graphql
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMediaObjectTypes.ts
More file actions
133 lines (116 loc) · 2.58 KB
/
MediaObjectTypes.ts
File metadata and controls
133 lines (116 loc) · 2.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
import mongoose from 'mongoose'
import { MUUID } from 'uuid-mongodb'
import { Point } from '@turf/helpers'
export type ImageFormatType = 'jpeg' | 'png' | 'webp' | 'avif'
export interface MediaObject {
_id: mongoose.Types.ObjectId
userUuid: MUUID
mediaUrl: string
width: number
height: number
format: ImageFormatType
createdAt: Date
size: number
entityTags?: EntityTag[]
}
export interface EntityTag {
_id: mongoose.Types.ObjectId
targetId: MUUID
type: number
ancestors: string
climbName?: string
areaName: string
lnglat?: Point
topoData?: object
}
export interface MediaByUsers {
username: string
userUuid: MUUID
mediaWithTags: MediaObject[]
}
export interface MediaForFeedInput {
uuidStr?: string
maxUsers?: number
maxFiles?: number
includesNoEntityTags?: boolean
}
export interface TagByUser {
username?: string
userUuid: MUUID
total: number
}
export interface AllTimeTagStats {
totalMediaWithTags: number
byUsers: TagByUser[]
}
export interface TagsLeaderboardType {
allTime: AllTimeTagStats
}
/**
* For creating a new Media object doc
*/
export type NewMediaObjectDoc = Omit<MediaObject, '_id' | 'createdAt'>
export interface UserMediaGQLQueryInput {
userUuid: string
maxFiles?: number
first?: number
after?: string
}
export type UserMediaQueryInput = Omit<UserMediaGQLQueryInput, 'userUuid'> & {
userUuid: MUUID
}
/**
* GQL user input type for remove tag mutation
*/
export interface EntityTagDeleteGQLInput {
mediaId: string
tagId: string
}
/**
* Formal input type for remove tag function
*/
export interface EntityTagDeleteInput {
mediaId: mongoose.Types.ObjectId
tagId: mongoose.Types.ObjectId
}
/**
* GQL user input type for add media mutation
*/
export type MediaObjectGQLInput = Pick<MediaObject, 'mediaUrl' | 'width' | 'height' | 'format' | 'size'> & {
userUuid: string
entityTag?: Omit<AddEntityTagGQLInput, 'mediaId'>
}
/**
* GQL user input for addEntityTag mutation
*/
export interface AddEntityTagGQLInput {
mediaId: string
entityId: string
entityType: number
topoData?: object
}
/**
* Formal input type for addEntityTag function
*/
export type AddTagEntityInput = Pick<AddEntityTagGQLInput, 'entityType' | 'topoData'> & {
mediaId: mongoose.Types.ObjectId
entityUuid: MUUID
}
export interface UserMedia {
userUuid: string
mediaConnection: {
edges: MediaEdge[]
pageInfo: {
hasNextPage: boolean
totalItems: number
endCursor: string | null
}
}
}
interface MediaEdge {
node: MediaObject
cursor: string
}
export interface DeleteMediaGQLInput {
mediaId: string
}