diff --git a/app/composeables/api/models/addLocalTrackRequest.ts b/app/composeables/api/models/addLocalTrackRequest.ts new file mode 100644 index 0000000..19ad675 --- /dev/null +++ b/app/composeables/api/models/addLocalTrackRequest.ts @@ -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; +} diff --git a/app/composeables/api/models/index.ts b/app/composeables/api/models/index.ts index a000902..7eca022 100644 --- a/app/composeables/api/models/index.ts +++ b/app/composeables/api/models/index.ts @@ -5,7 +5,12 @@ * OpenAPI spec version: v0 */ +export * from './addLocalTrackRequest'; export * from './playlistCreateDTO'; +export * from './playlistCreateRequest'; export * from './playlistReadDTO'; +export * from './playlistReadResponse'; +export * from './playlistTrackResponse'; export * from './readParams'; +export * from './trackResponse'; export * from './uploadBody'; \ No newline at end of file diff --git a/app/composeables/api/models/playlistCreateRequest.ts b/app/composeables/api/models/playlistCreateRequest.ts new file mode 100644 index 0000000..1ceaa4c --- /dev/null +++ b/app/composeables/api/models/playlistCreateRequest.ts @@ -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; +} diff --git a/app/composeables/api/models/playlistReadResponse.ts b/app/composeables/api/models/playlistReadResponse.ts new file mode 100644 index 0000000..cb5c9b9 --- /dev/null +++ b/app/composeables/api/models/playlistReadResponse.ts @@ -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; +} diff --git a/app/composeables/api/models/playlistTrackResponse.ts b/app/composeables/api/models/playlistTrackResponse.ts new file mode 100644 index 0000000..3d912fa --- /dev/null +++ b/app/composeables/api/models/playlistTrackResponse.ts @@ -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; +} diff --git a/app/composeables/api/models/trackResponse.ts b/app/composeables/api/models/trackResponse.ts new file mode 100644 index 0000000..b338b0a --- /dev/null +++ b/app/composeables/api/models/trackResponse.ts @@ -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; +} diff --git a/app/composeables/api/playlist-controller/playlist-controller.ts b/app/composeables/api/playlist-controller/playlist-controller.ts index 371175f..e1fbea4 100644 --- a/app/composeables/api/playlist-controller/playlist-controller.ts +++ b/app/composeables/api/playlist-controller/playlist-controller.ts @@ -28,8 +28,8 @@ import type { } from 'vue'; import type { - PlaylistCreateDTO, - PlaylistReadDTO + PlaylistCreateRequest, + PlaylistReadResponse } from '.././models'; import { axiosInstance } from '.././axios-instance'; @@ -40,15 +40,15 @@ type SecondParameter unknown> = Parameters[1]; export const createPlaylist = ( - playlistCreateDTO: MaybeRef, + playlistCreateRequest: MaybeRef, options?: SecondParameter,signal?: AbortSignal ) => { - playlistCreateDTO = unref(playlistCreateDTO); + playlistCreateRequest = unref(playlistCreateRequest); - return axiosInstance( + return axiosInstance( {url: `/playlist`, method: 'POST', headers: {'Content-Type': 'application/json', }, - data: playlistCreateDTO, signal + data: playlistCreateRequest, signal }, options); } @@ -56,8 +56,8 @@ export const createPlaylist = ( export const getCreatePlaylistMutationOptions = (options?: { mutation?:UseMutationOptions>, TError,{data: PlaylistCreateDTO}, TContext>, request?: SecondParameter} -): UseMutationOptions>, TError,{data: PlaylistCreateDTO}, TContext> => { + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: PlaylistCreateRequest}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: PlaylistCreateRequest}, TContext> => { const mutationKey = ['createPlaylist']; const {mutation: mutationOptions, request: requestOptions} = options ? @@ -69,7 +69,7 @@ const {mutation: mutationOptions, request: requestOptions} = options ? - const mutationFn: MutationFunction>, {data: PlaylistCreateDTO}> = (props) => { + const mutationFn: MutationFunction>, {data: PlaylistCreateRequest}> = (props) => { const {data} = props ?? {}; return createPlaylist(data,requestOptions) @@ -81,15 +81,15 @@ const {mutation: mutationOptions, request: requestOptions} = options ? return { mutationFn, ...mutationOptions }} export type CreatePlaylistMutationResult = NonNullable>> - export type CreatePlaylistMutationBody = PlaylistCreateDTO + export type CreatePlaylistMutationBody = PlaylistCreateRequest export type CreatePlaylistMutationError = unknown export const useCreatePlaylist = (options?: { mutation?:UseMutationOptions>, TError,{data: PlaylistCreateDTO}, TContext>, request?: SecondParameter} + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: PlaylistCreateRequest}, TContext>, request?: SecondParameter} , queryClient?: QueryClient): UseMutationReturnType< Awaited>, TError, - {data: PlaylistCreateDTO}, + {data: PlaylistCreateRequest}, TContext > => { @@ -103,7 +103,7 @@ const {mutation: mutationOptions, request: requestOptions} = options ? ) => { - return axiosInstance( + return axiosInstance( {url: `/playlists`, method: 'GET', signal }, options); diff --git a/app/composeables/api/track-controller/track-controller.ts b/app/composeables/api/track-controller/track-controller.ts new file mode 100644 index 0000000..87eaf11 --- /dev/null +++ b/app/composeables/api/track-controller/track-controller.ts @@ -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 unknown> = Parameters[1]; + + + +export const addLocalTrack = ( + playlistId: MaybeRef, + addLocalTrackRequest: MaybeRef, + options?: SecondParameter,signal?: AbortSignal +) => { + playlistId = unref(playlistId); +addLocalTrackRequest = unref(addLocalTrackRequest); + const formData = new FormData(); +formData.append(`source`, addLocalTrackRequest.source) + + return axiosInstance( + {url: `/playlist/${playlistId}/track/local`, method: 'POST', + headers: {'Content-Type': 'multipart/form-data', }, + data: formData, signal + }, + options); + } + + + +export const getAddLocalTrackMutationOptions = (options?: { mutation?:UseMutationOptions>, TError,{playlistId: number;data: AddLocalTrackRequest}, TContext>, request?: SecondParameter} +): UseMutationOptions>, 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>, {playlistId: number;data: AddLocalTrackRequest}> = (props) => { + const {playlistId,data} = props ?? {}; + + return addLocalTrack(playlistId,data,requestOptions) + } + + + + + return { mutationFn, ...mutationOptions }} + + export type AddLocalTrackMutationResult = NonNullable>> + export type AddLocalTrackMutationBody = AddLocalTrackRequest + export type AddLocalTrackMutationError = unknown + + export const useAddLocalTrack = (options?: { mutation?:UseMutationOptions>, TError,{playlistId: number;data: AddLocalTrackRequest}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationReturnType< + Awaited>, + TError, + {playlistId: number;data: AddLocalTrackRequest}, + TContext + > => { + + const mutationOptions = getAddLocalTrackMutationOptions(options); + + return useMutation(mutationOptions, queryClient); + } + export const getPlaylistTracks = ( + playlistId: MaybeRef, + options?: SecondParameter,signal?: AbortSignal +) => { + playlistId = unref(playlistId); + + return axiosInstance( + {url: `/playlist/${playlistId}/tracks`, method: 'GET', signal + }, + options); + } + + + + +export const getGetPlaylistTracksQueryKey = (playlistId?: MaybeRef,) => { + return [ + 'playlist',playlistId,'tracks' + ] as const; + } + + +export const getGetPlaylistTracksQueryOptions = >, TError = unknown>(playlistId: MaybeRef, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = getGetPlaylistTracksQueryKey(playlistId); + + + + const queryFn: QueryFunction>> = ({ signal }) => getPlaylistTracks(playlistId, requestOptions, signal); + + + + + + return { queryKey, queryFn, enabled: computed(() => !!(unref(playlistId))), ...queryOptions} as UseQueryOptions>, TError, TData> +} + +export type GetPlaylistTracksQueryResult = NonNullable>> +export type GetPlaylistTracksQueryError = unknown + + + +export function useGetPlaylistTracks>, TError = unknown>( + playlistId: MaybeRef, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryReturnType & { queryKey: DataTag } { + + const queryOptions = getGetPlaylistTracksQueryOptions(playlistId,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryReturnType & { queryKey: DataTag }; + + query.queryKey = unref(queryOptions).queryKey as DataTag; + + return query; +} + + + +