ratings update and publish script changed to shady's vps
This commit is contained in:
parent
9a64c7a95b
commit
bf72a67083
64
Server/Source/Routes/Ratings.ts
Normal file
64
Server/Source/Routes/Ratings.ts
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
import { RequireAuthentication, ValidateBody } from "../Modules/Middleware";
|
||||||
|
import { Router } from "express";
|
||||||
|
import { Song } from "../Schemas/Song";
|
||||||
|
import { Rating } from "../Schemas/Rating";
|
||||||
|
import j from "joi";
|
||||||
|
|
||||||
|
const App = Router();
|
||||||
|
|
||||||
|
App.get("/:InternalID", async (req, res) => {
|
||||||
|
const SongData = await Song.findOne({ where: { ID: req.params.InternalID }, relations: { Ratings: true } });
|
||||||
|
if (!SongData)
|
||||||
|
return res.status(404).json({ errorMessage: "The song you're trying to get the rating for has not been found." });
|
||||||
|
|
||||||
|
let Average = 0;
|
||||||
|
if (SongData.Ratings.length > 0) {
|
||||||
|
SongData.Ratings.map(x => Average += x.Stars);
|
||||||
|
Average = Average / SongData.Ratings.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
res.json({
|
||||||
|
Average,
|
||||||
|
Amount: SongData.Ratings.length
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
App.post("/:InternalID",
|
||||||
|
RequireAuthentication({ Ratings: { Rated: true } }),
|
||||||
|
ValidateBody(j.object({
|
||||||
|
Rating: j.number().integer().min(1).max(5).required()
|
||||||
|
})),
|
||||||
|
async (req, res) => {
|
||||||
|
const SongData = await Song.findOne({ where: { ID: req.params.InternalID } });
|
||||||
|
if (!SongData)
|
||||||
|
return res.status(404).json({ errorMessage: "The song you're trying to get the rating for has not been found." });
|
||||||
|
|
||||||
|
const Existing = req.user?.Ratings.find(x => SongData.ID === x.Rated.ID)
|
||||||
|
if (Existing)
|
||||||
|
{
|
||||||
|
Existing.Stars = req.body.Rating as number;
|
||||||
|
await Existing.save();
|
||||||
|
return res.json({
|
||||||
|
...Existing,
|
||||||
|
Author: undefined,
|
||||||
|
Rated: SongData.ID
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const CreatedRating = await Rating.create({
|
||||||
|
Author: req.user,
|
||||||
|
Rated: SongData,
|
||||||
|
Stars: req.body.Rating as number
|
||||||
|
}).save();
|
||||||
|
|
||||||
|
res.json({
|
||||||
|
...CreatedRating,
|
||||||
|
Author: undefined,
|
||||||
|
Rated: SongData.ID
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
export default {
|
||||||
|
App,
|
||||||
|
DefaultAPI: "/api/ratings"
|
||||||
|
}
|
|
@ -12,6 +12,9 @@ export class ForcedCategory extends BaseEntity {
|
||||||
@Column()
|
@Column()
|
||||||
Activated: boolean;
|
Activated: boolean;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
Priority: number;
|
||||||
|
|
||||||
@ManyToMany(() => Song, { eager: true })
|
@ManyToMany(() => Song, { eager: true })
|
||||||
@JoinTable()
|
@JoinTable()
|
||||||
Songs: Song[];
|
Songs: Song[];
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"build": "tsc && vite build",
|
"build": "tsc && vite build",
|
||||||
"create": "mkdir ./Out && npm run build && mv ./dist ./Out/dist && cd Server && tsc && cd .. && cp ./Server/.env ./Out && cp ./Server/package.json ./Out && cp ./Server/package-lock.json ./Out",
|
"create": "mkdir ./Out && npm run build && mv ./dist ./Out/dist && cd Server && tsc && cd .. && cp ./Server/.env ./Out && cp ./Server/package.json ./Out && cp ./Server/package-lock.json ./Out",
|
||||||
"publish": "npm run create && ssh mc \"cd /home/PartypackProd; rm -rf ./Out\" && scp -r ./Out mc:/home/PartypackProd && ssh mc \"cd /home/PartypackProd/Out; npm i; pm2 restart PartypackProd --update-env\" && rm -rf ./Out",
|
"publish": "npm run create && ssh shady \"cd /home/PartypackProd; rm -rf ./Out\" && scp -r ./Out shady:/home/PartypackProd && ssh shady \"cd /home/PartypackProd/Out; npm i; pm2 restart PartypackProd --update-env\" && rm -rf ./Out",
|
||||||
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
|
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
"dev:all": "start cmd.exe /k \"cd ./Server && npm run dev:watch\" && vite"
|
"dev:all": "start cmd.exe /k \"cd ./Server && npm run dev:watch\" && vite"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user