Update backend API schema

This commit is contained in:
2025-11-16 18:03:17 +05:00
parent 7b39d48316
commit b860ea95d3
8 changed files with 249 additions and 13 deletions

View 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;
}

View File

@ -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';

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View File

@ -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);

View 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;
}