|
|
|
@ -31,60 +31,62 @@ export interface SongQueryElem { |
|
|
|
|
children?: SongQueryElem[] |
|
|
|
|
childrenOperator?: SongQueryElemOp, |
|
|
|
|
} |
|
|
|
|
export interface SongQuery extends SongQueryElem {} |
|
|
|
|
export interface SongQuery extends SongQueryElem { } |
|
|
|
|
export interface QuerySongsRequest { |
|
|
|
|
query: SongQuery |
|
|
|
|
} |
|
|
|
|
export interface QuerySongsResponse { |
|
|
|
|
ids: Number[] |
|
|
|
|
} |
|
|
|
|
export function checkQuerySongsElem(elem:any): boolean { |
|
|
|
|
if(elem.childrenOperator && elem.children) { |
|
|
|
|
elem.children.forEach((child:any) => { |
|
|
|
|
if(!checkQuerySongsElem(child)) { |
|
|
|
|
export function checkQuerySongsElem(elem: any): boolean { |
|
|
|
|
if (elem.childrenOperator && elem.children) { |
|
|
|
|
elem.children.forEach((child: any) => { |
|
|
|
|
if (!checkQuerySongsElem(child)) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
return (elem.childrenOperator && elem.children) || |
|
|
|
|
(elem.prop && elem.propOperand && elem.propOperator) || |
|
|
|
|
Object.keys(elem).length == 0; |
|
|
|
|
(elem.prop && elem.propOperand && elem.propOperator) || |
|
|
|
|
Object.keys(elem).length == 0; |
|
|
|
|
} |
|
|
|
|
export function checkQuerySongsRequest(req:any): boolean { |
|
|
|
|
export function checkQuerySongsRequest(req: any): boolean { |
|
|
|
|
return "query" in req && checkQuerySongsElem(req.query); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Get song details (GET).
|
|
|
|
|
export const SongDetailsEndpoint = '/song/:id'; |
|
|
|
|
export interface SongDetailsRequest {} |
|
|
|
|
export interface SongDetailsRequest { } |
|
|
|
|
export interface SongDetailsResponse { |
|
|
|
|
title: String, |
|
|
|
|
storeLinks: String[], |
|
|
|
|
artistIds: Number[], |
|
|
|
|
albumIds: Number[], |
|
|
|
|
tagIds: Number[], |
|
|
|
|
} |
|
|
|
|
export function checkSongDetailsRequest(req:any): boolean { |
|
|
|
|
export function checkSongDetailsRequest(req: any): boolean { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Query for artists.
|
|
|
|
|
export const QueryArtistsEndpoint = '/artist/query'; |
|
|
|
|
export interface QueryArtistsRequest {} |
|
|
|
|
export interface QueryArtistsRequest { } |
|
|
|
|
export interface QueryArtistsResponse { |
|
|
|
|
ids: Number[] |
|
|
|
|
} |
|
|
|
|
export function checkQueryArtistsRequest(req:any): boolean { |
|
|
|
|
export function checkQueryArtistsRequest(req: any): boolean { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Get artist details (GET).
|
|
|
|
|
export const ArtistDetailsEndpoint = '/artist/:id'; |
|
|
|
|
export interface ArtistDetailsRequest {} |
|
|
|
|
export interface ArtistDetailsRequest { } |
|
|
|
|
export interface ArtistDetailsResponse { |
|
|
|
|
name: String, |
|
|
|
|
tagIds: Number[], |
|
|
|
|
storeLinks: String[], |
|
|
|
|
} |
|
|
|
|
export function checkArtistDetailsRequest(req:any): boolean { |
|
|
|
|
export function checkArtistDetailsRequest(req: any): boolean { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -94,14 +96,15 @@ export interface CreateSongRequest { |
|
|
|
|
title: String; |
|
|
|
|
artistIds?: Number[]; |
|
|
|
|
albumIds?: Number[]; |
|
|
|
|
tagIds?: Number[]; |
|
|
|
|
storeLinks?: String[]; |
|
|
|
|
} |
|
|
|
|
export interface CreateSongResponse { |
|
|
|
|
id: Number; |
|
|
|
|
} |
|
|
|
|
export function checkCreateSongRequest(req:any): boolean { |
|
|
|
|
export function checkCreateSongRequest(req: any): boolean { |
|
|
|
|
return "body" in req && |
|
|
|
|
"title" in req.body; |
|
|
|
|
"title" in req.body; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Modify an existing song (PUT).
|
|
|
|
@ -110,10 +113,11 @@ export interface ModifySongRequest { |
|
|
|
|
title?: String; |
|
|
|
|
artistIds?: Number[]; |
|
|
|
|
albumIds?: Number[]; |
|
|
|
|
tagIds?: Number[]; |
|
|
|
|
storeLinks?: String[]; |
|
|
|
|
} |
|
|
|
|
export interface ModifySongResponse {} |
|
|
|
|
export function checkModifySongRequest(req:any): boolean { |
|
|
|
|
export interface ModifySongResponse { } |
|
|
|
|
export function checkModifySongRequest(req: any): boolean { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -121,26 +125,26 @@ export function checkModifySongRequest(req:any): boolean { |
|
|
|
|
export const CreateArtistEndpoint = '/artist'; |
|
|
|
|
export interface CreateArtistRequest { |
|
|
|
|
name: String; |
|
|
|
|
songIds?: Number[]; |
|
|
|
|
albumIds?: Number[]; |
|
|
|
|
tagIds?: Number[]; |
|
|
|
|
storeLinks?: String[]; |
|
|
|
|
} |
|
|
|
|
export interface CreateArtistResponse { |
|
|
|
|
id: Number; |
|
|
|
|
} |
|
|
|
|
export function checkCreateArtistRequest(req:any): boolean { |
|
|
|
|
export function checkCreateArtistRequest(req: any): boolean { |
|
|
|
|
return "body" in req && |
|
|
|
|
"name" in req.body; |
|
|
|
|
"name" in req.body; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Modify an existing artist (PUT).
|
|
|
|
|
export const ModifyArtistEndpoint = '/artist/:id'; |
|
|
|
|
export interface ModifyArtistRequest { |
|
|
|
|
name?: String, |
|
|
|
|
tagIds?: Number[]; |
|
|
|
|
storeLinks?: String[], |
|
|
|
|
} |
|
|
|
|
export interface ModifyArtistResponse {} |
|
|
|
|
export function checkModifyArtistRequest(req:any): boolean { |
|
|
|
|
export interface ModifyArtistResponse { } |
|
|
|
|
export function checkModifyArtistRequest(req: any): boolean { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -153,9 +157,9 @@ export interface CreateTagRequest { |
|
|
|
|
export interface CreateTagResponse { |
|
|
|
|
id: Number; |
|
|
|
|
} |
|
|
|
|
export function checkCreateTagRequest(req:any): boolean { |
|
|
|
|
export function checkCreateTagRequest(req: any): boolean { |
|
|
|
|
return "body" in req && |
|
|
|
|
"name" in req.body; |
|
|
|
|
"name" in req.body; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Modify an existing tag (PUT).
|
|
|
|
@ -164,28 +168,28 @@ export interface ModifyTagRequest { |
|
|
|
|
name?: String, |
|
|
|
|
parentId?: Number; |
|
|
|
|
} |
|
|
|
|
export interface ModifyTagResponse {} |
|
|
|
|
export function checkModifyTagRequest(req:any): boolean { |
|
|
|
|
export interface ModifyTagResponse { } |
|
|
|
|
export function checkModifyTagRequest(req: any): boolean { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Query for tags.
|
|
|
|
|
export const QueryTagEndpoint = '/tag/query'; |
|
|
|
|
export interface QueryTagsRequest {} |
|
|
|
|
export interface QueryTagsRequest { } |
|
|
|
|
export interface QueryTagsResponse { |
|
|
|
|
ids: Number[] |
|
|
|
|
} |
|
|
|
|
export function checkQueryTagsRequest(req:any): boolean { |
|
|
|
|
export function checkQueryTagsRequest(req: any): boolean { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Get tag details (GET).
|
|
|
|
|
export const TagDetailsEndpoint = '/tag/:id'; |
|
|
|
|
export interface TagDetailsRequest {} |
|
|
|
|
export interface TagDetailsRequest { } |
|
|
|
|
export interface TagDetailsResponse { |
|
|
|
|
name: String, |
|
|
|
|
parentId?: Number, |
|
|
|
|
} |
|
|
|
|
export function checkTagDetailsRequest(req:any): boolean { |
|
|
|
|
export function checkTagDetailsRequest(req: any): boolean { |
|
|
|
|
return true; |
|
|
|
|
} |