init
This commit is contained in:
75
decks/decks.controller.js
Normal file
75
decks/decks.controller.js
Normal file
@@ -0,0 +1,75 @@
|
||||
const DeckModel = require('../decks/decks.model');
|
||||
const Activity = require("../activity/activity.model");
|
||||
const config = require('../config');
|
||||
|
||||
exports.AddDeck = async(req, res) =>
|
||||
{
|
||||
var tid = req.body.tid;
|
||||
var title = req.body.title;
|
||||
var hero = req.body.hero;
|
||||
var cards = req.body.cards;
|
||||
|
||||
if(!tid || typeof tid !== "string")
|
||||
return res.status(400).send({error: "Invalid parameters"});
|
||||
|
||||
if(!title || typeof title !== "string")
|
||||
return res.status(400).send({error: "Invalid parameters"});
|
||||
|
||||
if(!hero || typeof hero !== "object")
|
||||
return res.status(400).send({error: "Invalid parameters"});
|
||||
|
||||
if(cards && !Array.isArray(cards))
|
||||
return res.status(400).send({error: "Invalid parameters"});
|
||||
|
||||
var deck_data = {
|
||||
tid: tid,
|
||||
title: title,
|
||||
hero: hero,
|
||||
cards: cards || [],
|
||||
}
|
||||
|
||||
//Update or create
|
||||
var deck = await DeckModel.get(tid);
|
||||
if(deck)
|
||||
deck = await DeckModel.update(deck, deck_data);
|
||||
else
|
||||
deck = await DeckModel.create(deck_data);
|
||||
|
||||
if(!deck)
|
||||
res.status(500).send({error: "Error updating deck"});
|
||||
|
||||
return res.status(200).send(deck);
|
||||
};
|
||||
|
||||
exports.DeleteDeck = async(req, res) => {
|
||||
DeckModel.remove(req.params.tid);
|
||||
return res.status(204).send({});
|
||||
};
|
||||
|
||||
exports.DeleteAll = async(req, res) => {
|
||||
DeckModel.removeAll();
|
||||
return res.status(204).send({});
|
||||
};
|
||||
|
||||
exports.GetDeck = async(req, res) =>
|
||||
{
|
||||
var deckId = req.params.tid;
|
||||
|
||||
if(!deckId)
|
||||
return res.status(400).send({error: "Invalid parameters"});
|
||||
|
||||
var deck = await DeckModel.get(deckId);
|
||||
if(!deck)
|
||||
return res.status(404).send({error: "Deck not found: " + deckId});
|
||||
|
||||
return res.status(200).send(deck.toObj());
|
||||
};
|
||||
|
||||
|
||||
exports.GetAll = async(req, res) =>
|
||||
{
|
||||
var decks = await DeckModel.getAll();
|
||||
return res.status(200).send(decks);
|
||||
};
|
||||
|
||||
|
||||
99
decks/decks.model.js
Normal file
99
decks/decks.model.js
Normal file
@@ -0,0 +1,99 @@
|
||||
const mongoose = require('mongoose');
|
||||
const Schema = mongoose.Schema;
|
||||
|
||||
const deckSchema = new Schema({
|
||||
|
||||
tid: { type: String, index: true, unique: true, default: "" },
|
||||
title: { type: String, default: "" },
|
||||
hero: {tid: String, variant: String, _id: false},
|
||||
cards: [{tid: String, variant: String, quantity: Number, _id: false}],
|
||||
|
||||
});
|
||||
|
||||
deckSchema.methods.toObj = function() {
|
||||
var deck = this.toObject();
|
||||
delete deck.__v;
|
||||
delete deck._id;
|
||||
return deck;
|
||||
};
|
||||
|
||||
const Deck = mongoose.model('Decks', deckSchema);
|
||||
|
||||
exports.get = async(deckId) => {
|
||||
try{
|
||||
var deck = await Deck.findOne({tid: deckId});
|
||||
return deck;
|
||||
}
|
||||
catch{
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
exports.getList = async(decks_tids) => {
|
||||
try{
|
||||
var decks = await Deck.find({tid: { $in: decks_tids } });
|
||||
return decks || [];
|
||||
}
|
||||
catch{
|
||||
return [];
|
||||
}
|
||||
};
|
||||
|
||||
exports.getAll = async() => {
|
||||
|
||||
try{
|
||||
var decks = await Deck.find()
|
||||
return decks || [];
|
||||
}
|
||||
catch{
|
||||
return [];
|
||||
}
|
||||
};
|
||||
|
||||
exports.create = async(data) => {
|
||||
try{
|
||||
var deck = new Deck(data);
|
||||
return await deck.save();
|
||||
}
|
||||
catch{
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
exports.update = async(deck, data) => {
|
||||
|
||||
try{
|
||||
if(!deck) return null;
|
||||
|
||||
for (let i in data) {
|
||||
deck[i] = data[i];
|
||||
deck.markModified(i);
|
||||
}
|
||||
|
||||
var updated = await deck.save();
|
||||
return updated;
|
||||
}
|
||||
catch{
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
exports.remove = async(deckId) => {
|
||||
try{
|
||||
var result = await Deck.deleteOne({tid: deckId});
|
||||
return result && result.deletedCount > 0;
|
||||
}
|
||||
catch{
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
exports.removeAll = async() => {
|
||||
try{
|
||||
var result = await Deck.deleteMany({});
|
||||
return result && result.deletedCount > 0;
|
||||
}
|
||||
catch{
|
||||
return false;
|
||||
}
|
||||
};
|
||||
36
decks/decks.routes.js
Normal file
36
decks/decks.routes.js
Normal file
@@ -0,0 +1,36 @@
|
||||
const DeckController = require('./decks.controller');
|
||||
const AuthTool = require('../authorization/auth.tool');
|
||||
const config = require('../config');
|
||||
|
||||
const ADMIN = config.permissions.ADMIN; //Highest permision, can read and write all users
|
||||
const SERVER = config.permissions.SERVER; //Higher permission, can read all users
|
||||
const USER = config.permissions.USER; //Lowest permision, can only do things on same user
|
||||
|
||||
exports.route = function (app) {
|
||||
|
||||
app.get('/decks/:tid', [
|
||||
DeckController.GetDeck
|
||||
]);
|
||||
|
||||
app.get('/decks', [
|
||||
DeckController.GetAll
|
||||
]);
|
||||
|
||||
app.post('/decks/add', [
|
||||
AuthTool.isValidJWT,
|
||||
AuthTool.isPermissionLevel(ADMIN),
|
||||
DeckController.AddDeck
|
||||
]);
|
||||
|
||||
app.delete("/decks/:tid", [
|
||||
AuthTool.isValidJWT,
|
||||
AuthTool.isPermissionLevel(ADMIN),
|
||||
DeckController.DeleteDeck
|
||||
]);
|
||||
|
||||
app.delete("/decks", [
|
||||
AuthTool.isValidJWT,
|
||||
AuthTool.isPermissionLevel(ADMIN),
|
||||
DeckController.DeleteAll
|
||||
]);
|
||||
};
|
||||
Reference in New Issue
Block a user