Commit b41c27c7 authored by Цой Данил's avatar Цой Данил 💬

#7 added read me file

parent ccf3c81d
## Указания по работе с api
Здесь находятся особенности работы с моей api
## Работа с артистами
- Основной путь: http://localhost:8000/artists
- Имеет два метода в репозитории: получить артистов, и добавить артиста
- Для получения артистов необходимо написать get запрос по указанной выше ссылке
- Для добавления артиста необходимо написать post запрос по указанному выше пути, при этом в запросе должны быть следующие поля:
- {
- name: Принимает строку с именем артиста
- photo: Файл с изображениям артиста
- information: Принимат строку с информацией об артисте
- }
## Работа с альбомами
- Основной путь: http://localhost:8000/albums
- Имеет два метода в репозитории: получить альбом, и добавить альбом
- Для получения альбомов необходимо написать get запрос по указанной выше ссылке
- Для добавления альбомов необходимо написать post запрос по указанному выше пути, при этом в запросе должны быть следующие поля:
- {
- title: Принимает строку с названием альбома
- artist: Принимает id артиста
- releaseYear: Принимает дату выпуска альбом
- coverImage: Файл с изображением альбома
- }
## Работа с треками
- Основной путь: http://localhost:8000/tracks
- Имеет два метода в репозитории: получить треки, и добавить трек
- Для получения треков необходимо написать get запрос по указанной выше ссылке
- Для добавления трека необходимо написать post запрос по указанному выше пути, при этом в запросе должны быть следующие поля:
- {
- title: Принимает строку с названием трека
- album: Принимает id альбома
- length: принимает длину трека ввиде числа
- }
## Работа с пользователями
- Основной путь: http://localhost:8000/users
- Имеет два метода в репозитории: получить добавить пользователя, и залогинить пользователя
- Для добавления пользователя необходимо написать ost запрос по указанному выше пути, при этом в запросе идут следующие поля:
- {
- username: Принимает строку с именем пользователя
- password: Принимает пароль введенный пользователем ввиде строки
- }
- Для логина пользователя необходимо написать post запрос по пути http://localhost:8000/users/sessions, при этом в запросе идут следующие поля:
- {
- username: Принимает строку с именем пользователя
- password: Принимает пароль введенный пользователем ввиде строки
- }
- Если все прошло успешно, то у пользователя появится поле token
## Работа с историей просмотра треков
- Основной путь: http://localhost:8000/track_history
- Имеет метод для создания новой истории. Для этого нужно отправить post запрос по указанному выше пути, при этом в объекте должны быть следующие поля:
- {
- token: Принимает токен залогиненного пользователя
- track: Принимает id трека, который был прослушан
- }
\ No newline at end of file
...@@ -6,7 +6,8 @@ const Schema = mongoose.Schema ...@@ -6,7 +6,8 @@ const Schema = mongoose.Schema
const AlbumSchema = new Schema<IAlbum>({ const AlbumSchema = new Schema<IAlbum>({
title:{ title:{
type: String, type: String,
require: true require: true,
trim: true
}, },
artist:{ artist:{
type: Schema.Types.ObjectId, type: Schema.Types.ObjectId,
...@@ -21,6 +22,6 @@ const AlbumSchema = new Schema<IAlbum>({ ...@@ -21,6 +22,6 @@ const AlbumSchema = new Schema<IAlbum>({
type: String, type: String,
required: true required: true
} }
}) }, {versionKey: false})
export const Album = mongoose.model<IAlbum>('Album', AlbumSchema) export const Album = mongoose.model<IAlbum>('Album', AlbumSchema)
\ No newline at end of file
...@@ -6,7 +6,8 @@ const Schema = mongoose.Schema ...@@ -6,7 +6,8 @@ const Schema = mongoose.Schema
const ArtistSchema = new Schema<IArtist>({ const ArtistSchema = new Schema<IArtist>({
name:{ name:{
type: String, type: String,
require: true require: true,
trim: true
}, },
photo:{ photo:{
type: String, type: String,
...@@ -14,8 +15,9 @@ const ArtistSchema = new Schema<IArtist>({ ...@@ -14,8 +15,9 @@ const ArtistSchema = new Schema<IArtist>({
}, },
information:{ information:{
type: String, type: String,
require: true require: true,
trim: true
} }
}) }, {versionKey: false})
export const Artist = mongoose.model<IArtist>('Artist', ArtistSchema) export const Artist = mongoose.model<IArtist>('Artist', ArtistSchema)
\ No newline at end of file
...@@ -7,17 +7,19 @@ const Schema = mongoose.Schema ...@@ -7,17 +7,19 @@ const Schema = mongoose.Schema
const TrackSchema = new Schema<ITrack>({ const TrackSchema = new Schema<ITrack>({
title:{ title:{
type: String, type: String,
require: true require: true,
trim: true
}, },
album:{ album:{
type: Schema.Types.ObjectId, type: Schema.Types.ObjectId,
ref: 'Album', ref: 'Album',
required: true required: true,
trim: true
}, },
length:{ length:{
type: Number, type: Number,
required: true required: true
} }
}) }, {versionKey: false})
export const Track = mongoose.model<ITrack>('Track', TrackSchema) export const Track = mongoose.model<ITrack>('Track', TrackSchema)
\ No newline at end of file
...@@ -8,11 +8,13 @@ const UserSchema: Schema = new Schema<IUser>({ ...@@ -8,11 +8,13 @@ const UserSchema: Schema = new Schema<IUser>({
username: { username: {
type: String, type: String,
required: true, required: true,
unique: true unique: true,
trim: true
}, },
password: { password: {
type: String, type: String,
required: true required: true,
trim: true
}, },
token: { token: {
type: String, type: String,
......
...@@ -235,6 +235,7 @@ export class MongooseDB { ...@@ -235,6 +235,7 @@ export class MongooseDB {
const trackExist = await Track.exists({_id: trackHistoryDto.track}) const trackExist = await Track.exists({_id: trackHistoryDto.track})
if (!trackExist) throw new Error('Track not found') if (!trackExist) throw new Error('Track not found')
const data = await trackHistory.save() const data = await trackHistory.save()
const responseData = await data.populate('user track')
const response: IResponse<ITrackHistory> = { const response: IResponse<ITrackHistory> = {
status: EStatuses.SUCCESS, status: EStatuses.SUCCESS,
result: data, result: data,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment