Update backend API schema
This commit is contained in:
10
app/composeables/api/models/addLocalTrackRequest.ts
Normal file
10
app/composeables/api/models/addLocalTrackRequest.ts
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
/**
|
||||||
|
* Generated by orval v7.16.0 🍺
|
||||||
|
* Do not edit manually.
|
||||||
|
* OpenAPI definition
|
||||||
|
* OpenAPI spec version: v0
|
||||||
|
*/
|
||||||
|
|
||||||
|
export interface AddLocalTrackRequest {
|
||||||
|
source: Blob;
|
||||||
|
}
|
||||||
@ -5,7 +5,12 @@
|
|||||||
* OpenAPI spec version: v0
|
* OpenAPI spec version: v0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
export * from './addLocalTrackRequest';
|
||||||
export * from './playlistCreateDTO';
|
export * from './playlistCreateDTO';
|
||||||
|
export * from './playlistCreateRequest';
|
||||||
export * from './playlistReadDTO';
|
export * from './playlistReadDTO';
|
||||||
|
export * from './playlistReadResponse';
|
||||||
|
export * from './playlistTrackResponse';
|
||||||
export * from './readParams';
|
export * from './readParams';
|
||||||
|
export * from './trackResponse';
|
||||||
export * from './uploadBody';
|
export * from './uploadBody';
|
||||||
10
app/composeables/api/models/playlistCreateRequest.ts
Normal file
10
app/composeables/api/models/playlistCreateRequest.ts
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
/**
|
||||||
|
* Generated by orval v7.16.0 🍺
|
||||||
|
* Do not edit manually.
|
||||||
|
* OpenAPI definition
|
||||||
|
* OpenAPI spec version: v0
|
||||||
|
*/
|
||||||
|
|
||||||
|
export interface PlaylistCreateRequest {
|
||||||
|
title?: string;
|
||||||
|
}
|
||||||
14
app/composeables/api/models/playlistReadResponse.ts
Normal file
14
app/composeables/api/models/playlistReadResponse.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* Generated by orval v7.16.0 🍺
|
||||||
|
* Do not edit manually.
|
||||||
|
* OpenAPI definition
|
||||||
|
* OpenAPI spec version: v0
|
||||||
|
*/
|
||||||
|
|
||||||
|
export interface PlaylistReadResponse {
|
||||||
|
id?: number;
|
||||||
|
ownerId?: number;
|
||||||
|
title?: string;
|
||||||
|
createdAt?: string;
|
||||||
|
updatedAt?: string;
|
||||||
|
}
|
||||||
15
app/composeables/api/models/playlistTrackResponse.ts
Normal file
15
app/composeables/api/models/playlistTrackResponse.ts
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/**
|
||||||
|
* Generated by orval v7.16.0 🍺
|
||||||
|
* Do not edit manually.
|
||||||
|
* OpenAPI definition
|
||||||
|
* OpenAPI spec version: v0
|
||||||
|
*/
|
||||||
|
|
||||||
|
export interface PlaylistTrackResponse {
|
||||||
|
trackId?: number;
|
||||||
|
title?: string;
|
||||||
|
artist?: string;
|
||||||
|
audioPath?: string;
|
||||||
|
durationSeconds?: number;
|
||||||
|
fileName?: string;
|
||||||
|
}
|
||||||
15
app/composeables/api/models/trackResponse.ts
Normal file
15
app/composeables/api/models/trackResponse.ts
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/**
|
||||||
|
* Generated by orval v7.16.0 🍺
|
||||||
|
* Do not edit manually.
|
||||||
|
* OpenAPI definition
|
||||||
|
* OpenAPI spec version: v0
|
||||||
|
*/
|
||||||
|
|
||||||
|
export interface TrackResponse {
|
||||||
|
trackId?: number;
|
||||||
|
title?: string;
|
||||||
|
artist?: string;
|
||||||
|
audioPath?: string;
|
||||||
|
durationSeconds?: number;
|
||||||
|
fileName?: string;
|
||||||
|
}
|
||||||
@ -28,8 +28,8 @@ import type {
|
|||||||
} from 'vue';
|
} from 'vue';
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
PlaylistCreateDTO,
|
PlaylistCreateRequest,
|
||||||
PlaylistReadDTO
|
PlaylistReadResponse
|
||||||
} from '.././models';
|
} from '.././models';
|
||||||
|
|
||||||
import { axiosInstance } from '.././axios-instance';
|
import { axiosInstance } from '.././axios-instance';
|
||||||
@ -40,15 +40,15 @@ type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];
|
|||||||
|
|
||||||
|
|
||||||
export const createPlaylist = (
|
export const createPlaylist = (
|
||||||
playlistCreateDTO: MaybeRef<PlaylistCreateDTO>,
|
playlistCreateRequest: MaybeRef<PlaylistCreateRequest>,
|
||||||
options?: SecondParameter<typeof axiosInstance>,signal?: AbortSignal
|
options?: SecondParameter<typeof axiosInstance>,signal?: AbortSignal
|
||||||
) => {
|
) => {
|
||||||
playlistCreateDTO = unref(playlistCreateDTO);
|
playlistCreateRequest = unref(playlistCreateRequest);
|
||||||
|
|
||||||
return axiosInstance<PlaylistReadDTO>(
|
return axiosInstance<PlaylistReadResponse>(
|
||||||
{url: `/playlist`, method: 'POST',
|
{url: `/playlist`, method: 'POST',
|
||||||
headers: {'Content-Type': 'application/json', },
|
headers: {'Content-Type': 'application/json', },
|
||||||
data: playlistCreateDTO, signal
|
data: playlistCreateRequest, signal
|
||||||
},
|
},
|
||||||
options);
|
options);
|
||||||
}
|
}
|
||||||
@ -56,8 +56,8 @@ export const createPlaylist = (
|
|||||||
|
|
||||||
|
|
||||||
export const getCreatePlaylistMutationOptions = <TError = unknown,
|
export const getCreatePlaylistMutationOptions = <TError = unknown,
|
||||||
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createPlaylist>>, TError,{data: PlaylistCreateDTO}, TContext>, request?: SecondParameter<typeof axiosInstance>}
|
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createPlaylist>>, TError,{data: PlaylistCreateRequest}, TContext>, request?: SecondParameter<typeof axiosInstance>}
|
||||||
): UseMutationOptions<Awaited<ReturnType<typeof createPlaylist>>, TError,{data: PlaylistCreateDTO}, TContext> => {
|
): UseMutationOptions<Awaited<ReturnType<typeof createPlaylist>>, TError,{data: PlaylistCreateRequest}, TContext> => {
|
||||||
|
|
||||||
const mutationKey = ['createPlaylist'];
|
const mutationKey = ['createPlaylist'];
|
||||||
const {mutation: mutationOptions, request: requestOptions} = options ?
|
const {mutation: mutationOptions, request: requestOptions} = options ?
|
||||||
@ -69,7 +69,7 @@ const {mutation: mutationOptions, request: requestOptions} = options ?
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
const mutationFn: MutationFunction<Awaited<ReturnType<typeof createPlaylist>>, {data: PlaylistCreateDTO}> = (props) => {
|
const mutationFn: MutationFunction<Awaited<ReturnType<typeof createPlaylist>>, {data: PlaylistCreateRequest}> = (props) => {
|
||||||
const {data} = props ?? {};
|
const {data} = props ?? {};
|
||||||
|
|
||||||
return createPlaylist(data,requestOptions)
|
return createPlaylist(data,requestOptions)
|
||||||
@ -81,15 +81,15 @@ const {mutation: mutationOptions, request: requestOptions} = options ?
|
|||||||
return { mutationFn, ...mutationOptions }}
|
return { mutationFn, ...mutationOptions }}
|
||||||
|
|
||||||
export type CreatePlaylistMutationResult = NonNullable<Awaited<ReturnType<typeof createPlaylist>>>
|
export type CreatePlaylistMutationResult = NonNullable<Awaited<ReturnType<typeof createPlaylist>>>
|
||||||
export type CreatePlaylistMutationBody = PlaylistCreateDTO
|
export type CreatePlaylistMutationBody = PlaylistCreateRequest
|
||||||
export type CreatePlaylistMutationError = unknown
|
export type CreatePlaylistMutationError = unknown
|
||||||
|
|
||||||
export const useCreatePlaylist = <TError = unknown,
|
export const useCreatePlaylist = <TError = unknown,
|
||||||
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createPlaylist>>, TError,{data: PlaylistCreateDTO}, TContext>, request?: SecondParameter<typeof axiosInstance>}
|
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createPlaylist>>, TError,{data: PlaylistCreateRequest}, TContext>, request?: SecondParameter<typeof axiosInstance>}
|
||||||
, queryClient?: QueryClient): UseMutationReturnType<
|
, queryClient?: QueryClient): UseMutationReturnType<
|
||||||
Awaited<ReturnType<typeof createPlaylist>>,
|
Awaited<ReturnType<typeof createPlaylist>>,
|
||||||
TError,
|
TError,
|
||||||
{data: PlaylistCreateDTO},
|
{data: PlaylistCreateRequest},
|
||||||
TContext
|
TContext
|
||||||
> => {
|
> => {
|
||||||
|
|
||||||
@ -103,7 +103,7 @@ const {mutation: mutationOptions, request: requestOptions} = options ?
|
|||||||
) => {
|
) => {
|
||||||
|
|
||||||
|
|
||||||
return axiosInstance<PlaylistReadDTO[]>(
|
return axiosInstance<PlaylistReadResponse[]>(
|
||||||
{url: `/playlists`, method: 'GET', signal
|
{url: `/playlists`, method: 'GET', signal
|
||||||
},
|
},
|
||||||
options);
|
options);
|
||||||
|
|||||||
167
app/composeables/api/track-controller/track-controller.ts
Normal file
167
app/composeables/api/track-controller/track-controller.ts
Normal file
@ -0,0 +1,167 @@
|
|||||||
|
/**
|
||||||
|
* Generated by orval v7.16.0 🍺
|
||||||
|
* Do not edit manually.
|
||||||
|
* OpenAPI definition
|
||||||
|
* OpenAPI spec version: v0
|
||||||
|
*/
|
||||||
|
import {
|
||||||
|
useMutation,
|
||||||
|
useQuery
|
||||||
|
} from '@tanstack/vue-query';
|
||||||
|
import type {
|
||||||
|
DataTag,
|
||||||
|
MutationFunction,
|
||||||
|
QueryClient,
|
||||||
|
QueryFunction,
|
||||||
|
QueryKey,
|
||||||
|
UseMutationOptions,
|
||||||
|
UseMutationReturnType,
|
||||||
|
UseQueryOptions,
|
||||||
|
UseQueryReturnType
|
||||||
|
} from '@tanstack/vue-query';
|
||||||
|
|
||||||
|
import {
|
||||||
|
computed,
|
||||||
|
unref
|
||||||
|
} from 'vue';
|
||||||
|
import type {
|
||||||
|
MaybeRef
|
||||||
|
} from 'vue';
|
||||||
|
|
||||||
|
import type {
|
||||||
|
AddLocalTrackRequest,
|
||||||
|
PlaylistTrackResponse,
|
||||||
|
TrackResponse
|
||||||
|
} from '.././models';
|
||||||
|
|
||||||
|
import { axiosInstance } from '.././axios-instance';
|
||||||
|
|
||||||
|
|
||||||
|
type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export const addLocalTrack = (
|
||||||
|
playlistId: MaybeRef<number>,
|
||||||
|
addLocalTrackRequest: MaybeRef<AddLocalTrackRequest>,
|
||||||
|
options?: SecondParameter<typeof axiosInstance>,signal?: AbortSignal
|
||||||
|
) => {
|
||||||
|
playlistId = unref(playlistId);
|
||||||
|
addLocalTrackRequest = unref(addLocalTrackRequest);
|
||||||
|
const formData = new FormData();
|
||||||
|
formData.append(`source`, addLocalTrackRequest.source)
|
||||||
|
|
||||||
|
return axiosInstance<TrackResponse>(
|
||||||
|
{url: `/playlist/${playlistId}/track/local`, method: 'POST',
|
||||||
|
headers: {'Content-Type': 'multipart/form-data', },
|
||||||
|
data: formData, signal
|
||||||
|
},
|
||||||
|
options);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export const getAddLocalTrackMutationOptions = <TError = unknown,
|
||||||
|
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof addLocalTrack>>, TError,{playlistId: number;data: AddLocalTrackRequest}, TContext>, request?: SecondParameter<typeof axiosInstance>}
|
||||||
|
): UseMutationOptions<Awaited<ReturnType<typeof addLocalTrack>>, TError,{playlistId: number;data: AddLocalTrackRequest}, TContext> => {
|
||||||
|
|
||||||
|
const mutationKey = ['addLocalTrack'];
|
||||||
|
const {mutation: mutationOptions, request: requestOptions} = options ?
|
||||||
|
options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?
|
||||||
|
options
|
||||||
|
: {...options, mutation: {...options.mutation, mutationKey}}
|
||||||
|
: {mutation: { mutationKey, }, request: undefined};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const mutationFn: MutationFunction<Awaited<ReturnType<typeof addLocalTrack>>, {playlistId: number;data: AddLocalTrackRequest}> = (props) => {
|
||||||
|
const {playlistId,data} = props ?? {};
|
||||||
|
|
||||||
|
return addLocalTrack(playlistId,data,requestOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return { mutationFn, ...mutationOptions }}
|
||||||
|
|
||||||
|
export type AddLocalTrackMutationResult = NonNullable<Awaited<ReturnType<typeof addLocalTrack>>>
|
||||||
|
export type AddLocalTrackMutationBody = AddLocalTrackRequest
|
||||||
|
export type AddLocalTrackMutationError = unknown
|
||||||
|
|
||||||
|
export const useAddLocalTrack = <TError = unknown,
|
||||||
|
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof addLocalTrack>>, TError,{playlistId: number;data: AddLocalTrackRequest}, TContext>, request?: SecondParameter<typeof axiosInstance>}
|
||||||
|
, queryClient?: QueryClient): UseMutationReturnType<
|
||||||
|
Awaited<ReturnType<typeof addLocalTrack>>,
|
||||||
|
TError,
|
||||||
|
{playlistId: number;data: AddLocalTrackRequest},
|
||||||
|
TContext
|
||||||
|
> => {
|
||||||
|
|
||||||
|
const mutationOptions = getAddLocalTrackMutationOptions(options);
|
||||||
|
|
||||||
|
return useMutation(mutationOptions, queryClient);
|
||||||
|
}
|
||||||
|
export const getPlaylistTracks = (
|
||||||
|
playlistId: MaybeRef<number>,
|
||||||
|
options?: SecondParameter<typeof axiosInstance>,signal?: AbortSignal
|
||||||
|
) => {
|
||||||
|
playlistId = unref(playlistId);
|
||||||
|
|
||||||
|
return axiosInstance<PlaylistTrackResponse[]>(
|
||||||
|
{url: `/playlist/${playlistId}/tracks`, method: 'GET', signal
|
||||||
|
},
|
||||||
|
options);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export const getGetPlaylistTracksQueryKey = (playlistId?: MaybeRef<number>,) => {
|
||||||
|
return [
|
||||||
|
'playlist',playlistId,'tracks'
|
||||||
|
] as const;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export const getGetPlaylistTracksQueryOptions = <TData = Awaited<ReturnType<typeof getPlaylistTracks>>, TError = unknown>(playlistId: MaybeRef<number>, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof getPlaylistTracks>>, TError, TData>>, request?: SecondParameter<typeof axiosInstance>}
|
||||||
|
) => {
|
||||||
|
|
||||||
|
const {query: queryOptions, request: requestOptions} = options ?? {};
|
||||||
|
|
||||||
|
const queryKey = getGetPlaylistTracksQueryKey(playlistId);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const queryFn: QueryFunction<Awaited<ReturnType<typeof getPlaylistTracks>>> = ({ signal }) => getPlaylistTracks(playlistId, requestOptions, signal);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return { queryKey, queryFn, enabled: computed(() => !!(unref(playlistId))), ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof getPlaylistTracks>>, TError, TData>
|
||||||
|
}
|
||||||
|
|
||||||
|
export type GetPlaylistTracksQueryResult = NonNullable<Awaited<ReturnType<typeof getPlaylistTracks>>>
|
||||||
|
export type GetPlaylistTracksQueryError = unknown
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export function useGetPlaylistTracks<TData = Awaited<ReturnType<typeof getPlaylistTracks>>, TError = unknown>(
|
||||||
|
playlistId: MaybeRef<number>, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof getPlaylistTracks>>, TError, TData>>, request?: SecondParameter<typeof axiosInstance>}
|
||||||
|
, queryClient?: QueryClient
|
||||||
|
): UseQueryReturnType<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {
|
||||||
|
|
||||||
|
const queryOptions = getGetPlaylistTracksQueryOptions(playlistId,options)
|
||||||
|
|
||||||
|
const query = useQuery(queryOptions, queryClient) as UseQueryReturnType<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };
|
||||||
|
|
||||||
|
query.queryKey = unref(queryOptions).queryKey as DataTag<QueryKey, TData, TError>;
|
||||||
|
|
||||||
|
return query;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user