-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 55e0624
Showing
14 changed files
with
904 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
const express = require("express"); | ||
const app = express(); | ||
const jsonParser = express.json(); | ||
const concertController = require("./controllers/concertController"); | ||
const trackController = require("./controllers/trackController"); | ||
const homeController = require("./controllers/homeController"); | ||
const userController = require("./controllers/userController"); | ||
const statisticController = require("./controllers/statisticController"); | ||
|
||
// определяем роутеры | ||
const trackRouter = express.Router(); | ||
const concertRouter = express.Router(); | ||
const homeRouter = express.Router(); | ||
const userRouter = express.Router(); | ||
const statisticRouter = express.Router(); | ||
|
||
app.use(function(req, res, next) { | ||
res.header("Access-Control-Allow-Origin", "*"); // update to match the domain you will make the request from | ||
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); | ||
next(); | ||
}); | ||
|
||
userRouter.post("/login", jsonParser, userController.login); | ||
userRouter.post("/register", jsonParser, userController.register); | ||
app.use("/user", userRouter); | ||
|
||
trackRouter.post("/create", jsonParser, trackController.create); | ||
trackRouter.get("/delete", trackController.delete); | ||
trackRouter.get("/", trackController.get); | ||
app.use("/tracks", trackRouter); | ||
|
||
concertRouter.get("/delete", concertController.delete); | ||
concertRouter.get("/", concertController.get); | ||
app.use("/concerts", concertRouter); | ||
|
||
homeRouter.get("/vote", homeController.vote); | ||
homeRouter.get("/stop", homeController.stop); | ||
app.use("/", homeRouter); | ||
|
||
statisticRouter.get("/author", statisticController.author); | ||
statisticRouter.get("/genre", statisticController.genre); | ||
statisticRouter.get("/year", statisticController.year); | ||
statisticRouter.get("/album", statisticController.album); | ||
statisticRouter.get("/language", statisticController.language); | ||
app.use("/statistic", statisticRouter); | ||
|
||
app.use(function (req, res, next) { | ||
res.status(404).send("Not Found") | ||
}); | ||
|
||
app.listen(3000); |
Submodule client
added at
a07b09
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
const Concert = require("../models/concert"); | ||
const mongoose = require("../modules/mongoose"); | ||
exports.delete = function (request, response){ | ||
mongoose.connect(); | ||
const id = request.query.id; | ||
Concert.findByIdAndDelete(id, function(err){ | ||
if(err){ | ||
console.log(err); | ||
response.status(400).json(''); | ||
} | ||
response.status(200).json(''); | ||
}); | ||
}; | ||
exports.get = function(request, response){ | ||
mongoose.connect(); | ||
Concert.find({}, function(err, res){ | ||
mongoose.disconnect(); | ||
if(err){ | ||
console.log(err); | ||
response.status(400).json(''); | ||
} | ||
// console.log(res); | ||
response.status(200).json(res); | ||
}); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
const mongoose = require("../modules/mongoose"); | ||
const Track = require("../models/track"); | ||
const Concert = require("../models/concert"); | ||
exports.vote = function (request, response) { | ||
const id = request.query.id; | ||
const name = request.query.name; | ||
mongoose.connect(); | ||
|
||
Track.findOne({_id: id, voted: name}, function(error, tracks){ | ||
if(error){ | ||
console.log(err); | ||
return response.status(400).json(""); | ||
} | ||
if(tracks){ | ||
return response.status(400).json(""); | ||
} | ||
Track.findOneAndUpdate({_id:id}, {$addToSet: {"voted":name}}, function(err){ | ||
if(err){ | ||
console.log(err); | ||
return response.status(400).json(""); | ||
} | ||
}); | ||
Track.findOneAndUpdate({_id:id}, {$inc: {"votes": 1}}, function(err){ | ||
if(err){ | ||
console.log(err); | ||
return response.status(400).json(""); | ||
} | ||
}); | ||
return response.status(200).json(""); | ||
}); | ||
|
||
|
||
}; | ||
exports.stop = function(request, response) { | ||
mongoose.connect(); | ||
|
||
Track.find({}).sort({votes: -1}) | ||
.limit(3) | ||
.exec(function(err, res){ | ||
if(err){ | ||
return response.status(400).send(''); | ||
} | ||
|
||
const concert = new Concert({tracks: res}); | ||
// console.log(concert); | ||
concert.save(function(err){ | ||
if(err){ | ||
console.log(err); | ||
return response.status(400).send(''); | ||
} | ||
}); | ||
}); | ||
Track.updateMany({}, {$unset: {votes:0, voted: 1}},{multi: true}, function(err){ | ||
if(err){ | ||
console.log(err); | ||
return response.status(400).send(''); | ||
} | ||
}); | ||
return response.status(200).send(''); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
const mongoose = require("../modules/mongoose"); | ||
const Track = require("../models/track"); | ||
exports.author = function(request, response){ | ||
mongoose.connect(); | ||
Track.aggregate([{ $group: { _id: "$author", count: {$sum: "$votes"}}}]).exec(function(err, res){ | ||
if(err){ | ||
console.log(err); | ||
return response.status(400).json(''); | ||
} | ||
console.log(res); | ||
return response.status(200).json(res); | ||
}); | ||
}; | ||
exports.genre = function(request, response){ | ||
mongoose.connect(); | ||
Track.aggregate([{ $group: { _id: "$genre", count: {$sum: "$votes"}}}]).exec(function(err, res){ | ||
if(err){ | ||
console.log(err); | ||
return response.status(400).json(''); | ||
} | ||
console.log(res); | ||
return response.status(200).json(res); | ||
}); | ||
}; | ||
exports.year = function(request, response){ | ||
mongoose.connect(); | ||
Track.aggregate([{ $group: { _id: "$year", count: {$sum: "$votes"}}}]).exec(function(err, res){ | ||
if(err){ | ||
console.log(err); | ||
return response.status(400).json(''); | ||
} | ||
console.log(res); | ||
return response.status(200).json(res); | ||
}); | ||
}; | ||
exports.album = function(request, response){ | ||
mongoose.connect(); | ||
Track.aggregate([{ $group: { _id: "$album", count: {$sum: "$votes"}}}]).exec(function(err, res){ | ||
if(err){ | ||
console.log(err); | ||
return response.status(400).json(''); | ||
} | ||
console.log(res); | ||
return response.status(200).json(res); | ||
}); | ||
}; | ||
exports.language = function(request, response){ | ||
mongoose.connect(); | ||
Track.aggregate([{ $group: { _id: "$language", count: {$sum: "$votes"}}}]).exec(function(err, res){ | ||
if(err){ | ||
console.log(err); | ||
return response.status(400).json(''); | ||
} | ||
console.log(res); | ||
return response.status(200).json(res); | ||
}); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
const Track = require("../models/track"); | ||
const mongoose = require("../modules/mongoose"); | ||
exports.create = function (request, response){ | ||
const name = request.body.name; | ||
const author = request.body.author; | ||
const genre = request.body.genre; | ||
const year = request.body.year; | ||
const album = request.body.album; | ||
const language = request.body.language; | ||
const track = new Track({ | ||
name: name, | ||
author: author, | ||
genre: genre, | ||
year: year, | ||
album: album, | ||
language: language | ||
}); | ||
mongoose.connect(); | ||
track.save(function(err){ | ||
mongoose.disconnect(); | ||
if(err){ | ||
console.log(err); | ||
return response.status(400).json(''); | ||
} | ||
}); | ||
response.status(200).json(''); | ||
}; | ||
exports.get = function(request, response){ | ||
mongoose.connect(); | ||
Track.find({}, function(err, tracks){ | ||
mongoose.disconnect(); | ||
if(err){ | ||
console.log(err); | ||
return response.status(400).json(''); | ||
} | ||
return response.status(200).json(tracks); | ||
}) | ||
}; | ||
exports.delete = function(request, response){ | ||
const id = request.query.id; | ||
mongoose.connect(); | ||
Track.findByIdAndDelete(id, function(err){ | ||
mongoose.disconnect(); | ||
if(err){ | ||
console.log(err); | ||
return response.status(400).json(''); | ||
} | ||
return response.status(200).json(''); | ||
}); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
const User = require("../models/user.js"); | ||
const mongoose = require("../modules/mongoose"); | ||
exports.login = function (request, response){ | ||
const name = request.body.name; | ||
const password = request.body.password; | ||
mongoose.connect(); | ||
User.exists({name: name, password: password}, function(err, res){ | ||
|
||
mongoose.disconnect(); | ||
if(err){ | ||
return response.status(400).json(""); | ||
} | ||
if(res){ | ||
return response.status(200).json(""); | ||
} | ||
else{ | ||
return response.status(401).json(""); | ||
} | ||
}); | ||
}; | ||
exports.register = function(request, response){ | ||
const name = request.body.name; | ||
const password = request.body.password; | ||
mongoose.connect(); | ||
User.exists({name: name, password: password}, function(err, res){ | ||
if(err){ | ||
return response.status(400).json(""); | ||
} | ||
if(res){ | ||
return response.status(400).json(""); | ||
} | ||
}); | ||
|
||
const user = new User({name: name, password: password}) | ||
user.save(function(err){ | ||
mongoose.disconnect(); | ||
if(err) { | ||
console.log(err); | ||
return response.status(400).json(""); | ||
} | ||
console.log("Создан новый пользователь"); | ||
}); | ||
return response.status(200).json(""); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
version: '3.4' | ||
|
||
services: | ||
mongojs: | ||
image: mongo | ||
container_name: "mongojs" | ||
environment: | ||
- MONGO_DATA_DIR=/data/db | ||
- MONGO_LOG_DIR=/dev/null | ||
ports: | ||
- "3001:27017" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
const mongoose = require("mongoose"); | ||
const Track = require("../models/track"); | ||
const Schema = mongoose.Schema; | ||
const concertScheme = new Schema( { | ||
tracks: [] | ||
}); | ||
module.exports = mongoose.model("Concert", concertScheme); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
const mongoose = require("mongoose"); | ||
const Schema = mongoose.Schema; | ||
const trackScheme = new Schema( { | ||
name: String, | ||
author: String, | ||
genre: String, | ||
year: Number, | ||
album: String, | ||
language: String, | ||
votes: Number, | ||
voted: [String] | ||
}); | ||
module.exports = mongoose.model("Track", trackScheme); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
const mongoose = require("mongoose"); | ||
const Schema = mongoose.Schema; | ||
const userScheme = new Schema( { | ||
name: String, | ||
password: String | ||
}); | ||
module.exports = mongoose.model("User", userScheme); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
const mongoose = require("mongoose"); | ||
module.exports.connect = function(){ | ||
mongoose.connect("mongodb://localhost:3001/sounddb", { useNewUrlParser: true, useUnifiedTopology: false }) | ||
}; | ||
module.exports.disconnect = function(){ | ||
mongoose.disconnect(); | ||
}; |
Oops, something went wrong.