mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-11 03:24:16 +00:00
remove unnecessary controllers
This commit is contained in:
parent
f1d6324641
commit
f083c2cd57
@ -1,5 +1,4 @@
|
|||||||
import { User, Playlist, UserFollow } from "@models"
|
import { Playlist, UserFollow } from "@models"
|
||||||
import getTrackDataById from "../../TracksController/services/getTrackDataById"
|
|
||||||
|
|
||||||
export default async (payload) => {
|
export default async (payload) => {
|
||||||
const {
|
const {
|
||||||
@ -31,21 +30,5 @@ export default async (payload) => {
|
|||||||
.limit(limit)
|
.limit(limit)
|
||||||
.skip(skip)
|
.skip(skip)
|
||||||
|
|
||||||
playlists = await Promise.all(playlists.map(async (playlist) => {
|
|
||||||
// get user data
|
|
||||||
const user = await User.findById(playlist.user_id)
|
|
||||||
|
|
||||||
playlist.list = await Promise.all(playlist.list.map(async (track_id) => {
|
|
||||||
return await getTrackDataById(track_id)
|
|
||||||
})).catch((err) => {
|
|
||||||
return []
|
|
||||||
})
|
|
||||||
|
|
||||||
return {
|
|
||||||
...playlist.toObject(),
|
|
||||||
user: user.toObject(),
|
|
||||||
}
|
|
||||||
}))
|
|
||||||
|
|
||||||
return playlists
|
return playlists
|
||||||
}
|
}
|
@ -1,5 +1,4 @@
|
|||||||
import { User, Playlist } from "@models"
|
import { Playlist } from "@models"
|
||||||
import getTrackDataById from "../../TracksController/services/getTrackDataById"
|
|
||||||
|
|
||||||
export default async (payload) => {
|
export default async (payload) => {
|
||||||
const {
|
const {
|
||||||
@ -16,21 +15,5 @@ export default async (payload) => {
|
|||||||
.limit(limit)
|
.limit(limit)
|
||||||
.skip(skip)
|
.skip(skip)
|
||||||
|
|
||||||
playlists = await Promise.all(playlists.map(async (playlist) => {
|
|
||||||
// get user data
|
|
||||||
const user = await User.findById(playlist.user_id)
|
|
||||||
|
|
||||||
playlist.list = await Promise.all(playlist.list.map(async (track_id) => {
|
|
||||||
return await getTrackDataById(track_id)
|
|
||||||
})).catch((err) => {
|
|
||||||
return []
|
|
||||||
})
|
|
||||||
|
|
||||||
return {
|
|
||||||
...playlist.toObject(),
|
|
||||||
user: user.toObject(),
|
|
||||||
}
|
|
||||||
}))
|
|
||||||
|
|
||||||
return playlists
|
return playlists
|
||||||
}
|
}
|
@ -1,29 +0,0 @@
|
|||||||
import { Playlist } from "@models"
|
|
||||||
|
|
||||||
export default {
|
|
||||||
method: "DELETE",
|
|
||||||
route: "/:playlist_id",
|
|
||||||
middlewares: ["withAuthentication"],
|
|
||||||
fn: async (req, res) => {
|
|
||||||
const user_id = req.user._id.toString()
|
|
||||||
|
|
||||||
let playlist = await Playlist.findById(req.params.playlist_id).catch((err) => false)
|
|
||||||
|
|
||||||
if (!playlist) {
|
|
||||||
return res.status(404).json({
|
|
||||||
message: "Playlist not found"
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// check if the user is the owner of the playlist
|
|
||||||
if (user_id !== playlist.user_id.toString()) {
|
|
||||||
return res.status(403).json({
|
|
||||||
message: "You are not the owner of this playlist"
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
await playlist.delete()
|
|
||||||
|
|
||||||
return res.json({ message: "Playlist deleted" })
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
import getPlaylist from "../services/getPlaylist"
|
|
||||||
|
|
||||||
export default {
|
|
||||||
method: "GET",
|
|
||||||
route: "/data/:id",
|
|
||||||
middlewares: ["withAuthentication"],
|
|
||||||
fn: async (req, res) => {
|
|
||||||
const result = await getPlaylist({
|
|
||||||
_id: req.params.id
|
|
||||||
}).catch((err) => {
|
|
||||||
res.status(500).json({
|
|
||||||
error: err.message
|
|
||||||
})
|
|
||||||
|
|
||||||
return null
|
|
||||||
})
|
|
||||||
|
|
||||||
if (result) {
|
|
||||||
return res.json(result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
import { User, Playlist } from "@models"
|
|
||||||
import getTrackDataById from "../../TracksController/services/getTrackDataById"
|
|
||||||
|
|
||||||
export default {
|
|
||||||
method: "GET",
|
|
||||||
route: "/self",
|
|
||||||
middlewares: ["withAuthentication"],
|
|
||||||
fn: async (req, res) => {
|
|
||||||
const user_id = req.user._id.toString()
|
|
||||||
|
|
||||||
let playlists = await Playlist.find({ user_id }).catch((err) => false)
|
|
||||||
|
|
||||||
if (!playlists) {
|
|
||||||
throw new Error("Playlists not found")
|
|
||||||
}
|
|
||||||
|
|
||||||
playlists = await Promise.all(playlists.map(async (playlist) => {
|
|
||||||
playlist.list = await Promise.all(playlist.list.map(async (track_id) => {
|
|
||||||
return await getTrackDataById(track_id).catch((err) => null)
|
|
||||||
}))
|
|
||||||
|
|
||||||
return playlist
|
|
||||||
}))
|
|
||||||
|
|
||||||
return res.json(playlists)
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,90 +0,0 @@
|
|||||||
import { Schematized } from "@lib"
|
|
||||||
|
|
||||||
import { Playlist } from "@models"
|
|
||||||
|
|
||||||
import createOrUpdateTrack from "../../TracksController/services/createOrUpdateTrack"
|
|
||||||
|
|
||||||
export default {
|
|
||||||
method: "PUT",
|
|
||||||
route: "/",
|
|
||||||
middlewares: ["withAuthentication"],
|
|
||||||
fn: Schematized({
|
|
||||||
required: ["title", "list"],
|
|
||||||
}, async (req, res) => {
|
|
||||||
if (!Array.isArray(req.body.list)) {
|
|
||||||
return res.status(400).json({
|
|
||||||
error: "list must be an array"
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
let trackList = req.body.list
|
|
||||||
|
|
||||||
trackList = await Promise.all(trackList.map(async (track) => {
|
|
||||||
if (typeof track !== "object") {
|
|
||||||
return track
|
|
||||||
}
|
|
||||||
|
|
||||||
track.user_id = req.user._id.toString()
|
|
||||||
|
|
||||||
const result = await createOrUpdateTrack(track)
|
|
||||||
|
|
||||||
if (result) {
|
|
||||||
return result._id.toString()
|
|
||||||
}
|
|
||||||
}))
|
|
||||||
|
|
||||||
let playlist = null
|
|
||||||
|
|
||||||
// check if body._id exists, if it does, update the playlist
|
|
||||||
// if it doesn't, create a new playlist
|
|
||||||
if (req.body._id) {
|
|
||||||
playlist = await Playlist.findById(req.body._id)
|
|
||||||
|
|
||||||
if (!playlist) {
|
|
||||||
return res.status(404).json({
|
|
||||||
error: "playlist not found"
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// check if req.user._id is the same as playlist.user_id
|
|
||||||
if (playlist.user_id !== req.user._id.toString()) {
|
|
||||||
return res.status(403).json({
|
|
||||||
error: "You don't have permission to edit this playlist"
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
playlist.title = req.body.title
|
|
||||||
playlist.description = req.body.description
|
|
||||||
playlist.thumbnail = req.body.thumbnail
|
|
||||||
playlist.explicit = req.body.explicit
|
|
||||||
playlist.public = req.body.visibility ? req.body.visibility === "public" : true
|
|
||||||
playlist.list = trackList
|
|
||||||
|
|
||||||
playlist = await Playlist.findByIdAndUpdate(req.body._id, playlist)
|
|
||||||
|
|
||||||
if (!playlist) {
|
|
||||||
return res.status(500).json({
|
|
||||||
error: "An error occurred while updating the playlist"
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
global.eventBus.emit(`playlist.${playlist._id}.updated`, playlist)
|
|
||||||
} else {
|
|
||||||
playlist = new Playlist({
|
|
||||||
user_id: req.user._id.toString(),
|
|
||||||
created_at: Date.now(),
|
|
||||||
title: req.body.title ?? "Untitled",
|
|
||||||
description: req.body.description,
|
|
||||||
thumbnail: req.body.thumbnail,
|
|
||||||
explicit: req.body.explicit,
|
|
||||||
list: trackList,
|
|
||||||
})
|
|
||||||
|
|
||||||
await playlist.save()
|
|
||||||
|
|
||||||
// TODO: use custom event
|
|
||||||
}
|
|
||||||
|
|
||||||
return res.json(playlist)
|
|
||||||
})
|
|
||||||
}
|
|
@ -1,9 +0,0 @@
|
|||||||
import { Controller } from "linebridge/dist/server"
|
|
||||||
import generateEndpointsFromDir from "linebridge/dist/server/lib/generateEndpointsFromDir"
|
|
||||||
|
|
||||||
export default class PlaylistsController extends Controller {
|
|
||||||
static refName = "PlaylistsController"
|
|
||||||
static useRoute = "/playlist"
|
|
||||||
|
|
||||||
httpEndpoints = generateEndpointsFromDir(__dirname + "/endpoints")
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
import { User, Playlist } from "@models"
|
|
||||||
import getTrackDataById from "../../TracksController/services/getTrackDataById"
|
|
||||||
|
|
||||||
export default async (payload) => {
|
|
||||||
const { _id } = payload
|
|
||||||
|
|
||||||
if (!_id) {
|
|
||||||
throw new Error("Missing _id")
|
|
||||||
}
|
|
||||||
|
|
||||||
let playlist = await Playlist.findById(_id).catch((err) => false)
|
|
||||||
|
|
||||||
if (!playlist) {
|
|
||||||
throw new Error("Playlist not found")
|
|
||||||
}
|
|
||||||
|
|
||||||
playlist = playlist.toObject()
|
|
||||||
|
|
||||||
const user = await User.findById(playlist.user_id).catch((err) => false)
|
|
||||||
|
|
||||||
if (!user) {
|
|
||||||
throw new Error("User not found")
|
|
||||||
}
|
|
||||||
|
|
||||||
playlist.user = user
|
|
||||||
|
|
||||||
playlist.list = await Promise.all(playlist.list.map(async (track_id) => {
|
|
||||||
return await getTrackDataById(track_id)
|
|
||||||
}))
|
|
||||||
|
|
||||||
playlist.artist = user.fullName ?? user.username
|
|
||||||
|
|
||||||
return playlist
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
import { Track } from "@models"
|
|
||||||
|
|
||||||
export default {
|
|
||||||
method: "GET",
|
|
||||||
route: "/:id",
|
|
||||||
middlewares: ["withAuthentication"],
|
|
||||||
fn: async (req, res) => {
|
|
||||||
const track = await Track.findById(req.params.id).catch((err) => false)
|
|
||||||
|
|
||||||
if (!track) {
|
|
||||||
return res.status(404).json({
|
|
||||||
error: "Track not found"
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
return res.json(track)
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,15 +0,0 @@
|
|||||||
import createOrUpdateTrack from "../services/createOrUpdateTrack"
|
|
||||||
|
|
||||||
export default {
|
|
||||||
method: "POST",
|
|
||||||
route: "/",
|
|
||||||
middlewares: ["withAuthentication"],
|
|
||||||
fn: async (req, res) => {
|
|
||||||
const result = await createOrUpdateTrack({
|
|
||||||
user_id: req.user._id.toString(),
|
|
||||||
...req.body,
|
|
||||||
})
|
|
||||||
|
|
||||||
return res.json(result)
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,9 +0,0 @@
|
|||||||
import { Controller } from "linebridge/dist/server"
|
|
||||||
import generateEndpointsFromDir from "linebridge/dist/server/lib/generateEndpointsFromDir"
|
|
||||||
|
|
||||||
export default class TracksController extends Controller {
|
|
||||||
static refName = "TracksController"
|
|
||||||
static useRoute = "/track"
|
|
||||||
|
|
||||||
httpEndpoints = generateEndpointsFromDir(__dirname + "/endpoints")
|
|
||||||
}
|
|
@ -1,43 +0,0 @@
|
|||||||
import { Track } from "@models"
|
|
||||||
|
|
||||||
const allowedUpdateFields = [
|
|
||||||
"title",
|
|
||||||
"thumbnail",
|
|
||||||
"album",
|
|
||||||
"artist",
|
|
||||||
"explicit",
|
|
||||||
]
|
|
||||||
|
|
||||||
export default async (payload) => {
|
|
||||||
if (!payload.title || !payload.source || !payload.user_id) {
|
|
||||||
throw new Error("title and source and user_id are required")
|
|
||||||
}
|
|
||||||
|
|
||||||
let track = null
|
|
||||||
|
|
||||||
if (payload._id) {
|
|
||||||
track = await Track.findById(payload._id)
|
|
||||||
|
|
||||||
if (!track) {
|
|
||||||
throw new Error("track not found")
|
|
||||||
}
|
|
||||||
|
|
||||||
allowedUpdateFields.forEach((field) => {
|
|
||||||
if (typeof payload[field] !== "undefined") {
|
|
||||||
track[field] = payload[field]
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
track = await Track.findByIdAndUpdate(payload._id, track)
|
|
||||||
|
|
||||||
if (!track) {
|
|
||||||
throw new Error("Failed to update track")
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
track = new Track(payload)
|
|
||||||
|
|
||||||
await track.save()
|
|
||||||
}
|
|
||||||
|
|
||||||
return track
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
import { Track, User } from "@models"
|
|
||||||
|
|
||||||
export default async (_id) => {
|
|
||||||
if (!_id) {
|
|
||||||
throw new Error("Missing _id")
|
|
||||||
}
|
|
||||||
|
|
||||||
let track = await Track.findById(_id).catch((err) => false)
|
|
||||||
|
|
||||||
if (!track) {
|
|
||||||
throw new Error("Track not found")
|
|
||||||
}
|
|
||||||
|
|
||||||
track = track.toObject()
|
|
||||||
|
|
||||||
if (!track.metadata) {
|
|
||||||
// TODO: Get metadata from source
|
|
||||||
}
|
|
||||||
|
|
||||||
const userData = await User.findById(track.user_id).catch((err) => false)
|
|
||||||
|
|
||||||
track.artist = track.artist ?? userData?.fullName ?? userData?.username ?? "Unknown artist"
|
|
||||||
|
|
||||||
return track
|
|
||||||
}
|
|
@ -16,15 +16,12 @@ export { default as StreamingController } from "./StreamingController"
|
|||||||
export { default as BadgesController } from "./BadgesController"
|
export { default as BadgesController } from "./BadgesController"
|
||||||
export { default as FeaturedEventsController } from "./FeaturedEventsController" // Needs to migrate to lb 0.15
|
export { default as FeaturedEventsController } from "./FeaturedEventsController" // Needs to migrate to lb 0.15
|
||||||
|
|
||||||
export { default as PlaylistsController } from "./PlaylistsController" // Needs to migrate to lb 0.15
|
|
||||||
export { default as FilesController } from "./FilesController" // Needs to migrate to lb 0.15
|
export { default as FilesController } from "./FilesController" // Needs to migrate to lb 0.15
|
||||||
export { default as RolesController } from "./RolesController" // Needs to migrate to lb 0.15
|
export { default as RolesController } from "./RolesController" // Needs to migrate to lb 0.15
|
||||||
export { default as SearchController } from "./SearchController" // Needs to migrate to lb 0.15
|
export { default as SearchController } from "./SearchController" // Needs to migrate to lb 0.15
|
||||||
|
|
||||||
export { default as ModerationController } from "./ModerationController"
|
export { default as ModerationController } from "./ModerationController"
|
||||||
|
|
||||||
export { default as TracksController } from "./TracksController"
|
|
||||||
|
|
||||||
export { default as AdminController } from "./AdminController"
|
export { default as AdminController } from "./AdminController"
|
||||||
|
|
||||||
export { default as SyncController } from "./SyncController"
|
export { default as SyncController } from "./SyncController"
|
@ -1,39 +0,0 @@
|
|||||||
export default {
|
|
||||||
name: "Track",
|
|
||||||
collection: "tracks",
|
|
||||||
schema: {
|
|
||||||
user_id: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
album: {
|
|
||||||
type: String,
|
|
||||||
},
|
|
||||||
artist: {
|
|
||||||
type: String,
|
|
||||||
},
|
|
||||||
source: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
metadata: {
|
|
||||||
type: Object,
|
|
||||||
},
|
|
||||||
explicit: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
public: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true,
|
|
||||||
},
|
|
||||||
thumbnail: {
|
|
||||||
type: String,
|
|
||||||
default: "https://storage.ragestudio.net/comty-static-assets/default_song.png"
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user