Skip to content

Commit 5bdfc4c

Browse files
committed
feat: updatePlaylistSongRank mutation
1 parent f8f3e7f commit 5bdfc4c

File tree

5 files changed

+97
-1
lines changed

5 files changed

+97
-1
lines changed

apps/web/graphql.schema.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

apps/web/src/api.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export const {
1414
getVideoInfoQuery,
1515
playlistQuery,
1616
updatePlaylistMutation,
17+
updatePlaylistSongRankMutation,
1718
} = getSdk(gqlClient)
1819

1920
export const queryClient = new QueryClient({
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
mutation updatePlaylistSongRankMutation(
2+
$playlistId: ID!
3+
$songId: ID!
4+
$rank: String!
5+
) {
6+
updatePlaylistSongRank(playlistId: $playlistId, songId: $songId, rank: $rank)
7+
}

apps/web/src/server/schema/playlist/playlist-resolver.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,4 +248,45 @@ export class PlaylistResolver {
248248
},
249249
}
250250
}
251+
252+
@Mutation(() => Boolean)
253+
async updatePlaylistSongRank(
254+
@Ctx() ctx: Context,
255+
@Arg('playlistId', () => ID) playlistId: string,
256+
@Arg('songId', () => ID) songId: string,
257+
@Arg('rank') rank: string
258+
): Promise<boolean> {
259+
const session = ctx.session
260+
261+
if (!session?.user) {
262+
throw new Error('Unauthorized')
263+
}
264+
265+
const { userId } = getTableColumns(Playlists)
266+
267+
const [playlist] = await db
268+
.select({
269+
userId,
270+
})
271+
.from(Playlists)
272+
.where(eq(Playlists.id, playlistId))
273+
274+
if (playlist.userId !== session.user.id) {
275+
throw new Error('Unauthorized')
276+
}
277+
278+
await db
279+
.update(PlaylistsToSongs)
280+
.set({
281+
rank,
282+
})
283+
.where(
284+
and(
285+
eq(PlaylistsToSongs.playlistId, playlistId),
286+
eq(PlaylistsToSongs.songId, songId)
287+
)
288+
)
289+
290+
return true
291+
}
251292
}

packages/shared/generated/graphql.ts

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export type Mutation = {
3535
__typename?: "Mutation";
3636
addToPlaylist: Scalars["Boolean"]["output"];
3737
updatePlaylist: Playlist;
38+
updatePlaylistSongRank: Scalars["Boolean"]["output"];
3839
updateUser: UpdateUserOutput;
3940
};
4041

@@ -49,6 +50,12 @@ export type MutationUpdatePlaylistArgs = {
4950
playlistId: Scalars["ID"]["input"];
5051
};
5152

53+
export type MutationUpdatePlaylistSongRankArgs = {
54+
playlistId: Scalars["ID"]["input"];
55+
rank: Scalars["String"]["input"];
56+
songId: Scalars["ID"]["input"];
57+
};
58+
5259
export type MutationUpdateUserArgs = {
5360
user: UserInput;
5461
};
@@ -187,6 +194,17 @@ export type MeQueryQuery = {
187194
};
188195
};
189196

197+
export type UpdatePlaylistSongRankMutationMutationVariables = Exact<{
198+
playlistId: Scalars["ID"]["input"];
199+
songId: Scalars["ID"]["input"];
200+
rank: Scalars["String"]["input"];
201+
}>;
202+
203+
export type UpdatePlaylistSongRankMutationMutation = {
204+
__typename?: "Mutation";
205+
updatePlaylistSongRank: boolean;
206+
};
207+
190208
export type UpdatePlaylistMutationMutationVariables = Exact<{
191209
playlistId: Scalars["ID"]["input"];
192210
name: Scalars["String"]["input"];
@@ -286,6 +304,19 @@ export const MeQueryDocument = gql`
286304
}
287305
}
288306
`;
307+
export const UpdatePlaylistSongRankMutationDocument = gql`
308+
mutation updatePlaylistSongRankMutation(
309+
$playlistId: ID!
310+
$songId: ID!
311+
$rank: String!
312+
) {
313+
updatePlaylistSongRank(
314+
playlistId: $playlistId
315+
songId: $songId
316+
rank: $rank
317+
)
318+
}
319+
`;
289320
export const UpdatePlaylistMutationDocument = gql`
290321
mutation updatePlaylistMutation($playlistId: ID!, $name: String!) {
291322
updatePlaylist(name: $name, playlistId: $playlistId) {
@@ -402,6 +433,22 @@ export function getSdk(
402433
variables,
403434
);
404435
},
436+
updatePlaylistSongRankMutation(
437+
variables: UpdatePlaylistSongRankMutationMutationVariables,
438+
requestHeaders?: GraphQLClientRequestHeaders,
439+
): Promise<UpdatePlaylistSongRankMutationMutation> {
440+
return withWrapper(
441+
(wrappedRequestHeaders) =>
442+
client.request<UpdatePlaylistSongRankMutationMutation>(
443+
UpdatePlaylistSongRankMutationDocument,
444+
variables,
445+
{ ...requestHeaders, ...wrappedRequestHeaders },
446+
),
447+
"updatePlaylistSongRankMutation",
448+
"mutation",
449+
variables,
450+
);
451+
},
405452
updatePlaylistMutation(
406453
variables: UpdatePlaylistMutationMutationVariables,
407454
requestHeaders?: GraphQLClientRequestHeaders,

0 commit comments

Comments
 (0)